티스토리 뷰
Servlet Lifecycle
Tomcat 컨테이너는 서블릿 인스턴스를 관리하기 위해 다음의 Lifecycle을 사용한다.
init()
웹 컨테이너에 의해 서블릿 인스턴스 처음 생성
service()
클라이언트 요청을 받을 때 마다 호출 (doGet, doPost)
destroy()
웹 컨테이너에서 제거될 때 호출
web.xml
서블릿을 실행하기 위해 관련된 설정 정보가 필요하다.
web.xml 파일에는 이에 대한 정보가 있다.
맵핑 방법은 여러 개이지만
web.xml 파일을 생성하여 등록하는 방법에 대해 정리하려고 한다.
다음은 예시 파일이다.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!-- 공통적으로 설정할 데이터 선언 -->
<context-param> // 1)
<param-name>파라미터명</param-name>
<param-value>파라미터 값</param-value>
</context-param>
<listener> 2)
<listener-class>실행될 파일 절대 경로</listener-class>
</listener>
<!-- 서블릿을 등록하는 부분 -->
<servlet> 3)
<servlet-name>서블릿명</servlet-name>
<servlet-class>서블릿이 실행될 class 명 (패키지명까지 포함된 절대 경로)</servlet-class>
</servlet>
<servlet>
<servlet-name>ServletWithParam</servlet-name>
<servlet-class> com.xxx.xxx.ServletWithParamServlet </servlet-class>
<!-- ServletWithParam 서블릿에 접근한 경우 사용할 파라미터 -->
<init-param>// 3-1)
<param-name>파라미터명</param-name>
<param-value>default 값</param-value>
</init-param>
<init-param>
<param-name>name</param-name>
<param-value>song</param-value>
</init-param>
</servlet>
<!-- 서블릿 인스턴스를 맵핑할 url에 대한 정의 -->
<servlet-mapping> // 4)
<servlet-name>서블릿명</servlet-name>
<url-pattern>서블릿이 실행된 url pattern</url-pattern>
</servlet-mapping>
<filter> // 5)
<filter-name>필터이름<filter-name>
<filter-class>필터를 처리할 클래스</filter-class>
</filter>
<filter-mapping>
<filter-name>필터 이름</filter-name>
<url-pattern>/filter</url-pattern>
</filter-mapping>
</web-app>
1) context-param
서블릿 실행을 위해 공통적으로 사용되는 컨텍스트 파라미터 선언 (모든 서블릿에 공유되어 사용)
- servlet 선언 전에 선언해줘야 한다.
- 읽기만 가능
- 선언된 값을 java 단에서 가져오기 위해선 다음과 같이 사용하면 된다.
public class ContextParamServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception) {
String driver = getServletContext().getInitParameter("driver");
}
}
2) listener
웹 애플리케이션의 초기화/삭제를 감지하여 처리
- <listener-class>에 선언된 경로의 파일에서 관련 로직 처리가 가능하다.
- context-param 태그 이후에 선언
- listener-class 에서 선언된 파일은 다음의 예시 참고
public class ContextListener extends ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent event ) {
System.out.print(""생성");
}
@Override
public void contextDestroyed(ServletContextEvent event ) {
System.out.print(""제거");
}
}
3) servlet
서블릿을 등록하는 부분
- <servlet-name>에는 서블릿 이름을 선언
- <servlet-class>에는 서블릿이 실행될 파일을 선언해준다. (파일은 패키지명 부터 적는다.)
3-1) init-param
특정 서블릿에서 필요한 parameter를 등록하는 부분 (초기화 파라미터)
- 다른 서블릿과 공유할 수는 없으며 ServletConfig 를 통해 접근이 가능하다.
- java 단에서는 다음과 같인 접근이 가능
public class ContextParamServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception) {
System.out.print(getInitParameter("name")); // song
}
}
4) servlet-mapping
url과 맵핑해주는 부분
5) filter
서블릿 요청 처리 전과 응답 값을 보내기 전에 처리하기 위한 로직을 선언
- filter-mapping 을 사용하여 url-pattern 을 정의 -> 특정 서블릿에 대한 필터 가능
- 실제 처리하는 로직은 다음의 예시 참고
public class CountryFilter implements Filter{
public void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws Exception) {
request.setCharacterEncoding("euc-kr");
chain.doFilter(request, response);
}
}
'정리하기 > 서버' 카테고리의 다른 글
tomcat conf 디렉토리 살펴보기 (0) | 2018.08.26 |
---|---|
자바빈 (0) | 2018.08.04 |
웹 애플케이션 개요 (0) | 2018.08.04 |
tomcat 디렉토리 살펴보기 (0) | 2018.07.24 |
Apache vs Tomcat (0) | 2018.07.21 |
- Total
- Today
- Yesterday
- 함수
- 원하는것이있다면끝까지버텨라
- backbone.js
- 뉴욕
- awesome-vue
- AndroidContext
- mocha.js
- node
- nextTick
- #가상머신
- js
- vue.js
- Typescript
- 자바스크립트
- framework
- 외부모듈
- vuex
- vue
- marionetts.js
- eventbus
- angular
- nodejs
- awe-some
- MarionetteJS
- git tag
- Android
- common.js
- javascript
- node.js
- browserify
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |