web.xml 은 Deployment Descriptor(배포 서술자) 라고 불리며 환경설정 부분을 담당한다.
출처 : [JSP & Servlet 배경지식] 4. Servlet – Deployment Descriptor(DD)
1. 서블릿파일들은 소스형태로 저장. 주로 비즈니스 로직을 구현.
2. 서블릿파일들이 빌드되어 class 형태로 자동 생성.
3. 사용자에게 보여지는 Front-end 부분 파일.
4. 배포서술자가 위치하고 있으며 없어서는 안되는 파일.
5. 개발시 사용될 라이브러리들을 다운받아 추가 & 사용
DD(Deployment Descriptor(배포 서술자) 란?
WEB-INF 폴더 아래 web.xml 파일명으로 항상 존재하며 서버 시작시 메모리에 로딩. 클라이언트 요청에 의해 컨테이너는 DD를 참조하여 해당 서블릿에 맵핑.
DD에서 설정할 수 있는 것들.
- ServletContext 설정
- Session이 유지되는 시간 설정
- Servlet/JSP에 대한 정의
- Servlet/JSP 매핑
- Mime Type 매핑
- Welcome File list
- Error Pages 처리
- 리스너/필터 설정
- 보안설정 (에러처리)
web-app
<web-app>태그는 web.xml파일의 루트 엘리멘탈이다. 모든 웹 애플리케이션 설정은 이 태그 사이에 위치해야 한다.
display-name
프로젝트명으로 설정됨
<display-name>Web Page Project</display-name>
description
프로젝트에 의한 설명을 기재.
<description>Sample Project</description>
servlet
DispatcherServlet 클래스를 초기화하여 spring의 servlet context를 생성한다.
servlet-mapping은 url pattern으로 지정된 값으로 웹 페이지 요청이 들어왔을 때 servlet-name에 지정되어 있는 이름의 servlet을 호출하겠다는 의미이다.
스프링에서는 DispatcherServlet 이 모든 요청을 받고, 요청의 URL과 맵핑하는 Controller에 위임하는데 예를 들어 Controller class에 @RequestMapping("/admin") 으로 annotation(어노테이션) 지정되 있는 메서드가 있다면 URL://URL주소/admin.html 요청시 DispatcherServlet 에 해당하는 URL과 mapping 되는 것을 찾은 후에 해당 메서드에 요청한다.
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
ContextLoaderListener
스프링 설정 정보를 읽는다. 이때 1개로 충분한 경우 dispatcher에 지정하면 되지만 2개 이상일 경우 contextConfigLocation 초기화 파라미터에 설정파일 목록을 지정한다.
<listener>는 반드시 등록해놓아야 한다.
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring/profiles.xml
/WEB-INF/spring/dbmanage-context.xml
</param-value>
</context-param>
Listener
특정 이벤트가 발생하면 호출되어 처리하느 ㄴ객체로 인터페이스만 제공되므로 클래스는 직접 구현해야 한다.
<listener>
<listener-class>{구현된 클래스 경로}</listener-class>
</listener>
filter
웹 애플리케이션 전반에 걸쳐 특정 URL이나 파일 요청시 먼저 로딩되어 사전처리할 작업을 수행하고 해당 요청을 처리한다. 주로 캐릭터셋 변경에 많이 사용된다.
<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>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
session-config
세션이 유지되는 시간을 설정할 수 있다. (분단위)
<session-config>
<session-timeout>30</session-timeout>
</session-config>
Error Pages
각 Error-code별로 Page를 설정한다.
<error-page>
<error-code>401</error-code>
<location>/resources/error/err401.jsp</location>
</error-page>
<error-page>
<error-code>403</error-code>
<location>/resources/error/err403.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/resources/error/err404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/resources/error/err500.jsp</location>
</error-page>
welcome-file-list
웹 애플리케이션 요청 시에 시작파일을 지정한다.
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
mime type
특정파일을 다운로드 시켰을때 다운로드창이 아닌 파일이 깨져보일때 정상적인 다운로드를 위해 설정.
<mime-mapping>
<extension>xls</extension>
<mime-type>application/vnd.ms-excel</mime-type>
</mime-mapping>
* mime type
엑셀 97~2003 통합문서 (*.xls)
> application/vnd.ms-excel
엑셀 통합문서 (2007 이상 *.xlsx)
> application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
ZIP 파일 (*.zip)
> application/zip
TAR 파일 (*.tar)
> application/x-bzip
워드 97~2003 문서 (*.doc)
> application/msword
워드 문서 (2007 이상 *.docx)
> application/vnd.openxmlformats-officedocument.wordprocessingml.document
PDF 파일 (*.pdf)
> application/pdf
한글 (*.hwp)
> application/x-hwp
이 포스팅이 작성되는데 참조한 사이트
- [JSP & Servlet 배경지식] 4. Servlet – Deployment Descriptor(DD)
'공부 > 프로그래밍' 카테고리의 다른 글
[Spring] Mybatis 에서 Insert 시 자동 생성키 이용하기 (0) | 2017.04.20 |
---|---|
[Spring] Mybatis 에서 Mapper(매퍼) 연결하는 2가지 방법에 대한 선택 가이드. (0) | 2017.04.20 |
도커 docker 간단 명령어 (컨테이너/이미지 확인 삭제) (0) | 2017.04.17 |
Mysql procedure(프로시저) CURSOR(커서) 실행하기. (0) | 2017.04.14 |
Mysql procedure(프로시저) 에러처리 하기. (0) | 2017.04.14 |
댓글