13.3.1. AbstractController and WebContentGenerator
다양한 컨트롤러들의 가장 기반이 되는 구현체인 AbstractController에서 설정할 수 있는 속성들은 다음과 같습니다.
Feature |
Explanation |
supportedMethods |
어떤 형식의 요청을 받아 들일지 설정합니다. 보통은 GET 이나 POST 둘 중 하나며 원하는 메서드 이름으로 바꿀 |
requiresSession |
해당 컨트롤러가 작업을 만약 필요로 하는데도 session을 담고 있는 request가 오지 않으면 SevletException이 발생합니다. |
synchronizeSession |
사용자의 Session을 동기화 처리해주고 싶을 때 사용합니다. |
cacheSeconds |
이 컨트롤러가 Http reponse에 캐쉬를 남기고 싶을 때 사용합니다. 기본값은 -1로 캐쉬를 남기지 않습니다. |
useExpiresHeader |
생성할 response에 기본값은 true입니다. |
useCacheHeader |
생성할 response에 HTTP 1.1과 호환 가능한 “Cache-Control” 헤더를 기술합니다. 기본값은 true입니다. |
AbstractController를 사용하는 방법은 간단합니다. 다음과 같이 handleRequest 메소드를 구현해주면 됩니다.
public class SampleController extends AbstractController {
public ModelAndView handleRequestInternal(
HttpServletRequest request,
HttpServletResponse response) throws Exception {
ModelAndView mav = new ModelAndView("hello");
mav.addObject("message", "Hello World!");
return mav;
}
}
AbstractController와 Controller 간의 관계는 다음과 같습니다.
이 컨트롤러는 view 이름을 소스 코드 내부에 위치 해야 하는 단점이 있습니다. 이렇게 되면 view가 바뀔 때 마다 소스 코드를 수정해줘야 하죠.