JavaWeb

JavaWeb-021-HttpSession概述

2017-12-06  本文已影响3人  53b3f4658edc

Session机制

微信公众号:JavaWeb架构师

保存session id的几种方式


Session cookie


测试代码

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Insert title here</title>
    </head>
    
    <body>
<!--  
public interface javax.servlet.http HttpSession
提供一种方式,跨多个页面请求或对 Web 站点的多次访问标识用户并存储有关该用户的信息。
servlet 容器使用此接口创建 HTTP 客户端和 HTTP 服务器之间的会话。会话将保留指定的时间段,
跨多个连接或来自用户的页面请求。一个会话通常对应于一个用户,该用户可能多次访问一个站点。
服务器能够以多种方式维护会话,比如使用 cookie 或重写 URL。
此接口允许 servlet查看和操作有关某个会话的信息,比如会话标识符、创建时间和最后一次访问时间
将对象绑定到会话,允许跨多个用户连接保留用户信息当应用程序将对象存储到会话中或从会话中移除
对象时,该会话将检查对象是否实现了 HttpSessionBindingListener。如果实现了,则 servlet 将通
知该对象它已经被绑定到会话,或者已从会话中取消对它的绑定。通知是在绑定方法完成后发送的。对
于无效或过期的会话,通知是在会话已经无效或过期之后发送的。
当容器使用分布式容器设置在 VM 之间迁移会话时,所有实现 HttpSessionActivationListener 接口
的会话属性都会得到通知。
servlet 应该能够处理客户端选择不加入会话的情况,比如故意关闭 cookie 时。在客户端加入会话前,
isNew 一直返回 true。如果客户端选择不加入会话,则 getSession 将对每个请求返回一个不同的会
话,并且 isNew 将总是返回 true。
会话信息的范围仅限于当前 Web 应用程序 (ServletContext),因此存储在一个上下文中的信息在另一
个上下文中不是直接可见的。
-->
        <%
            out.print(session.getId() + "<br />");
        /*  
        持久化session:
        1.浏览器第一次访问,session去setCookie,发送给浏览器
        2.浏览器带回来上面的Cookie:JSESSIONID
        3.通过普通的Cookie(persistent cookies),去持久化
        4.浏览器关闭之后打开,找到持久化的Cookie,发送给服务器(默认的session Cookie会在浏览器关闭之后消失)
        */
        Cookie cookie = new Cookie("JSESSIONID",session.getId());
        cookie.setMaxAge(30);   //30s后消失
        response.addCookie(cookie);
        %>
        
    </body>
</html>

运行结果:


微信公众号:JavaWeb架构师

其它

关注下方公众号,回复:javaweb_course.code
完整教程PDF版本下载
上一篇下一篇

猜你喜欢

热点阅读