1. 메소드 파라미터의 종류
- HttpServletRequest, HttpServletResponse
- HttpSession (멀티쓰레드 환경에서 안정성 보장 안됨. 안정성 보장을 위해서는 핸들러 어댑터의 synchroizeOnSession = true 설정)
- WebRequest, NativeWebRequest
- Locale: Locale Resolver가 결정한 Locale 오브젝트
- InputStream, Reader
- OutputStream, Writer
- @PathVariable: @RequestMappint의 URL에 {}로 들어가는 패스 변수
- @RequestParam: 단일 HTTP 요청 파라미터를 메소드 파라미터에 넣어주는 애노테이션
public void view(@RequestParam(value="id", required=false, defaultValue="-1") int id){ ... }
- @CookieValue
public String check(@CookieValue(value="auth", required=false, defaultValue="NONE") String auth){ ... }
- @RequestHeader
- Map, Model, ModelMap
- @ModelAttribute: 모델 맵에 담겨서 뷰에 전달되는 모델 오브젝트의 한가지. 기본적으로 모든 @ModelAttribute는 별도의 설정 없이도 자동으로 뷰에 전달.
@ModelAttribute 가 붙은 파라미터는 검증 작업을 추가로 진행한다.
@RequestMapping("/user/search")
public String search(@ModelAttribute UserSearch userSearch){
List<User> list = userService.search(userSearch);
model.addAttribute("userList", list);
}
- Errors, BindingResult
- SessionStatus: 모델 오브젝트를 세션에 저장했다가 다음 페이지에서 사용하는 경우, 작업 완료 후 세션에 저장된 오브젝트 제거
- @RequestBody: HTTP 요청의 본문(body) 부분을 전달
XML-MarshallingHttpMessageConverter/ JSON-MappingJacksonHttpMessageConverter 사용
- @Value
public String hello(@Value("#{systemProperties['os.name']}") String osName){ ... }
- @Valid: JSP-303 빈 검증기를 이용해서 모델 오브젝트를 검증하도록 지시하는 지시자
2. 리턴 타입의 종류
- 자동 추가 모델 오브젝트: @ModelAttribute 모델 오브젝트, Map, Model, ModelMap 파라미터, @ModelAttribute 메소드, BindingResult
- @ModelAttribute 메소드: 메소드가 생성하는 오브젝트는 클래스 내의 다른 컨트롤러의 메소드의 모델에 자동 추가
@ModelAttribute("codes") - <select> 옵션 등에 사용되는 값을 전달.
public List<Code> codes(){
return codeService.getAllCodes();
}
- BindingResult: org.springframework.validation.BindingResult.모델이름
- ModelAndView
- String
- 모델 오브젝트: 모델에 추가할 오브젝트가 하나뿐이라면 모델 오브젝트를 바로 리턴
- Map/ Model/ ModelMap
- View: @Autowired MarshallingView userXmlView;
- @ResponseBody
@RequestMapping("/hello")
@ResponseBody
public String hello(){
return "<html><body>Hello Spring</body></html>";
}
3. @SessionAttributes와 SessionStatus
- 컨트롤러 메소드가 생성하는 모델정보 중에서 @SessionAttribute에 지정한 이름과 동일한 것이 있다면 세션에 저장
@SessionAttribute는 @ModelAttribute가 지정된 파라미터가 있을 때 이 파라미터에 전달해줄 오브젝트를 세션에서 가져온 후,
폼에서 전송해준 파라미터만 바인딩한 뒤에 컨트롤러의 파라미터로 넘겨준다.
@SessionAttribute를 사용할 때는 더 이상 필요 없는 세션 애트리뷰트를 코드로 제거해줘야 한다.
sessionStatus.setComplete();
'Spring > Annotation' 카테고리의 다른 글
@InitBinder (0) | 2016.01.15 |
---|---|
@Controller + @ModelAttribute + ModelBinding (0) | 2016.01.15 |
@Transactional (0) | 2016.01.13 |