博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
会话管理
阅读量:5302 次
发布时间:2019-06-14

本文共 1935 字,大约阅读时间需要 6 分钟。

HttpSession对象可以保存同一个客户多个请求的会话状态

容器如何知道客户是谁?

    通过唯一的会话ID

怎样得到会话?

 

[java]
  1. HttpSession session = request.getSession(); 
HttpSession session = request.getSession();

 

如果找到与该请求匹配的会话,返回会话,如果没有,创建一个新会话

客户和容器如何交换会话ID信息?

    通过cookie,如果客户端cookie被禁用,则采用URL重写

怎样知道会话是已经存在,还是刚刚创建?

 

[java]
  1. HttpSession session = request.getSession(); 
  2. if (session.isNew) { 
  3.     // is a new session  
HttpSession session = request.getSession();if (session.isNew) {    // is a new session}

如果只想要一个现有的会话呢?

 

 

[java]
  1. HttpSession session = request.getSession(false); 
  2. if (session == null) { 
  3.     //如果不存在,返回null  
HttpSession session = request.getSession(false);if (session == null) {    //如果不存在,返回null}

只有告诉响应要对URL编码,URL重写才能奏效

 

 

[java]
  1. response.encodeURL("/BeerTest.do");//向这个URL增加额外的会话信息 
response.encodeURL("/BeerTest.do");//向这个URL增加额外的会话信息

要使用URL重写,页面必须是动态生成的,静态HTML页面不能URL重写。

 

URL重写只有响应有关

会话的三种死法:

    1.超时     2.在会话上调用invalidate()     3.应用结束(崩溃或取消部署)

如何设置会话超时?

    1.DD中配置

 

[html]
  1. <session-config> 
  2.     <session-timeout>15</session-timeout> 
  3. </session-config> 
15

单位是分钟

 

    2.设置特定会话的超时(不影响其他会话)

 

[java]
  1. sesson.setMaxInactiveInterval(20 * 60); 
sesson.setMaxInactiveInterval(20 * 60);

单位是秒

 

使用cookie

 

[java]
  1. // 创建一个新cookie  
  2. Cookie cookie = new Cookie("username", username); 
  3.  
  4. // 设置一个cookie在客户端存活多久  
  5. cookie.setMaxAge(30 * 60); // 如果是-1,那么浏览器退出时cookie消失  
  6.  
  7. // 把cookie发送到客户  
  8. response.addCookie(cookie); 
  9.  
  10. // 从客户请求得到cookie  
  11. Cookies[] cookies = request.getCookies(); 
  12. for (Cookie cookie : cookies) { 
  13.     if (cookie.getValue().equals("username")) { 
  14.         // do something  
  15.     } 
// 创建一个新cookieCookie cookie = new Cookie("username", username);// 设置一个cookie在客户端存活多久cookie.setMaxAge(30 * 60); // 如果是-1,那么浏览器退出时cookie消失// 把cookie发送到客户response.addCookie(cookie);// 从客户请求得到cookieCookies[] cookies = request.getCookies();for (Cookie cookie : cookies) {    if (cookie.getValue().equals("username")) {        // do something    }}

没有得到一个cookie的方法,只能得到cookie数组,遍历操作你想要的cookie

转载于:https://www.cnblogs.com/szgzwc/archive/2012/11/08/2760912.html

你可能感兴趣的文章
python tkinter GUI绘制,以及点击更新显示图片
查看>>
HDU4405--Aeroplane chess(概率dp)
查看>>
CS0103: The name ‘Scripts’ does not exist in the current context解决方法
查看>>
20130330java基础学习笔记-语句_for循环嵌套练习2
查看>>
Spring面试题
查看>>
窥视SP2010--第一章节--SP2010开发者路线图
查看>>
MVC,MVP 和 MVVM 的图示,区别
查看>>
C语言栈的实现
查看>>
代码为什么需要重构
查看>>
TC SRM 593 DIV1 250
查看>>
SRM 628 DIV2
查看>>
2018-2019-2 20165314『网络对抗技术』Exp5:MSF基础应用
查看>>
Python-S9-Day127-Scrapy爬虫框架2
查看>>
SecureCRT的使用方法和技巧(详细使用教程)
查看>>
右侧导航栏(动态添加数据到list)
查看>>
81、iOS本地推送与远程推送详解
查看>>
虚拟DOM
查看>>
自建数据源(RSO2)、及数据源增强
查看>>
BootStrap2学习日记2--将固定布局换成响应式布局
查看>>
关于View控件中的Context选择
查看>>