Servlet入门3

Servlet入门3

会话

什么是 Session ?

​ "会话控制",Session 对象存储特定用户会话所需要的属性及配置信息。这样,用户在应用程序的 Web 页面之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个会话中一直存在下去,当用户请求来自应用程序的 Web 页面时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或者被放弃后,服务器将终止该对话。注意:会话状态只在支持 Cookie 的浏览器中保存。

通过 getSession() 函数来获取 Session,如果获取不到就创建一个新的

第一次发送请求,仅在 Response Head 会显示 Set Cookies:id
在 Request Head 中没有显示
第二次发送请求,就不在 Response Head 中显示 Set Cookie:id
在 Request Head 中有显示

Response Head 中的 Set Cookie 就是创建新 id 的标志

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取Session,如果获取不到,就创建一个新的
        HttpSession session = request.getSession();
        System.out.println("Session ID: " + session.getId());
    }

HTTP是无状态的

会话跟踪技术

客户端第一次发请求给服务器,服务器获取 session ,获取不到,则新建,然后响应给客户端
下次客户端给服务器发送请求时,救会把 session ID 带给服务器,服务器就能够获取到
服务器就判断本次请求和某次请求是同一客户端,从而能够区分开客户端

常用API:

​ request.getSession() -> 获取当前对话,没有就创建一个会话
​ request.getSession(true) -> 效果和不带参数相同
​ request.getSession(false) -> 获取当前会话,没有则返回null,不会新建对话
​ session.getId() -> 获取 id (全球唯一码)
​ session.isNew() -> 判断当前session是否是新的
​ session.getMaxInactiveInterval() -> session 的非激活间隔时长 默认1800s ,超时则会会话超时,重新登录
​ session.inactive() -> 强制性让会话失效
​ 等……

Session 保存作用域

session.setAttribute( key, value );
//表示相当前的 session 保存作用域,保存一个数据 value ,对应 key 值
session.getAttribute( key );
//从当前session保存作用域获取指定的key,可以获取对应的 value 值

Session 保存作用域是与具体某一个 Session 对应的

常用的API:

void session.setAttribute( key, value )
Object session.getAttribute( key )
void removeAttribute( key )

服务器内部转发以及客户端重定向

服务器端转发

request.getRequestDispatcher("……").forward( request,response );
一次响应的过程,对于客户而言,内部经过转发的次数,客户端未知
地址栏没有变化

客户端重定向

response.sendRedirect("……");
两次请求响应的过程,客户端一定知道请求 URL 有变化
地址栏有变化
302代码,表示客户端重定向

总结

服务器内部转发:客户端给组件1发送请求,执行 request.getRequestDispatcher( "Demo07" ).forward( request,response );
作用是把请求转给 demo07,然后 demo07 执行后响应给客户端

客户端重定向:客户端给服务器端组件1发送请求,执行 response.senfRedirevt("Demo07");
服务器会立即给客户端一个响应:请你立即给 Demo07 发请求
然后客户端会立即个 Demo07 发送请求

posted @ 2022-05-15 16:50  ppqppl  阅读(18)  评论(0编辑  收藏  举报