다양한 컨트롤러들의 가장 기반이 되는 구현체인 AbstractController에서 설정할 수 있는 속성들은 다음과 같습니다.

Feature

Explanation

supportedMethods

어떤 형식의 요청을 받아 들일지 설정합니다. 보통은 GET 이나 POST 둘 중 하나며 원하는 메서드 이름으로 바꿀
수 도 있습니다. 지원 하지 않는 요청의 경우
ServletException
이 발생합니다.

requiresSession

해당 컨트롤러가 작업을
할 때 Http session이 필요한지 설정합니다.

만약 필요로 하는데도 session을 담고 있는 request가 오지 않으면 SevletException이 발생합니다.

synchronizeSession

사용자의 Session을 동기화 처리해주고 싶을 때 사용합니다.

cacheSeconds

이 컨트롤러가 Http reponse에 캐쉬를 남기고 싶을 때 사용합니다.

기본값은 -1로 캐쉬를 남기지 않습니다.

useExpiresHeader

생성할 response
HTTP 1.0
과 호환 가능한 “Expires” 헤더를 기술합니다.

기본값은 true입니다.

useCacheHeader

생성할 responseHTTP 1.1과 호환 가능한 “Cache-Control” 헤더를 기술합니다.

기본값은 true입니다.

AbstractController를 사용하는 방법은 간단합니다. 다음과 같이 handleRequest 메소드를 구현해주면 됩니다.

package samples;

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가 바뀔 때 마다 소스 코드를 수정해줘야 하죠.