zoukankan      html  css  js  c++  java
  • 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 代码给到浏览器解析时

  • 相关阅读:
    Activity(二)
    channelartlist标签的使用
    把数据保存到数据库附加表 `dede_addonarticle` 时出错,请把相关信息提交给DedeCms官方。Duplicate entry '2' for key 'PRIMARY'
    TP5.0验证器使用方法
    TP5.0登录验证码实现
    dede列表页限制标题长度
    dede搜索页做法
    表单正则验证简便方法
    解决织梦dedecms文档关键字(自动内链)php5.5以上失效的问题 urf-8版本的
    织梦dede解决“更新数据库archives表时出错"方法
  • 原文地址:https://www.cnblogs.com/yslf/p/10749785.html
Copyright © 2011-2022 走看看