监听器--监听session创建后计数(servletContext)
2017-05-25 15:38
375 查看
这个servlet用于预置参数
这个servlet用于创建session
测试结果:(l两个不同的浏览器访问--创建2个session和销毁2个session)
请求路径:http://localhost:8080/jsp6/test http://localhost:8080/jsp6/test http://localhost:8080/jsp6/logout http://localhost:8080/jsp6/logout
输出:
监听创建session
当前人数:1
监听创建session
当前人数:2
监听销毁session
当前人数:1
销毁了session ID为:703E789A938E1029007DCE9C4C3BB67E
监听销毁session
当前人数:0
销毁了session ID为:AB27D24FB29EE71825E4E44A430708A1
注意事项:servletContext可以用于读取常量(web.xml) getInitParameter() 方法
若要读取变变量,则声明一个InitServlet,在init()方法中初始化servletContext中的参数
public void init() throws ServletException {
ServletContext context = getServletContext();
context.setAttribute("count", 0);
}
此时其他servlet可以使用setAttribute()和getAttribute()对该变量进行读取可修改读取变量和常量的方式不能混用
package web; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; //初始化全局变量 public class InitServlet extends HttpServlet { @Override public void init() throws ServletException { ServletContext context = getServletContext(); context.setAttribute("count", 0); } }
这个servlet用于创建session
package web; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class TestServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { //发送请求创建自动request,启动request监听器 HttpSession session = req.getSession();//创建session } }这个servlet用于销毁session
package web; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class LogoutServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { //销毁session HttpSession session = req.getSession(); session.invalidate(); System.out.println("销毁了session ID为:"+session.getId()); } }监听器如下:监听session
package web; import javax.servlet.ServletContext; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; public class CountListener implements HttpSessionListener{ private int count; public void sessionCreated(HttpSessionEvent se) { System.out.println("监听创建session"); HttpSession session = se.getSession(); ServletContext sct = session.getServletContext(); count = (Integer)(sct.getAttribute("count")); sct.setAttribute("count", ++count); System.out.println("当前人数:"+count); } public void sessionDestroyed(HttpSessionEvent se) { System.out.println("监听销毁session"); HttpSession session = se.getSession(); ServletContext sct = session.getServletContext(); count = (Integer)sct.getAttribute("count"); if(count > 0){ sct.setAttribute("count", --count); } System.out.println("当前人数:"+count); } }配置文件:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <display-name>jsp6</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <!-- 监听器 --> <listener> <listener-class>web.CountListener</listener-class> </listener> <!-- 将全局参数在InitServlet中初始化,方便其他调用和修改 --> <servlet> <servlet-name>init</servlet-name> <servlet-class>web.InitServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet> <servlet-name>test</servlet-name> <servlet-class>web.TestServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>test</servlet-name> <url-pattern>/test</url-pattern> </servlet-mapping> <servlet> <servlet-name>logout</servlet-name> <servlet-class>web.LogoutServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>logout</servlet-name> <url-pattern>/logout</url-pattern> </servlet-mapping> </web-app>
测试结果:(l两个不同的浏览器访问--创建2个session和销毁2个session)
请求路径:http://localhost:8080/jsp6/test http://localhost:8080/jsp6/test http://localhost:8080/jsp6/logout http://localhost:8080/jsp6/logout
输出:
监听创建session
当前人数:1
监听创建session
当前人数:2
监听销毁session
当前人数:1
销毁了session ID为:703E789A938E1029007DCE9C4C3BB67E
监听销毁session
当前人数:0
销毁了session ID为:AB27D24FB29EE71825E4E44A430708A1
注意事项:servletContext可以用于读取常量(web.xml) getInitParameter() 方法
若要读取变变量,则声明一个InitServlet,在init()方法中初始化servletContext中的参数
public void init() throws ServletException {
ServletContext context = getServletContext();
context.setAttribute("count", 0);
}
此时其他servlet可以使用setAttribute()和getAttribute()对该变量进行读取可修改读取变量和常量的方式不能混用
相关文章推荐
- 监听器监听服务器session的创建
- Servlet事件监听器、监听servletContext域对象创建和销毁、监听三个域对象属性变化
- Strtus2 session 监听器 监听用户在线状态
- Servlet事件监听器、监听servletContext域对象创建和销毁、监听三个域对象属性变化
- 使用HttpSessionListener接口监听Session的创建和失效
- 监听session会话创建与销毁
- Servlet 中 session 的创建、销毁及监听
- servlet监听对session监听器
- 使用HttpSessionListener接口监听Session的创建和失效
- 使用HttpSessionListener接口监听Session的创建和失效
- 使用HttpSessionListener接口监听Session的创建和失效
- [原创]java WEB学习笔记47:Servlet 监听器简介, ServletContext(Application 对象), HttpSession (Session 对象), HttpServletRequest (request 对象) 监听器,利用listener理解 三个对象的生命周期
- Servlet事件监听器、监听servletContext域对象创建和销毁、监听三个域对象属性变化
- jsp session的创建和销毁javax.servlet.http.HttpSessionListener 监听
- 使用HttpSessionListener接口监听Session的创建和失效
- httpSessionListener 监听session 创建与销毁
- 使用HttpSessionListener接口监听Session的创建和失效
- 使用HttpSessionListener接口监听Session的创建和失效
- 监听session创建和销毁
- 监听request session servletContext的创建与销毁