메뉴 건너뛰기

조회 수 4271 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

우리가 사용하고 있는 웹의 구조는 이렇게 Server Client Database 3가지로 나눠서 볼 수 있습니다.
기존에 Rails는 Server Database가 합쳐진 구조로 볼 수 있습니다.(Nosql기반이기 때문에)

하지만 독자적인 Database 구축해야하는 전자정부프레임워크는 Server와 Database의 경계가 명확한데 오늘 MVC 구조를 파악해보겠습니다.

Server Client Database이 3가지를 다른말로 Controller View Model이라고 할 수 있습니다.
그걸 줄여서 MVC라고 하지요.


전자정부프레임워크의 Controller의 기본적인 형태입니다.
Controller만 존재하는 것이 아닌 DAO, ServiceImpl, Service, XML이 존재합니다.

예시 코드로 설명드릴께요. Login기능을 구현해보겠습니다. 물론 약식 기능이며, 보안이 적용되어 있지 않고, View도 구현되어 있지 않은 Controller와 Model간의 관계만 보여드리기 위한 예제입니다. 참고해주세요.

@ 표시가 들어간것은 어노테이션, 즉 주석입니다. 아래에 오는 클래스나 객체를 정의해주는 것입니다.
@Controller는 아래의 클래스가 컨트롤러의 기능을 수행한다는 것을 뜻합니다.
@Resource는 이미 등록된 자원을 할당받는 것입니다. userService라는 Service가 다른 곳에서 정의되어 있고 그걸 사용하겠다는 의미입니다.
@RequestMapping은 뒤에 오는 Url로 라우팅을 하겠다는 의미입니다. method를 기입하지 않으면 모든 방식의 입력에서 동작합니다.

@RequestMapping의 파라미터인 ModelMap은 View로 Return해줄 때 같이 보내줄 변수들입니다. 로그인의 성공여부, 유저의 아이디 등 그런것들이 보내질 것들입니다.

@Resource로 서비스를 사용하기 위해서 먼저 인터페이스를 만들어야합니다.
Controller 다음에는 Service를 만들어야하는데 서비스 내부는 Interface입니다.
인터페이스에 대한 설명은 나중에 기회되면 하겠습니다.

인터페이스에는 사용할 함수의 형태를 정의해줍니다. 저희는 SignInService를 만들겁니다.
여기서 주의할 점은 함수로 파라미터를 2개 이상 보내줄 수 없기 때문에 Map이나 List로 담거나 해야한다는 것입니다. 위에 함수 SignUpService처럼 String 2개를 보내줄 수 없습니다. 예시로 적어놓아보았습니다. 저렇게 사용할 함수를 정의해주면 Impl파일을 만들어 실제로 동작할 활동을 적어주어야합니다.

Impl 클래스 @Service라는 어노테이션으로 서비스를 "등록"해야 합니다.
Controller에서 Resource(name="userService")의 근원입니다. 잘 기억하셔야해요.
또한 Impl클래스는 Service 클래스를 상속받고 함수를 Override해야합니다.
또한 함수의 return null; 로 해놓고 DAO 클래스를 정의한 후에 null 부분을 수정해주는게 순서에 맞습니다.

impl 클래스에서도 @Resource를 사용하는데 이것은 DAO에 정의되어 있습니다.

DAO 파일입니다. DAO를 "등록"하는 것은 Service가 아닌 Repository라는 어노테이션입니다. EgovAbstractDAO 클래스를 상속받아야합니다.
DAO는 데이터베이스로 파일을 보내는 함수들이 정의됩니다. return에는 작성한 xml파일로 보냅니다.
우리는 아이디와 비밀번호를 보내면 해당하는 유저가 있는지를 반환받아야하기 때문에 형식은 Map입니다. 또한 비교해야하기 때문에 select함수를 사용합니다.(그 외 insert,update,delete가 있습니다)

select함수 뒤에는 String형태의 xml에 정의되어 있는 함수명과 아이디와 비밀번호가 들어있는 파라미터를 넣어줘야합니다.

XML 파일을 작성해줘야합니다.
SQl문을 보면 별 것 없습니다. user테이블에서 아이디와 비밀번호가 일치하는 login_id, name을 반환하라 입니다.
파라미터에서 넘어오는 값들은 #으로 감싸주면 사용할 수 있습니다.

그리고 select id="userDAO.login"을 봅시다.
아까 DAO 파일에서 select 뒤에 나오는 함수명과 같은 걸로 맞춰줘야합니다.
작성 순서가 헷갈릴 수 있는데 향후에 순서대로 작성하는 법을 포스팅하겠습니다.
CDATA[]의 역할은 간단합니다.
쿼리 내부에 조건절 구현을 위해 < > 기호를 사용할 수 있는데 XML 특성상 < >기호는 태그를 열고 닫는데 쓰입니다. 그럼 의도치한게 태그가 닫히면서 문법오류가 나는데 그걸 방지하기 위한 문법입니다.
CDATA[] 내부에 <> 기호가 있어도 단순 문자열로 여기게 됩니다.
SQL 함수에서 DELLIMITER 역할로 여기시면 됩니다.

또한 parameterClass="java.util.Map" resultClass="egovMap"를 추가해 줘야하는데
이것은 파라미터 형태를 정의해놓고, 결과값을 어떤형식으로 반환할 것인지 정해주는 것입니다.
egov 로 해줘야합니다.

XML까지 마쳤다면 작성한 XML을 등록해줘야합니다.
sql-map-config로 가셔서 작성한 SQLMAP을 등록해주세요.

마지막으로 XML -> DAO -> Impl  -> Service -> Controller순으로 매칭해주는 것을 잊지말아주세요.

Controller에서 저런식으로 함수를 사용하면 됩니다.
ModelMap 객체에 addAttribute함수로 값을 추가해주면 View에서 해당 변수를 사용할 수 있습니다.


List of Articles
번호 제목 날짜 조회 수
23 전자정부 표준프레임워크 파일업로드용량설정 file 2018.12.06 1963
22 이클립스에서 인코딩 설정 file 2018.06.21 2383
21 Spring Security의 동작 방법 file 2018.06.21 4331
20 이클립스 파일 찾기 & 문자열 검색 file 2018.06.21 2461
19 CKEditor 사용 및 파일 업로드 적용 2018.06.12 3237
18 spring ckeditor 파일업로드 예제 (file upload) file 2018.06.12 4572
17 스프링 CKEditor 적용 - 에디터 2018.06.12 5638
16 전자정부프레임워크 사용 중 중복 저장 방지 (새로고침 혹은 뒤로가기시) 2018.06.12 3098
15 "알 수 없는 오류가 발생하였습니다." 라는 에러 메시지가 발생했을 때 대처법 2018.06.12 4258
14 예제 따라하기(1) - 기본 서블릿 구현 file 2018.06.05 2972
13 첫 실행 URL 변경 file 2018.06.05 2776
» 전자정부프레임워크 구조 파악하기 file 2018.06.02 4271
11 전자정부 프레임워크(eGovframe) 동적 웹프로젝트 시작하기(2) file 2017.09.12 4210
10 전자정부 프레임워크(egov framework) 설치하기(1) file 2017.09.12 5364
9 java.lang.NoClassDefFoundError: org/springframework/dao/support/PersistenceExceptionTranslator 2016.09.21 4225
8 HTMLTagFilter ? 2016.09.21 7823
7 로그인 체크 인터셉터 사용 (AuthenticInterceptor) 2016.09.21 6741
6 getFileNames() 메소드를 이용한 파일 업로드 기능 구현하기 2016.09.21 5899
5 getFileMap() 메소드를 이용한 파일 업로드 기능 구현하기 2016.09.21 6251
4 message 사용을 위한 설정 2016.09.21 6609
Board Pagination Prev 1 2 3 Next
/ 3

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved