2013년 11월 3일 일요일

[자바서블릿]Java Servlet Session Binding, 서블릿세션바인딩예제 가끔은 세션에 어떤 값이 바인딩 되거나 해제될 때 어떤일을 하고 싶을 때...

 [자바서블릿]Java Servlet Session Binding, 서블릿세션바인딩예제
 
가끔은 세션에 어떤 값이 바인딩 되거나 해제될 때 어떤일을 하고 싶을 때가 있을 것이다. 예를들면 중복로그인 체크등...
 
- javax.servlet.http.HttpSessionBindingListener Interface
 
몇몇객체가 세션에 바인딩 되거나, 해제될때 어떤 행위등을 하고자 할때 사용
 
valueBound(HttpSessionBindingEvent event) Method
리스너가 세션에 바인딩 될때 호출됨
 
valueUnbound(HttpSessionBindingEvent event) Method
리스너가 세션으로 부터 해제시 호출된다

- javax.servlet.http.HttpSessionBindingEvent Class
 
getName Method를 이용해 바인딩된 객체에서의 이름에 접근할수 있도록 해줌
 
public String  HttpSessionBindingEvent.getName()
바인딩된 객체에서의 이름에 접근할수 있도록 해줌
 
public String  HttpSessionBindingEvent.getSession()
리스너가 바인딩된 HttpSession 객체에 접근
 

아래 예제를 보자.
 
import java.io.*;
import javax.servlet.*;import javax.servlet.http.*;
public class SessionBinding extends HttpServlet {   
  public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {

    res.setContentType("text/html; charset=euc-kr");    PrintWriter out = res.getWriter();
    //현재 세션 객체를 얻음
    HttpSession session = req.getSession(true);
    session.putValue("Your Name", new BindListener(getServletContext(),out));
    //session.putValue("name", "오엔제이오라클자바커뮤니티");
 session.removeValue("Your Name");   
  }
 
 class BindListener implements HttpSessionBindingListener {

    ServletContext context;
 PrintWriter out = null;
    public BindListener(ServletContext context, PrintWriter out) {
      this.context = context;

       this.out = out;
    }
    //valueBound를 구현,c:\javawebser2.0\logs\javawebserver\webpageservice\event_log file에 로그기록
    public void valueBound(HttpSessionBindingEvent event) {  
      context.log("BOUND as " + event.getName() + " to " + event.getSession().getId());
   out.println("BOUND as " + event.getName() + " to " + event.getSession().getId() + "<br>");
    }
  
    //valueUnbound를 구현,c:\javawebser2.0\logs\javawebserver\webpageservice\event_log file에 로그기록
    public void valueUnbound(HttpSessionBindingEvent event) {
      context.log("UNBOUND as " + event.getName() + " from " + event.getSession().getId());
      out.println("UNBOUND as " + event.getName() + " from " + event.getSession().getId()+ "<br>");
    }
  }

댓글 없음:

댓글 쓰기