서블릿은 다양한 시점에서 발생하는 이벤트와 이벤트를 처리하기 위한 인터페이스가 존재한다 .그 중 HttpSessionListener, ServletContextListener 를 활용하고자 한다. 이벤트와 인터페이스를 이용하면 웹 어플리케이션에서 필요로하는 데이터의 초기화나 요청처리등을 추적할 수 있게 한다.
HttpSessionListener 인터페이스를 구현한 클래스 - CountManager.java
package com.event;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
//서블릿의 라이프 사이클과 속성 이벤트
//HTTPSessionListenr: 세션이 생성, 종료될 때
//ServletContextListener : 서버가 시작, 중지될 때
public class CountManager implements HttpSessionListener {
private static CountManager countManager;
private static int count;
public CountManager(){
countManager = this; //자기자신
}
//싱글톤
public static synchronized CountManager getInstance() throws Exception{
if(countManager==null)
countManager = new CountManager();//null이면 객체생성
return countManager;
}
public static int getCount(){
return count;
}
@Override
public void sessionCreated(HttpSessionEvent evt) {
//SID 키값을 가져와서 할당을 해줌
HttpSession session = evt.getSession();
session.setMaxInactiveInterval(10*60);
count++;
System.out.println(session.getId()+": 세션 생성, ");
System.out.println("접속자수 : " + count);
}
@Override
public void sessionDestroyed(HttpSessionEvent evt) {
HttpSession session = evt.getSession();
count--;
System.out.println(session.getId()+": 세션 소멸, ");
System.out.println("접속자수 : " + count);
}
}
작성한 클래스를 등록
web.xml - 세션이 시작되고 종료될 때 체크하는 리스너를 등록 <!-- 리스너 --> <listener> <listener-class>com.event.CountManager</listener-class> </listener> |
ServletContextListener인터페이스를 구현한 클래스
ContextListenerTest.java public class ContextListenerTest implements ServletContextListener { @Override public void contextDestroyed(ServletContextEvent evt) { System.out.println("서버 죽는다.."); } @Override public void contextInitialized(ServletContextEvent evt) { System.out.println("서버 살아난다.."); ServletContext sc = evt.getServletContext(); //어떤 소스에서도 접근 가능한 데이터 sc.setAttribute("name", "한예슬"); } } 서버 startup 서버 shutdown |
작성한 클래스를 등록
web.xml <!-- ContextListener 리스너 --> <listener> <listener-class>com.event.ContextListenerTest</listener-class> </listener> |
하기 JSP 페이지를 통해서 어떤 소스에서도 접근 가능한 데이터를 확인할 수 있다.
contextListenerTest.jsp <%@ page contentType="text/html; charset=UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% request.setCharacterEncoding("UTF-8"); String cp = request.getContextPath(); %> ContextListenerTest 데이터 <br> 이름: ${name }<br> |
'Dev > JSP & Servlet' 카테고리의 다른 글
Servlet - 이미지 게시판 만들기 (1) | 2019.03.06 |
---|---|
Servlet-api 임포트 오류시 (0) | 2019.03.06 |
필터구현 (로그인 검사, 캐릭터 인코딩, 시간 측정) (0) | 2019.03.06 |
cos.jar를 이용한 파일 업로드(2)-파일 업로드,다운로드.삭제 (0) | 2019.03.04 |
cos.jar를 이용한 파일 업로드(1)-cos.lib설치, 파일등록, 파일정보 조회 (0) | 2019.02.28 |