Java web基础学习笔记之会话管理
2017-08-15 20:26
441 查看
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>
(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>
相关文章推荐
- JavaWeb基础—会话管理之Cookie
- 黑马程序员—Java基础学习笔记之7K月薪面试题破解_交通灯管理系统
- 学习笔记之javaweb基础:http协议&html基础
- 【Java学习-J.160331.0.5】笔记4-Linux基础-管理本地Linux用户和组
- 【JavaWeb】JSP学习笔记(二)JavaBean相关|Model1|状态管理|
- 【JavaWeb】JSP学习笔记(一)环境|目录|JSP基础语法|内置对象
- 学习笔记_java web——JSP基础
- Javaweb、javaEE学习笔记基础知识
- Javaweb-xml基础1(学习笔记)
- Java中执行存储过程和函数(web基础学习笔记十四)
- 【Java学习-J.160406.0.6】笔记5-Linux基础-linux进程管理
- 学习笔记之javaweb基础:jsp基本语法,内置对象,对JavaBean的操作语法
- 【Todo】Java学习笔记 100==100 & Reflection API & Optional类详解 & DIP、IoC、DI & token/cookie/session管理会话方式
- 学习笔记之javaweb基础:JSP的HelloWorld及其运行原理
- Javaweb-xml基础3(学习笔记)
- Javaweb-xml基础2(学习笔记)
- Java Web 学习笔记之二:Java HttpURLConnection保持会话的方法
- Java学习笔记(七、网络编程基础)
- Java基础学习笔记
- 传智播客Java web之 会话与状态管理