📚 Study/Servlet&JSP
web.xml 배포 설명자와 URL Pattern
0_ch4n
2022. 5. 27. 02:40
반응형
✔️ web.xml
- 애플리케이션의 클래스, 리소스, 구성을 기술하고 웹 서버가 웹 요청을 처리하는 방법을 기술합니다.
- 앱의 WAR에서 WEB-INF/ 디렉터리에 위치합니다.
<web-app>
<!-- 애플리케이션의 이름과 설명을 제공 -->
<display-name>Example App</display-name>
<description>An example application which is used to play with some of the features of Tomcat</description>
<!-- 세션 타임아웃 제공 -->
<session-config>
<session-timeout>120</session-timeout>
</session-config>
<!-- JSP에 대한 설정을 제공 -->
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<include-prelude>/WEB-INF/jspf/prelude1.jspf</include-prelude>
<include-coda>/WEB-INF/jspf/coda1.jspf</include-coda>
</jsp-property-group>
</jsp-config>
<!-- Context 파라미터를 정의 -->
<context-param>
<description>Enable debugging for the application</description>
<param-name>debug</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<description>The email address of the administrator, used to send error reports.</description>
<param-name>webmaster</param-name>
<param-value>address@somedomain.com</param-value>
</context-param>
<!-- 서블릿에 대한 이름, 클래스, 설명 등을 제공 -->
<servlet>
<servlet-name>서블릿 이름</servlet-name>
<servlet-class>서블릿 클래스</servlet-class>
<description>설명</description>
</servlet>
<!-- 각 서블릿을 URL에 매핑 -->
<servlet-mapping>
<servlet-name>서블릿 이름</servlet-name>
<url-pattern>/welcome</url-pattern>
</servlet-mapping>
<!-- 필터에 대한 이름, 클래스, 초기 변수 이름과 값을 제공 -->
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>EUC_JP</param-value>
</init-param>
</filter>
<!-- 각 필터를 URL에 매핑 -->
<filter-mapping>
<filter-name>1번 필터</filter-name>
<url-pattern>/filter</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>2번 필터</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>3번 필터</filter-name>
<servlet-name>서블릿 이름</servlet-name>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<!-- 오류 핸들러로 오류 코드에 따라 표시할 페이지를 제공 -->
<error-page>
<error-code>500</error-code>
<location>/errors/servererror.jsp</location>
</error-page>
<!-- 경로에 파일 이름이 정의되어 있지 않을 경우 표시할 파일을 순서대로 정의 -->
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
✔️ URL 패턴
- 클라이언트에서 특정 URL로 요청 시 해당 서블릿이 처리할 수 있게 하기 위해 해당 URL을 서블릿에 올바르게 매핑해야 합니다.
- <servlet-mapping> 의 <url-pattern> 태그를 통해 설정하거나 @WebServlet의 urlPatterns 속성을 사용합니다.
- 종류
- exact mapping : /login/hello.do
- path mapping : /login/*
- extension mapping : *.do
- default mapping : /
- 특징
- 우선순위는 exact -> path -> extension -> default 순입니다.
- exact, path, extension은 동적 리소스, default는 정적 리소스입니다.
- default mapping은 <servlet-mapping>에 걸리지 않은 요청들을 처리합니다.
- URL을 처리하는 서블릿을 찾는 과정
- 요청이 들어오면 Servlet Context의 servletMapping에서 URL을 key로 어떤 서블릿이 처리하는지 찾습니다.
- 그 후 Servlet Context의 children에서 서블릿의 주소값을 찾습니다.
📌 web.xml (JSP, Serlvet 가능)
<!-- Servlet 매핑 -->
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<!-- JSP 매핑 -->
<servlet>
<servlet-name>HelloJSP</servlet-name>
<jsp-file>/hello.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>HelloJSP</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
📌 @WebServlet (Servlet은 가능, JSP는 불가능)
@WebServlet("/hello1")
public class HelloServlet1 extends HttpServlet {
📄 참고
스프링의 정석
http://wiki.metawerx.net/wiki/Web.xml
https://dololak.tistory.com/740?category=636501
반응형