第十四天(Session)
来源:互联网 发布:it行业发展前景 编辑:程序博客网 时间:2024/06/07 12:07
session通过SessionID来区分不同的客户,session是以cookie或URL重写为基础的,默认使用cookie来实现,系统会创造一个名为JSESSIONID的输出cookie,这称之为session cookie,以区别persistent cookies
通常看不到JSESSIONID,但是当把浏览器的cookie禁止后,web服务器会采用URL重写的方式传递Sessionid
HttpSession 生命周期
1.什么时候创建HttpSession对象
对于JSP:
若当前的JSP是客户端访问WEB应用的第一个资源,且JSP的page指定的session属性为false,则不会创建Httpsession对象
若当前JSP不是客户端访问WEB应用的第一个资源,且其他页面已经创建了一个HttpSession对象,则会返回一个会话的HttpSession对象,而不会创建一个新的
对于Servlet
若Servlet是客户端访问的第一个WEB应用资源,则只有调用了request.getSession()或request.getSession(true)才会创建HttpSession对象:request.getSession().setAttribute("name", value);
session="false" 当前页面禁用session隐含变量,但可以使用其他的显式的HttpSession对象
销毁HttpSession
1.程序调用HttpSession.invalidate()
2.距离上一次收到客户端发送的session id时间间隔超过了session的最大有效时间
3.服务器进程被停止
注意:关闭浏览器只会使存储在客户端浏览器内存中的session cookie失效,不会使服务端的session对象失效
HttpSession的相关API
1.获取Session对象 request.getSession() request.getSession(boolean create)
2.属性相关的setAttribute getAttribute removeAttribute
3.使HttpSession失效的invalidate()
4.设置最大时效的setMaxInactiveInterval
URL重写
Servlet规范中引入了一种补充的会话管理机制,它允许不支持Cookie的浏览器也可以与WEB服务器保持连续的会话
将会话标识号以参数形式附加在超链接的URL地址后面的技术称为URL重写
<a href="<%= response.encodeURL("login.jsp")%>" >重新登陆</a>
开发时建议编写绝对路径:request.getContextPath()
如何避免表单的重复提交:在表单中做一个标记,提交到Servlet时,检查标记是否存在且是否和预定义的标记一致,若一致则受理请求,并销毁标记,若不一致或没有标记,则直接显示相应信息:重复提交(Session配合隐藏域) 参看并使用TokenProcessor类
使用HttpSession实现验证码,基本原理和表单重复提交一致
在原表单页面 将随机字符串放入到session中 并放在隐藏域中(验证码为输入框) 提交表单
在目标的Servlet中,获取session和表单中的值 比较两个值 若一致,受理请求且把session域中属性清除
若不一致,则通过重定向的方式返回原表单页面
- 第十四天(Session)
- 第十四天
- 第十四天
- 第十四天
- 第十四天
- 第十四天
- 第十四天
- 第十四天
- 第十四天
- 世界杯第十四天
- 第十四天 工具
- 第十四天:听课笔记
- 第十四天:总结
- 第十四天总结0408
- 实习日记->第十四天
- java第十四天 泛型
- 程序学习第十四天
- 第十四天(內部類)
- 集成包 安装lnmp小结
- iOS 9之适配ATS
- 设置监听class改变事件,由原来的设置单个按钮点击触发方法onclick=“方法()”改为addEventListener
- Android博客周刊专题之#插件化开发#
- JDK之ArrayList源码解析
- 第十四天(Session)
- nignx的rpm方式安装
- git修改未push和已经push的注释信息
- 演示:纯CSS实现自适应布局表格
- Spark -2:下载安装
- XSS攻击平台
- mobile/移动端字体
- python 函数传参是传值还是传引用
- js实现点击按钮复制文本框中的内容