본문 바로가기
Framework/Spring

[SPRING 시작-2] # web.xml 설정엔 무엇이 있을까? (Eclipse+Spring+Maven)

by 나비와꽃기린 2016. 10. 10.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

(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 값이 설정되고 forceEncodingtrue 라면--> 설정된 값으로 Encoding 한다.

-encoding 값이 설정되었지만 forceEncodingfalse 라면 --> 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>