springMVC web.xml

weather·2021년 1월 29일
0

spring

목록 보기
1/2

(*spring legacy project 를 기준으로 함)

DispatcherServlet

  • Spring Container를 생성한다.
    • Spring Container: Controller의 lifecycle 관리
  • 클라이언트의 요청을 처음으로 받는 클래스 (Spring에서 제공)
  • 클라이언트의 요청을 Handler(Controller)에 보낸다.
  • 그 외에 필요한 것
    • HadlerMapping
      • 어떤 url을 받을지 결정
    • ViewResolver
      • logical view name — prefix, suffix —> pysical view object
<servlet>
  <servlet-name>appServlet</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <!-- contextLoader가 해당 위치의 설정 파일을 읽어, 해당 파일을 dispatcher servlet으로 만든다. -->
  <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/appServlet/servlet-context.xml</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>

<!-- /로 시작하는 url 요청을 받아 appServlet에서 처리한다. -->
<servlet-mapping>
  <servlet-name>appServlet</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>
  • <init-param>부분은 생략이 가능하다.

    • <servlet-name> 에 설정한 이름 + -context.xml(-servlet.xml) 형식으로 설정 파일 이름을 만들고, web.xml과 같은 위치(/WEB-INF 하위) 또는 appServlet 폴더(/WEB-INF/appServlet 하위)에 있어야 contextLoader가 해당 파일을 찾아서 읽을 수 있다.
    • 위와 같이 설정하면 init-param으로 dispatcher xml 파일의 이름 설정하지 않아도 자동으로 로드된다.
    • Ex) servlet-context.xml
  • servlet-context.xml 안의 설정 내용 (* 아래 참고)


ContextLoaderListener

  • Controller가 공유하는 Bean들을 포함하는 Spring Container를 생성한다.

    • 공유하는 Bean: Dao, DataSource, Service
  • 각 Bean에 대한 설정 파일을 따로 생성한다.

    • service-context.xml : Service 관련
    • dao-context.xml : Dao 관련
    • root-context.xml(applicationContext.xml) : DataSource 관련, properties 등록, SessionFactory, TransactionManager 등
    • security-context.xml : Security 관련, BCryptPasswordEncoder 등
    • cf) servlet-context.xml : controller 관련, ViewResolver, mvc:annotation-driven 설정 등
  • DispatcherServlet에 의해 생성된 Bean은 ContextLoaderListener에 의해 생성된 Bean을 참조할 수 있다.

<!-- 이렇게 등록된 설정 파일에 따라 등록된 Bean들은 모두 공유가 가능하다. -->
<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>
    /WEB-INF/service-context.xml
    /WEB-INF/dao-context.xml
    /WEB-INF/root-context.xml
    /WEB-INF/security-context.xml
  </param-value>
</context-param>

<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

encodingFilter

  • 인코딩을 UTF-8로 설정하여 필터링하겠다는 설정이다.
<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<!-- /의 형식으로 시작하는 url에 대하여 UTF-8로 인코딩 -->
<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
profile
Sin prisa, pero sin pausa

0개의 댓글