본문 바로가기
Java/Spring Framework

[SPRING 시작-2] # WEB.XML 설정엔 무엇이 있을까? (ECLIPSE+SPRING+MAVEN)

by 놀러와요 2019. 9. 9.
반응형

(1) <context-param>

STS 에서 기본적으로 제공해주는 설정 파일 외에, 사용자가 직접 컨트롤 하는 XML파일을 지정해주는 역할을 한다.

<context-param>에서 설정되어있는 root-context.xml은 모든 서블릿과 필터에서 사용되는 루트 스프링 컨테이너에 대한 설정이다.

 

<context-param>

      <param-name>contextConfigLocation</param-name>

      <param-value>/WEB-INF/spring/root-context.xml</param-value>

</context-param>

 

(2) <listener>

스프링 설정 정보를 읽는다.

<listener>

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

</listener>

 

(3) <servlet>

spring에서는 DispatcherServlet이 모든 요청을 받고, 요청의 URL과 맵핑하는Controller에 위임된다.

서블릿(Servlet)이란 보통 자바에서 동적 웹 프로젝트를 개발할 때, 사용자의 요청과 응답을 처리해 주는 역할을 하는데 자세한 설명은 나중에 포스팅 하자.

<servlet>

      <servlet-name>appServlet</servlet-name>

      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

       <init-param>

           <param-name>contextConfigLocation</param-name>

           <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>

       </init-param>

       <load-on-startup>1</load-on-startup>

</servlet>

 

<servlet-mapping>

        <servlet-name>appServlet</servlet-name>

        <url-pattern>/</url-pattern>

</servlet-mapping>

 

(4) <filter>

-한글깨짐 문제를 CharacterEncoding을 사용하여 Encoding 처리한다.

 

-encoding 값이 설정되고 forceEncoding이 true 라면--> 설정된 값으로 Encoding 한다.

-encoding 값이 설정되었지만 forceEncoding이 false 라면 --> HttpServletRequest 객체에 특정 인코딩 값이 들어가 있는 경우 그 값에 맞춰 인코딩을 한다.

 

-여기서 url-pattertn으로 /*가 지정된 의미는 / 이하로 들어오는 모든 req에 해당  filter를 적용하겠단 의미이다. 

<filter>

     <filter-name>characterEncodingFilter</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>

 

<filter-mapping>     

     <filter-name>characterEncodingFilter</filter-name>     

     <url-pattern>/*</url-pattern>

</filter-mapping>

 

------------------------------------------------------------------------------------------------------------------------

 

여기서 부터는 추가적으로 셋팅할 수 있는 web.xml의 설정을 설명한다.

 

(5) 타이틀 설정

web.xml의 Title 및 주석 정도라고 생각하면 된다.

보통 project의 이름으로 기술한다. 다음과 같이 수정도 가능하다.

<display-name>springTestProject</display-name>

<description>my spring test project ~~~~~~~~</description>

 

(6) session 설정

값을 0이나 음수로 설정하면 세션은 유효 시간을 갖지 않는다.

session.invalidate() 를 호출하지 않는 이상 session 객체가 사라지지 않는다.

<session-config> <session-timeout>30</session-timeout> </session-config>

 

 

(7) error page 설정

location에는 절대경로 또는 url 매핑으로 컨트롤러에서 제어가 가능하다.

절대경로 : /WEB-INF/views/error/error.jsp 처럼 직접 jsp파일 위치를 연결한다.

url매핑 : /error 처럼 작성하여 컨트롤러에서 modelAndView 객체로 화면을 return한다.

 

<error-page>

     <error-code>404</error-code>

     <location>/WEB-INF/views/error/error.jsp</location>

</error-page>

 

<error-page>

     <error-code>500</error-code>

     <location>/WEB-INF/views/error/error.jsp</location>

</error-page>

 

위의 설정은 /spring/wrgawrg와 같이 매핑이 되어있지 않은 url 이거나,

 <a href="/spring/aaaa.jsp" />에서 aaaa.jsp가 없다거나,

controller에서 return하는 페이지가 없거나 하는 경우

404의 location에 연결된 error.jsp로 연결된다.

 

404,403,400,500 등.... 케이스 별로 작성이 가능하며, 예외별로 다른 page를 보여주고 싶다면

<error-code>java.lang.Throwable</error-code> 처럼 자바 예외형식의 클래스명을 입력해줘도 된다.

 

(8) 시작페이지 설정

-webapp 밑에 index.jsp 생성

 

/ 로 요청 시 지정되어 있는 리소스를 호출한다는 의미이다.

controller에 / 로 매핑되어 있는 메소드가 있더라도 web.xml에 지정되어 있는 자원을

우선시한다.

 

보통 <welcome-file-list> 는 웹사이트가 최초로 보여주는 페이지로 설정하거나,

login 페이지로 설정하는 등으로 활용될 때 사용되어진다.

<welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list>

 

 

 

출처 : http://mkil.tistory.com/286?category=541781

 

 

 

반응형