티스토리 뷰
반응형
서블릿 리스너와 필터
서블릿 리스너
-
서블릿 컨테이너에서 발생하는 주요 이벤트를 감지하고 각 이벤트에 특별한 작업이 필요한 경우에 사용한다.
-
서블릿 컨텍스트 수준의 이벤트
-
컨텍스트 라이프사이클 이벤트
-
컨테스트 라이프사이클 이벤트의 리스너를 만들어보자
- 리스너
public class MyListener implements ServletContextListener { //리스너 초기 설정 @Override public void contextInitialized(ServletContextEvent sce) { System.out.println("Context Initialized"); sce.getServletContext().setAttribute("name", "mesung"); } @Override public void contextDestroyed(ServletContextEvent sce) { System.out.println("context destroyed"); } }
- web.xml 리스너 설정
<listener> <listener-class>com.mesung.MyListener</listener-class> </listener>
- 리스너 호출 in Serlvet
//HelloServlet @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { //req와 resp는 filter에서 등록된 ServletRequest와 ServletResponse와 연결되는 것이다. System.out.println("doGet"); resp.getWriter().println("<html>"); resp.getWriter().println("<head>"); resp.getWriter().println("<body>"); resp.getWriter().println("<h1>hello " + getServletContext().getAttribute("name") + "servlet</h1>"); resp.getWriter().println("</body>"); resp.getWriter().println("</head>"); resp.getWriter().println("</html>"); }
- 컨텍스트 라이프사이클에 맞춰, 초기화 할 시점과 끝나는 시점에 이벤트를 설정한 것이다.
-
-
-
- 컨텍스트 애트리뷰트 변경 이벤트
-
세션 수준의 이벤트
- 세션 라이프사이클 이베트
- 세션 애트리뷰트 변경 이벤트
서블릿 필터
-
들어온 요청을 서블릿으로 보내고, 또 서블릿이 작성한 응답을 클라이언트로 보내기 전에 특별한 처리가 필요한 경우에 사용한다.
-
필터들은 체인 형태의 구조이다.
-
간단한게 소스로 구성해보자.
- 필터
import javax.servlet.*; public class MyFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("Filter init"); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println("Filter"); filterChain.doFilter(servletRequest, servletResponse); //다음 필터로 연결을 해줘야한다. //만약 마지막 필터일 경우 다음 연결은 servlet이다. } @Override public void destroy() { System.out.println("Filter Destroy"); } }
- web.xml
<filter> <filter-name>myFilter</filter-name> <filter-class>com.mesung.MyFilter</filter-class> </filter> <filter-mapping> <filter-name>myFilter</filter-name> <!-- 적용 서블릿 이름 (만약 여러 개의 서블릿에 적용할 시 url-pattern으로 설정한다.)--> <servlet-name>hello</servlet-name> </filter-mapping>
반응형
'Spring > Spring 웹 MVC' 카테고리의 다른 글
[스프링 웹 MVC] 스프링 MVC 연동(Dispatcher Servlet) (0) | 2020.03.13 |
---|---|
[스프링 웹 MVC] 스프링 MVC 동작 원리 (0) | 2020.02.11 |
[스프링 웹 MVC] 스프링 IoC 컨테이너와 연동 (0) | 2020.02.11 |
[스프링 웹 MVC] 서블릿 애플리케이션 개발 (0) | 2020.02.11 |
[스프링 웹 MVC] 서블릿 애플리케이션 (0) | 2020.02.11 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 빌더 패턴
- flatMap
- jdk버전
- junit
- java
- 복사 팩토리
- Spring
- 점층적 생성 패턴
- 자바8
- 김영한
- JPA
- 스프링부트
- 생성자
- effectivejava
- 인프런
- mustache
- 연관관계
- @Lazy
- ifPresent
- 팩토리 메소드 패턴
- Effective Java
- 빈 순환 참조
- package-private
- 정적팩터리메서드
- springboot
- try catch finally
- java8
- try with resources
- 이펙티브자바
- 이펙티브 자바
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함