- 6편 : 컨트롤러에서 뷰까지
지난주에 이어
5편에서는 컨트롤러-서비스-DAO를 거쳐 쿼리가 실행되는 과정을 보았습니다. 이번 포스팅에서는 처리결과를 받아 뷰로 전달되는 과정을 살펴보겠습니다.
쿼리결과 받아오기
다음과 같은 쿼리를 실행합니다.
SELECT ID, NAME, DESCRIPTION, USE_YN, REG_USER |
EgovSample_Sample_SQL.xml로 돌아가서 보면 처리결과를 egovMap으로 받아옵니다.
<select id="sampleDAO.selectSampleList_D" parameterClass="searchVO" resultClass="egovMap"> |
egovMap은 ListOrderedMap을 상속받아 구현되며 주요 특징은 key값을 낙타등 표기법으로 바꿔줍니다.
낙타등표기법 - 시작은 소문자로 시작하며 단어변경 시 첫문자를 대문자로 표기하는 방법. _(언더바)는 삭제함. |
위의 쿼리에서도 그렇듯이 컬럼id는 다음과같이 단어와 단어사이를 '_'(언더바)로 구분하여 사용합니다. egovMap은 바로 이러한 key값을 낙타등표기법으로 바꿔주는 역할을 합니다.
USE_YN -> useYn
처리된 결과는 DAO에서 Service를 거쳐 Controller에서 받아 ModelMap에 담습니다.
EgovSampleController.java
List sampleList = sampleService.selectSampleList(searchVO); model.addAttribute("resultList", sampleList); |
그리고 페이지처리를 위한 paginationInfo 역시 model에 담은 뒤 뷰를 리턴해줍니다.
EgovSampleController.java
int totCnt = sampleService.selectSampleListTotCnt(searchVO); //뷰 이름 리턴 |
그런데 4편 SpringMVC에서 컨트롤러가 ModelAndView를 리턴해준다고 했는데 왜 String을 리턴한걸까요?
@RequestMapping 메서드의 리턴타입을 보도록 하겠습니다.
@RequestMapping 메서드의 리턴타입
리턴타입 |
설 명 |
ModelAndView |
뷰 정보 및 모델 정보를 담고 있는 ModelAndView 객체, 커맨드 객체 및 @ModelAttribute 어노테이션이 적용된 메서드가 리턴한 데이터, 그리고 ModelMap(또는 Map) 타입의 파라미터 데이터가 뷰에 함께 전달된다. |
Map |
뷰에 전달할 객체 정보를 담고 있는 Map을 리턴한다. 이때 뷰 이름은 요청 URL로 부터 결정된다. 커맨드 객체 및 @ModelAttribute 어노테이션이 적용된 메서드가 리턴한 데이터가 뷰에 함께 전달된다. |
String |
뷰 이름을 리턴한다. 커맨드 객체 및 @ModelAttribute 어노테이션이 적용된 메서드가 리턴한 데이터, 그리고 ModelMap(또는 Map)타입의 파라미터 데이터가 뷰에 전달된다. |
void |
메서드가 직접 응답을 처리하는 경우 |
처리결과를 보여줄 뷰를 검색하는 ViewResolver
4장 SpringMVC에서 봤듯이 기본적으로 UrlBasedViewResolver를 사용합니다.
UrlBasedViewResolver는 prefix와 suffix를 사용하여 실제 뷰의 경로를 리턴합니다.
dispatcher-servlet.xml
<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver" p:order="1" |
실제 뷰의 전체 경로 :
뷰(View) 구현
egovSampleList.jsp를 보도록 하겠습니다.
중간에 보시면 다음과 같은 코드가 있습니다.
<c:forEach var="result" items="${resultList}" varStatus="status"> |
jsp에서는 위에서 처럼 익스프레션언어(Expression Language)를 사용해서 ModelAndView에 저장된 값에 접근할 수 있습니다. 컨트롤러에서 다음과 같이 ModelMap에 요청에 대한 결과를 담았었습니다.
model.addAttribute("resultList", sampleList); |
마무리
이렇게해서 2회부터 시작된 클라이언트의 요청이 처리되는 과정을 살펴보았습니다. 좀 더 세부적인 내용들은 다음 포스팅부터 시작할 실제 화면을 구현해보면서 하도록 하겠습니다. 얼마 안되는 과정이지만, 막상 정리하려고 보니, 더 공부해야하는것도 많고 시간도 많이 걸리네요. 정리가 잘 되서 많은 분들이 그만큼 시간을 아끼셨으면 하는 작은 바램입니다~! 다음 포스팅에서 뵙겠습니다.
'전자정부프레임워크 > API' 카테고리의 다른 글
유니크값 생성해주는 IDGenerationService (0) | 2014.08.04 |
---|---|
[전자정부프레임워크#5] Controller,Service,DAO (0) | 2014.05.22 |
[전자정부프레임워크#4] 스프링 MVC 처리과정 (1) | 2014.05.22 |
[전자정부프레임워크#3] 서버에 페이지 요청하기 (0) | 2014.05.22 |
[전자정부프레임워크#2] 뚝딱 게시판 만들기 (0) | 2014.05.22 |
[전자정부프레임워크#1] 프레임워크 설치하기 (1) | 2014.05.22 |
egovMap에 담긴 파라메타 사용법 (0) | 2014.05.22 |
전자정부프레임워크 EgovAbstractDAO (0) | 2014.02.19 |