Session监听器

Session 内置对象的监听器

Demo: 监听 session 的状态
1.定义 session 内置对象的状态监听器

 1 public class SessionListener implements HttpSessionListener {
 2     @Override
 3     public void sessionCreated(HttpSessionEvent event) {
 4         System.out.println("创建 session 内置对象:" + event.getSession().getId());
 5     }
 6     @Override
 7     public void sessionDestroyed(HttpSessionEvent event) {
 8         System.out.println("销毁了 session 内置对象:" + event.getSession().getId());
 9     }
10 }

2.配置 session 内置对象的状态监听器

  <listener>
      <listener-class>com.sxt.mvcpro.listener.SessionListener</listener-class>
  </listener>

3.获取 session 内置对象

1 @SuppressWarnings("serial")
2 public class EmpServlet extends HttpServlet{
3     @Override
4     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
5         req.getSession();
6         System.out.println("访问了 servlet 方法");
7     }
8 }

4.销毁 session 内置对象

1 @SuppressWarnings("serial")
2 public class EmpServlet extends HttpServlet{
3     @Override
4     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
5         req.getSession().invalidate();
6     }
7 }

Demo: 监听 session 的属性
1.定义 session 内置对象的属性监听器

 1 1.定义 session 内置对象的属性监听器
 2 public class SessionAttributeListener implements HttpSessionAttributeListener {
 3     @Override
 4     public void attributeAdded(HttpSessionBindingEvent event) {
 5         System.out.println("增加属性时候触发: " + event.getName() + ":" + event.getValue());
 6     }
 7     @Override
 8     public void attributeRemoved(HttpSessionBindingEvent event) {
 9         System.out.println("删除属性时候触发: " + event.getName() + ":" + event.getValue());
10     }
11     @Override
12     public void attributeReplaced(HttpSessionBindingEvent event) {
13         System.out.println("替换属性时候触发: " + event.getName() + ":" + event.getValue());
14     }
15 }

2.配置 session 内置对象的属性监听器

1   <listener>
2       <listener-class>com.sxt.mvcpro.listener.SessionAttributeListener</listener-class>
3   </listener>

3.测试监听器

 1 @SuppressWarnings("serial")
 2 public class EmpServlet extends HttpServlet{
 3     @Override
 4     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
 5         HttpSession session = req.getSession();
 6         //增加属性
 7         session.setAttribute("name", "李四");
 8         //替换属性
 9         session.setAttribute("name", "张三");
10         //删除属性
11         session.removeAttribute("name");
12     }
13 }

Demo: 访问 jsp 页面的时候为什么会触发 sessionCreated 方法?
  访问 jsp 页面的时候容器会将 jsp 页面转换成一个特殊的 Servlet,
  先将其转换为对应的*.java 源码(源码会调用sessionCreated ), 之后再将源码编译成对应的*.class,
  之后发那会给浏览器之前会被解析为 html 代码给到浏览器解析时

转载于:https://www.cnblogs.com/yslf/p/10749785.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值