liguofeng29’s blog

個人勉強用ブログだっす。

Servlet - HttpSessionListenerとHttpSessionAttributeListener

二つのListenerを一つのクラスに記述する。

 

HttpSessionListener

HttpSessionAttributeListener

 

HttpSessionListenerImp .java
 
 
 
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
 
@WebListener
public class HttpSessionListenerImp implements HttpSessionListener,
HttpSessionAttributeListener {
 
// session開始
@Override
public void sessionCreated(HttpSessionEvent arg0) {
System.out.println("セッション開始しました。");
HttpSession se = arg0.getSession();
if (se.isNew()) {
System.out.println("新規セッションです。");
}
 
System.out.println("セッションID : " + se.getId());
}
 
// session破棄
@Override
public void sessionDestroyed(HttpSessionEvent arg0) {
System.out.println("セッションを破棄しました。");
}
 
// session属性追加
@Override
public void attributeAdded(HttpSessionBindingEvent arg0) {
System.out.println("セッション属性を追加しました。");
 
}
 
// session属性削除
@Override
public void attributeRemoved(HttpSessionBindingEvent arg0) {
System.out.println("セッション属性を削除しました。");
 
}
 
// session属性置換
@Override
public void attributeReplaced(HttpSessionBindingEvent arg0) {
System.out.println("セッション属性を置換しました。");
 
}
}
 
 
SessionListenerServlet.java
 
 
 
import java.io.IOException;
import java.io.PrintStream;
 
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
@WebServlet(urlPatterns="/sessionListenerServlet")
public class SessionListenerServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
 
    protected void service(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
 
    HttpSession se = request.getSession();
 
    se.setAttribute("name", "alex");
    se.setAttribute("name", "john");
    se.removeAttribute("name");
 
        // requestの文字コード
        request.setCharacterEncoding("UTF-8");
 
        // set responce contecTtype
        response.setContentType("text/html;charset=UTF-8");
 
        // output stream
        PrintStream out = new PrintStream(response.getOutputStream());
 
        out.println("<html>");
        out.println("<title>");
        out.println("it is change session attribute servlet.");
        out.println("</title>");
        out.println("<br/>");
        out.println("セッションリスナーテストServletです。");
        out.println("</html>");
    }
}
 
 

 

 

初回Servletアクセス時出力メッセージ
セッション開始しました。
新規セッションです。
セッションID : 1589DC68B3CDDC866553F74501212B10
セッション属性を追加しました。
セッション属性を置換しました。
セッション属性を削除しました。
 
2回目以降Servletアクセス時出力メッセージ
セッション属性を追加しました。
セッション属性を置換しました。
セッション属性を削除しました。