Controller
- Controller의 종류
* Controller(interface)
* AbstractController
* MultiActionController
- 위의 interfact / class를 상속하여 Controller 작성한다.
- 컨트롤러는 처리 결과를 ModelAndView에 담아 Dispatcher에 전달
AbstractController
- 가장 기본이 되는 Controller
- 작성
* AbstractController 상속한다.
* public ModelAndView handdlerRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception 오버라이딩하여 코드 구현
* ModelAndView에 view가 사용할 객체와 view에 대한 id 값을 넣어 생성 후 리턴
* ModelAndVie를 통해 view(/WebContent/jsp/res/response.jsp)로 수행 넘김
MultiActionController
- 하나의 Controller에서 여러 개의 요청 처리 지원
(연관된 request를 하나의 controller로 묶을 경우 사용)
- 작성
* MultiActionController 상속
* Client의 요청을 처리할 메소드 구현
public [ ModelAndView | Map | void ] 메소드 이름(HttpServletRequest req, HttpServletResponse res[HttpSession | command]) [throws Exception] {}
@ return type : ModelAndView, Map, Void 중 하나
@ argument : 1번- HttpServletRequest, 2번- HttpServletResponse, 3번- 선택적이며 HttpSession 또는 Command, 4번- Command
* MethodNameResolver 등록
@ 역할 : 어떤 메소드가 클라이언트의 요청을 처리할 것인지 결정
@ Spring 설정파일에 <bean>으로 등록
@ controller에서는 property로 주입 받는다.
@ 종류
- ParameterMethodNameResolver : parameter로 메소드 이름 전송
- InternalPathMethodNameResolver : url 마지막 경로 메소드 이름으로 사용
- PropertiesMethodNameResolver : url과 메소드 이름 mapping을 property로 설정
Annotation Controller
- @Controller : 컨트롤러에 클래스 표시
- @RequestMapping : 요청 URL 등록, 처리할 요청방식 지정
* RequestMapping("요청 url")
* RequestMappng(value="요청 url" method=요청방식)
* Controller 클래스에 등록
* Controller 메소드에 등록
- Controller 클래스 스프링 설정파일에 등록
1. <bean>을 이용해 등록
2. 자동스캔 : <context:component-scan base-package="package"/>
- Controller 메소드에서 요청 파라미터 처리
1. DTD(Command) 이용
- 요청 파라미터와 매칭되는 이름의 property를 가진 DTD
2. 요청 파라미터 name을 이용한 매개 변수 사용
- 같은 이름으로 여러 개 값이 넘어올 경우 String[] 사용
3. @RequestParam Annotation 사용
- 속성
* value : 요청 파라미터 이름 설정
* required : 필수 여부. 안넘어오면 400오류 발생. 기본 False
* defaultValue : 값이 안넘어 올 경우 설정할 기본 값
QueryString으로 name값을 보내주지 않으면
Controller에서 defaultValue=no name으로 지정한 값이 출력된다.
출력화면
- Controller 메소드 이용가능 매개변수 타입
* HttpServletRequest
* HttpServletResponse
* HttpSession
* 요청 파라미터 연결 변수
* 요청 파라미터 설정할 DTO 객체
* @CookieValue 적용 매개 변수(쿠키 값 매핑)
: @CookieValue(value="name", required=false)
* Map, Model, ModelMap - View에 전달할 모델 데이터 설정시 사용
- Controller 메소드 설정 가능 return type
* ModelAndView : view 정보와 응답 데이터 설정
* View에 전달할 값 설정(Map, Model, View는 요청 URL로 결정됨)
* String : View의 이름 리턴
* View 객체
* Void : Controller 메소드 내에서 응답을 직접처리 시 사용
ModelAndView
- Controller 처리 결과 후 응답할 View와 View에 전달할 값을 저장
- 생성자
* ModelAndView(String viewName) : 응답할 view 설정
* ModelAndView(String viewName, Map values) : 응답할 view와 view로 전달할 값들을 저장한 Map 객체
* ModelAndView(String viewName, String name, Object value) : 응답할 view이름, view로 넘길 객체의 name-value
- 주요 메소드
* setViewName(String name) : 응답할 view이름을 설정
* addObject(String name, Object value) : view에 전달할 값을 설정 -> requestScope에 설정됨
* addAllObjects(Map values) : view에 전달할 값을 Map에 name-value로 저장하여 한번에 설정
-> requestScope에 설정됨
- Redirect 방식 전송
* view 이름에 redirect : 접두어 붙인다. ex) mv.setViewName("redirect:/welcome.html");
'Wanna be a Programmer > Spring Framework' 카테고리의 다른 글
Spring MVC File Upload - view(JSP) (0) | 2012.07.05 |
---|---|
Spring MVC File Upload (1) | 2012.07.04 |
Spring MVC 구현(Dispatcher, HandlerMapping) (0) | 2012.06.27 |
Spring MVC (0) | 2012.06.27 |
Annotation(어노테이션) (0) | 2012.06.26 |