Session什么意思?一文带你超详细了解Session的原理及应用

④. 并不是关闭了浏览器就销毁了 .
回到顶部
使用
获取对象
HttpSession session = request.getSession();
是我们的四大域对象之一 。用来保存数据 。常用的方法
session.setAttribute("user", new Object()); session.getAttribute("user");session.setMaxInactiveInterval(60*60*24);//秒为单位session.invalidate();//使 session 不可用
时 效
①、基本原则
对象在服务器端不能长期保存 , 它是有时间限制的 , 超过一定时间没有被访问过的对象就应该释放掉 , 以节约内存 。所以的有效时间并不是从创建对象开始计时 , 到指定时间后释放——而是从最后一次被访问开始计时 , 统计其“空闲” 的时间 。
②、默认设置
在全局 web.xml 中能够找到如下配置:
30
③、手工设置
session.setMaxInactiveInterval(int seconds) session.getMaxInactiveInterval()
④、强制失效
session.invalidate()
⑤、可以使对象释放的情况
对象空闲时间达到了目标设置的最大值 , 自动释放
对象被强制失效
Web 应用卸载服务器进程停止
URL重写
在整个会话控制技术体系中 , 保持的值主要通过实现 。但在浏览器端可能会被禁用 , 所以我们还需要一些备用的技术手段 , 例如:URL 重写 。
1)URL 重写其实就是将的值以固定格式附着在 URL 地址后面 , 以实现保持
【Session什么意思?一文带你超详细了解Session的原理及应用】 , 进而保持会话状态 。这个固定格式是:URL;=
例如:
targetServlet;jsessionid=F9C893D3E77E3E8329FF6BD9B7A09957
2) 实 现 方 式 :
response.encodeURL(String)response.encodeRedirectURL(String)
例如:
//1.获取Session对象HttpSession session = request.getSession();//2.创建目标URL地址字符串String url = "targetServlet";//3.在目标URL地址字符串后面附加JSESSIONID的值url = response.encodeURL(url);//4.重定向到目标资源response.sendRedirect(url);
的活化和钝化
机制很好的解决了的不足 , 但是当访问应用的用户很多时 , 服务器上就会创建非常多的对象 , 如果不对这些对象进行处理 , 那么在失效之前 , 这些一直都会在服务器的内存中存在 。那么就 , 就出现了活化和钝化的机制 。
1) 钝化:
在一段时间内没有被使用时 , 会将当前存在的对象序列化到磁盘上 , 而不 再 占 用 内 存 空 间。
2) 活化:
被钝化后 , 服务器再次调用对象时 , 将对象由磁盘中加载到内存中使用 。
如果希望域中的对象也能够随钝化过程一起序列化到磁盘上 , 则对象的实现类也必须实现 java.io. 接口 。不仅如此 , 如果对象中还包含其他对象的引用 , 则被关联的对象也必须支持序列化 , 否则会抛出异常:java.io.tion
回到顶部
表单重复提交问题
什么是表单重复提交?
同一个表单中的数据内容多次提交到服务器 。危害:
服务器重复处理信息 , 负担加重 。
如果是保存数据可能导致保存多份相同数据 。
推荐博客
程序员写代码之外 , 如何再赚一份工资?
几种重复提交
1)提交完表单后 , 直接刷新页面 , 会再次提交 。
- 根本原因: 处理完请求以后 , 直接转发到目标页面 。
- 这样整一个业务 , 只发送了一次请求 , 那么当你在浏览器中点击刷新按钮或者狂按 f5 , 会一直都会刷新之前的请求