2022.10.13

Jimin·2022년 10월 13일
0

비트캠프

목록 보기
56/60

082. Spring WebMVC Framework 사용법

Spring WebMVC 프레임워크 사용법

  1. @RequestMapping 사용법
  2. 스프링의 characterEncodingFilter 사용법
  3. 필터를 자바 코드로 배치하는 방법
  4. 요청 핸들러(request handler)의 파라미터 다루는 방법
    request handler: 요청이 들어왔을 때 호출되는 메서드 (add(), list(), detail(), ...)

1단계 - @RequestMapping 애노테이션으로 요청 URL을 합성하는 방법

  • com.bitcamp.board.controller.XxxxController 클래스 변경

2단계 - 스프링에서 제공하는 CharacterEncodingFilter로 교체한다.

  • com.bitcamp.board.listener.ContextLoaderListener 클래스 변경
  • LoginCheckFilter, AdminCheckFilter 도 자바 코드로 등록한다.

3단계 - 요청 핸들러의 파라미터 및 리턴 값을 조정한다.

  • com.bitcamp.board.controller.XxxxController 클래스 변경
    • 요청을 처리하는 메서드에 필요한 값만 파라미터로 받는다.
    • 요청 파라미터 값을 핸들러의 파라미터로 직접 받을 수 있다.: @RequestParam
    • @RequestParam 을 생략할 수 있는 경우
    • 첨부파일을 파라미터로 직접 받을 수 있다.
    • ServletContext를 받는 방법: 생성자를 통해 주입 받는다.
    • Part 대신 스프링에서 제공하는 MultipartFile 타입으로 첨부파일을 받는다.
    • 낱개의 파라미터 값을 도메인 객체로 바로 받을 수 있다.
      • 단, multipart/form-data 형식으로 전송된 데이터를 처리하려면 MultipartResolver를 설정해야 한다.
    • ServletRequest 보관소에 작업 결과를 저장할 때 페이지 컨트롤러에서 하는 대신 프론트 컨트롤러에서 하기: ModelAndView, Model, Map 클래스
    • 기본 ViewResolver를 InternalResourceViewResolver로 교체한다.
      • 접두사, 접미사를 이용하여 JSP 주소를 완성할 수 있다.
      • InternalResourceViewResolver를 설정해야 한다.
  • com.bitcamp.board.config.AppConfig 클래스 변경
    • createMultipartResolver() 메서드 추가
    • createViewResolver() 메서드 추가

4단계 - JSP 파일을 /WEB-INF 밑에 두어 직접 접근하지 못하도록 만든다.

  • /WEB-INF/jsp 디렉토리 생성
    • 기존의 JSP 파일을 이 디렉토리로 옮긴다.
  • com.bitcamp.board.config.AppConfig 클래스 변경
    • createViewResolver() 메서드 변경

멀티파트 요청 데이터를 도메인 객체로 받기

멀티파트 해결사 MultipartResolver ← 별도 설정이 필요하다.


요청 핸들러의 리턴 타입

  1. void handle() {} :
    JSP 주소가 없다. 요청 URL을 JSP 주소로 사용한다.
  2. String handle() {}:
    JSP URL
  3. Model handle() {}:
    ServletRequest 보관소에 담을 객체들을 리턴
    JSP 주소가 포함되어 있지 않다.
    ⇒ 요청 URL을 JSP 주소로 사용한다.
  4. Map handle() {}:
    3번과 같은 메서드로 취급한다.
  5. ModelAndView handle() {}:
    JSP 주소 + ServletRequest 보관소에 저장할 객체들
  6. View handle() {}:
    JSP 주소를 View 객체에 담아 리턴한다.

Front Controller(DispatcherServlet)

프론트 콘트롤러는 요청 핸들러의 리턴타입에 따라 적절하게 처리한다.

profile
https://github.com/Dingadung

0개의 댓글