오랜만에 스프링 MVC 다시 정리

오늘 오후 네 시에 스터디가 있어서 오랜만에 13장을 다시 정리해봤습니다. 그 중 몇 개만 정리해둡니다.

MultiActionController 사용 방법은 두 가지
– 상속
– 위임

WebApplicationContext가 관리하는 빈
– 컨트롤러(controller)
– 핸들러 맵핑(handler mappings)
– 뷰 리졸버(view resolver)
– 로케일 리졸버(locale resolver)
– 테마 리졸버(theme resolver)
– 멀티파트 파일 리졸버(multipart file resolver)
– 예외 처리 리졸버(Handler exception resolver)

애노테이션 기반 컨트롤러 설정시 필요한 빈(자동 등록해줌)
– DefaultAnnotaionHandlerMapping
– AnnotationMethodHandlerAdapter

@RequestMapping 사용 방법
– 클래스 레벨
– 메소드 레벨(MAC와 비슷한 효과)
– 클래스 + 메소드 레벨 혼합(클레스 레벨에 Ant 패턴 사용해서 거르고, 메소드 레벨로 세부적으로.)

요청 처리 메소드 인자
– Servlet API(Session 사용시 Thread-safety 문제가 생기면, AnnotationMethodHandlerAdapter의 synchronizeOnSession 속성을 true로 설정.)
– WebRequest, NativeWebRequest
– Locale
– InputStream/Reader, OutputStream/Writer
– @RequestParam
– Map, Model, ModelMap
– Command/form objects
– Errors/BindingResult
– SessionStatus

요청 처리 메소드 반환 타입
– ModelAndView
– Model (뷰 이름은 CoC 사용)
– Map (위와 동일)
– View (모델은 커맨드 객체와 @ModelAttribute를 사용한 메소드가 반환하는 객체)
– String (위와 동일)
– void (응답을 response 객체를 사용해서 직접 처리하거나, CoC 사용)
– Other return type (해당 객체를 model attribute로 뷰에서 사용가능)

@RequestParam
– 요청 매개변수 바인딩

@ModelAttribute
– 메서드 매개변수 레벨: 모델 속성을 특정 메서드 매개변수로 맵핑할 때 사용.
– 메서드 레벨: 화면에서 사용할 implicite object를 제공할 때 사용.

@SessionAttributes
– @ModelAttribute의 이름 목록을 지니고 있다. 해당 모델 객체들을 세션에 저장하여 여러 요청에서 공통으로 사용.

@InitBinder
– 커스텀 프로퍼티 에디터 등록.

Leave a Reply

Your email address will not be published. Required fields are marked *