Home » SPRING -5.Controller

SPRING -5.Controller

5.1. Controller

  • Controller 클래스를 만들 때에는 인터페이스를 직접 구현, Controller 추상 클래스를 상속받아 구현, @Controller를 사용한 구현하는 방법이 있다.
  • 보통 interface를 직접 구현하기 보다는 추상클래스를 상속받아 만들거나, @Controller를 사용하여 POJO(Plain Old Java Object) 형식의 소스 작업을 많이 한다.

[ Spring Controller의 종류 및 설명 ]

명 칭 설 명
AbstractController 단순 처리 용도로 별도의 기능을 제공하지 않는다.
모든 처리를 개발자가 직접 직접 구현해야 한다.
AbstractUrlViewController URL(패스구조)에 따라 적절한 화면을 선택하여 전달한다.
UrlFilenameViewController 정적 View 맵핑하여 화면 전달한다.
ParameterizableViewController 아무런 기능도 수행하지 않고 요청을 View로 전달할 때 사용한다.
MultiActionController 연관되거나 비슷한 다수의 기능을 하나의 컨트롤러에서 구현할 때 사용한다.
ServletForwardingController
ServletWrappingController
기존에 작성된 서블릿을 스프링의 DispatcherServlet 구조로 편입시키는데 용이
BaseCommandController 웹페이지의 폼객체와 같이 사용자 정보가 많은 요청을 처리하는 기능을 제공한다
Spring 3에서는 폐지예정(deprecated)된 컨트롤러로, 이를 상속받는 하위 5개 컨트롤러 역시 같다.
-AbstractCommandController
-AbstractFormController
-SimpleFormController
-AbstractWizardFormController
-CancellableFormController

5.2. Test Code 작성

[ TestController.java ]

  • 간단한 테스트를 위해 AbstactController를 상속받은 TestController 생성.
  • request와 response를 인자로 받아서 비즈니스 로직을 처리 하고, 결과값과 view의 정보를 담은 ModelAndView 객체를 반환한다.

5.2.1. HandlerMapping

[ HandlerMapping의 종류 및 설정 ]

  • SimpleUrlHandlerMapping : URL과 Controller을 직접 맵핑 한다.

    [ servlet-context.xml ]

아래와 같이 설정도 가능하다.

  • BeanNameUrlHandlerMapping : 컨트롤러 Bean 이름과 URL을 가지고 맵핑 한다.

[ servlet-context.xml ]

  • ControllerBeanNameHandlerMapping : URL과 매칭되는 컨트롤러의 이름을 가진 bean을 맵핑한다.

    [ servlet-context.xml ]

  • ControllerClassNameHandlerMapping : URL과 매칭되는 클래스 이름을 가진 bean을 맵핑한다..

[ servlet-context.xml ]

  • DefaultAnnotationHandlerMapping : @RequestMapping을 통해 맵핑한다.

[ TestController.java ]

5.2.2. 파일 업로드

  • 업로드 가능한 화면과 컨트롤러를 만들어 실제 파일을 업로드 하는 간단한 테스트 코드를 작성하겠다.

[ pom.xml ]

  • Maven 설정 파일에 file Upload를 위한 lib 추가

[ servlet-context.xml ]

[ multipartResolver 프로퍼티 종류 및 설명 ]

명 칭 설 명
maxUploadSize 최대 업로드 가능한 바이트 크기
maxInMemorySize 디스크에서 임시 파일을 생성하기 전에 메모리에 보관할 수 있는 최대 바이트 크기
defaultEncoding 인코딩 설정.

[ upload.jsp ]

[ TestController.java ]

  • uploadView : 업로드를 하기 위한 화면 JSP를 호출.
  • upload : 화면에서 넘어온 파일 정보로 업로드를 처리. @Requestparam을 사용하여 file을 추출.
  • 이외에 request에서 직접 파일을 추출하거나, VO를 사용하여 추출하는 방법도 있다.