下面给大家带来的是和springboot session创建、销毁、超时、监听相关的内容,具体的一起来通过下面的文章来进行了解吧。
1、session创建
@GetMapping( "demo") public void demo(HttpServletRequest request) { HttpSession sessoin = request.getSession(); //这就是session的创建 session.setAttribute("username", "TOM"); //给session添加属性属性name: username,属性 value:TOM session.setAttribute("password", "tommmm"); //添加属性 name: password; value: tommmm System.out.println(session.geiId); }
HttpSession session=request.getSession(true); //true-假如,这个HTTP请求当中,存在session,则,能够直接通过getSession获取当前的session,假如,当前的请求当中,不存在session,那么,就会自动新建一个session。
HttpSession session=request.getSession(false);//false-只能获取当前请求当中的session,假如,没有也不能自动创建。
2、session获取属性
session.getAttribute("username"); session.getAttribute("password");
3、session,cookies超时设置
(1)在.yml里或者是.xml配置文件里
(2)在创建session的时候
session.setMaxInactiveInterval(30 * 60); //以秒为单位,也就是,在没有活动30分钟之后,session将失效
4、session监听
主要的话有3个接口,只要用这2个就够用了。
实现接口HttpSessionListener下的sessionCreated();//当session创建的时候,和sessionDestroyed();//当session被销毁或超时的时候,实现接口HttpSessionAttributeListener下的attributeAdded() //当给session添加属性的时候,attributeRemoved();和attributeReplaced();
下面是一个非常简单的实现在线人数统计的功能。
假如是想要更加深刻的了解session的工作机制,多执行几次session的监听代码,大家可以参考一下下面的代码:
@WebListener public class SessionListener implements HttpSessionListener, HttpSessionAttributeListener { public static final Logger logger = LoggerFactory.getLogger(SessionListener.class); @Override public void attributeAdded(HttpSessionBindingEvent httpSessionBindingEvent) { logger.info("--attributeAdded--"); HttpSession session = httpSessionBindingEvent.getSession(); logger.info("key----:" + httpSessionBindingEvent.getName()); logger.info("value---:" + httpSessionBindingEvent.getValue()); } @Override public void attributeRemoved(HttpSessionBindingEvent httpSessionBindingEvent) { logger.info("--attributeRemoved--"); } @Override public void attributeReplaced(HttpSessionBindingEvent httpSessionBindingEvent) { logger.info("--attributeReplaced--"); } @Override public void sessionCreated(HttpSessionEvent event) { logger.info("---sessionCreated----"); HttpSession session = event.getSession(); ServletContext application = session.getServletContext(); // 在application范围由一个HashSet集保存所有的session HashSet sessions = (HashSet) application.getAttribute("sessions"); if (sessions == null) { sessions = new HashSet(); application.setAttribute("sessions", sessions); } // 新创建的session均添加到HashSet集中 sessions.add(session); // 可以在别处从application范围中取出sessions集合 // 然后使用sessions.size()获取当前活动的session数,即为“在线人数” } @Override public void sessionDestroyed(HttpSessionEvent event) throws ClassCastException { logger.info("---sessionDestroyed----"); HttpSession session = event.getSession(); logger.info("deletedSessionId: " + session.getId()); System.out.println(session.getCreationTime()); System.out.println(session.getLastAccessedTime()); ServletContext application = session.getServletContext(); HashSet sessions = (HashSet) application.getAttribute("sessions"); // 销毁的session均从HashSet集中移除 sessions.remove(session); } }
关于springboot session创建、销毁、超时、监听的内容就给你介绍到这里啦!
你想要学习java吗?又或者是在java编程的过程中有遇到过什么难题吗?java项目中常见问题和解决方法,可以通过本站来进行了解哦。
推荐阅读: