javaweb . 页面登出 操作
对于 监听器的使用
package com.itstaredu.bookstore.listener;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import javax.servlet.http.HttpSessionBindingEvent;
public class MySessionListener implements ServletContextListener,
HttpSessionListener, HttpSessionAttributeListener {
// Public constructor is required by servlet spec
public MySessionListener() {
}
// -------------------------------------------------------
// ServletContextListener implementation
// -------------------------------------------------------
@Override
public void contextInitialized(ServletContextEvent sce) {
/* This method is called when the servlet context is
initialized(when the Web application is deployed).
You can initialize servlet context related data here.
*/
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
/* This method is invoked when the Servlet Context
(the Web application) is undeployed or
Application Server shuts down.
*/
}
// -------------------------------------------------------
// HttpSessionListener implementation
// -------------------------------------------------------
@Override
public void sessionCreated(HttpSessionEvent se) {
/* Session is created. */
ServletContext sc = se.getSession().getServletContext();
Object count = sc.getAttribute("count");
if (count == null) {
sc.setAttribute("count", 1);
} else {
sc.setAttribute("count", (Integer) count + 1);
}
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
/* Session is destroyed. */
ServletContext sc = se.getSession().getServletContext();
sc.setAttribute("count", (Integer) (sc.getAttribute("count")) - 1);
}
// -------------------------------------------------------
// HttpSessionAttributeListener implementation
// -------------------------------------------------------
@Override
public void attributeAdded(HttpSessionBindingEvent sbe) {
/* This method is called when an attribute
is added to a session.
*/
}
@Override
public void attributeRemoved(HttpSessionBindingEvent sbe) {
/* This method is called when an attribute
is removed from a session.
*/
}
@Override
public void attributeReplaced(HttpSessionBindingEvent sbe) {
/* This method is invoked when an attibute
is replaced in a session.
*/
}
}
跳转到登出页面时候,无论是分发 或是 重定向,服务器会判定该用户的再一次访问,所以把对session的销毁放在最后面
package com.itstaredu.bookstore.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
/**
* @author
*/
public class LogoutServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
// go to login page
System.out.println("logout");
System.out.println(session.getServletContext().getAttribute("count"));
request.getRequestDispatcher("/login.jsp").forward(request, response);
session.invalidate();
}
}

浙公网安备 33010602011771号