Spring - 34.2 WebMVC

갓김치·2021년 1월 6일
0

JSP+Spring

목록 보기
37/43
post-thumbnail

Spring MVC Architecture

  • HandlerAdapter가 model 에 담겨있던 데이터를 request scope에 옮겨 담아줌 (기존처럼 backend controller에서 request에 데이터 넣는게아님)
  • HandlerAdpater가 다시 viewname을 dispatcherservlet에게 넘김
  1. Spring Legacy Project 생성
  2. Spring MVC Project 선택 - springMVCDummy로 이름짓고 next
  3. Spring 개발에 적합한 프로젝트 다운로드 경고창 Yes
  4. kr.or.ddit 로 basepackage
  • ddit라는 기관명이 ContextPath가 됨
  • localhost/ddit (localhost/springMVCDummy 가 아님)
    maven: 디펜던시제공, 일정개발툴 제공

운영중인 프로그램에 투입되었다면?

  1. pom.xml의 dependencies 확인
  2. 문열고 filter-chain 가장 먼저 만날테니 web.xml확인
    1) Listener확인: init callback에서 container 객체 생성
    2) Listener에서 만드는 container의 xml은 context-param에 주소가 있음 (부모컨테이너)
    3) 서블릿 내에서 자식 컨테이너가 만들어져 계층구조가 형성됨

리포팅용도 스탠드얼론 하나의 컨텍스트
웹 요청처리 하나의 컨텍스트
둘의 컨텍스트가 공통적으로 서비스,다오를 써야하니 parent에 bean을 등록

파일처리

  • 우리 프레임워크: 프론트 이전에 파일체크필터작동
  • 스프링: 프론트 이후에 파일처리
  • 우린 그동안 서블릿3.0이어서 프론트를 multipartconfig를 등록해서 썼지만 2.5여서 뭐하나만 등록해서 써먹으면 끝이라구??

webStudy04

  • web.xml(톰캣)의 defaultServlet이 동적,정적요청 전부처리중, 매핑이 / 이걸로 걸려있는데 스프링도 /라고 했어..
  • 그럼이제 정적자원에 대한 처리가 안되는거임 톰캣으로
  • 그래서 스프링에서 이제 설정으로 처리하여 정적차원을 처리해줘야함
  • 반드시고려할것: 슬래시 매핑을했을때 정적차원에 대한 처리를 어떻게 할것인지...

characterEncodingFilter

public CharacterEncodingFilter(String encoding, boolean forceEncoding) {
	this(encoding, forceEncoding, forceEncoding);
}

true: 내껄로 강제화시키겠다 -> 어떤경우에도 encoding을 utf-8

servlet-context.xml

  • 디스패처서블릿이 servlet-context.xml로 컨테이너를만듬
  • 그 디스패처서블릿이 핸들러매핑,핸들러어댑터, 뷰리졸버를써야한다
  • 그러므로 servlet-context에 ㄱ그 셋이 등록이 되어있어야한다
  • <annotation-driven></annotation-driven> 이걸로 등록해주는데 3개말고 26개가 전부 등록됨
  • 근데 문제는 기본값으로 등록이 되는것임
  • view resolver에는 적어도 기본이아니라 /WEB-INF/VIEWS와 .jsp라는 설정값을 등록해줘야함
    같은일을하는애가여럿이면 그중에순서가중요 -> 뷰리졸버
  • IRVR의 기본특성: 본인이 찾지못하면 무조건 404내보내기때문에 제일 나중에 되도록 -> 아예 p:order를 주지않음 -> 그럼 integer로 줄수있는 가장큰값을줘서 맨뒤로밀림
profile
갈 길이 멀다

0개의 댓글