Java web基础学习笔记之会话管理

1、会话管理的三种解决方案

(1)使用隐藏域

在JSP中将input标签的type属性值设定为hidden,即生成一个隐藏表单域。再将会话的唯一标识记录到隐藏域中的value属性中,并设定name属性值。当表单提交时,会话标识也被提交到服务端,服务端根据它找到对应的会话对象。使用隐藏域时,需要在每个页面中都包含会话标识表单,这样才能在许多页面跳转之间保存会话,并对他进行管理。

(2)使用Cookie

原理是在服务端保存的会话对象中设定会话的唯一标识,客户端将会话标识保存在cookie中,当浏览器发起请求时,从cookie中取得会话标识并发送给服务器,服务器在收到请求后,根据发送过来的会话标识查找到对应的会话对象,这样服务端就清楚当前是哪个客户端在连接,并且可以从会话中获得信息。

(3)使用URL重写

在URL地址的末尾添加会话标识,改写了原来的URL地址。用于客户端不支持Cookie的情况下。重写方法如下:
response.encodeURL("login.jsp");

或者:
response.sendRedirect(response.encodeRedirectURL("login.jsp"));

如果客户端支持Cookie,则生成的URL不变;如果不支持,生成的URL中会带有jsessionid字符串的地址。


2、会话管理的主要任务

生成唯一的会话标识、存储会话对象、从web容器中取得当前请求的会话、回收空闲会话。


3、获取用户的session对象

HttpSession session = request.getSession();      //获取Session对象

Session.setAttribute("username","Shana");         //设置Session中的属性


4、在web项目中禁用cookie

(1)对单个项目禁止

在web项目的WebRoot目录中的META-INF文件夹下,打开或者创建context.xml文件,编辑内容:

<?xml version="1.0" encoding="UTF-8"?>

<Context cookies="false" path="/ch06">

</Context>

(2)禁止部署在Tomcat服务器里的所有web项目

打开Tomcat的配置文件context.xml,编辑内容:

<?xml version="1.0" encoding="UTF-8"?>

<Context cookies="false" >

......

</Context>


5、HttpSession的有效期设定方法

(1)调用Session的setMaxInactiveInterval(long interval)进行设定

(2)在web.xml中修改,例如:
<session-config>

<!-- 会话超时时长为30分钟  -->

<session-timeout>30</session-timeout>

</session-config>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值