- <李>
钝化
李>指将HttpSession对象序列化到硬盘中,一般钝化发生在服务器停止,服务器停止时会自动将HttpSession对象序列化到硬盘,这个事我们称为钝化。
- <李>
活化
李>将硬盘中HttpSession对象加载进内存中,一般在服务器启动时,会自动将硬盘中HttpSession对象重新加载进内存,这一过程我们成为活化。
- <李>
钝化指将内存中的对象写到硬盘中,
李> <李>一个类要想可以序列化到硬盘中必须要实现. io .可序列化的接口
李> <李>这个类中的所有属性也需要实现. io .可序列化的接口
李> <李>如果服务器的访问量较大,那么服务器会有大量的HttpSession对象存在,
李>但是这些对象并不是都处于一个活跃的状态,但是这些不活跃也会存在于内存中
这样会大量占用内存,这时我们就希望将这些闲置的对象写入硬盘中,在用户需要使用会话在加载进内存。
在上下文。xml文件中可以加入如下内容
maxIdleSwap:指会话的最大闲置时间,超过该时间以后,会话将会自动钝化。
目录:钝化到硬盘中的目录
会话会钝化到tomcat服务器的工作目录中
表单的重复提交
引用><李>
表单重复提交指的是同一个表单相同的内容多次提交请求
李> <李>表单重复提交的危害:
李>,,,, 1。表单重复提交,都是重复的数据,会增加数据库中垃圾数据。
,,, 2。无形中增加了服务器压力。
<李>
表单重复提交的几种情况:
李>
<李>
产生问题的根本原因:
李>我们在Servlet使用的转发的形式跳转到成功页面的,所以整个过程中浏览器只发送了一次请求,当我们在成功页面刷新时,实际是将上次的请求又发送了一遍,所以造成了重复提交。
<李>
解决:
李>不使用转发,而是使用重定向
重定向发了两次请求,我们再次刷新,刷新的第二个请求,而不是第一个。
<李>
产生问题的根本原因:
李>就是表单的提交按钮可以点击多次
<李>
解决:
李>使表单的提交按钮只能点一次,点完一次以后按钮将变为不可用的状态。
,,,窗口。onload=function () {
,,,,,,,,//点击完提交按钮以后,让按钮变为一个不可用的状态
,,,,,,,,//获取按钮对象
,,,,,,,, var btn=. getelementbyid (btn);
,,,,,,,,//为按钮绑定一个单击响应函数
,,,,,,,, btn。onclick=function () {
,,,,,,,,//设置按钮为不可用状态
,,,,,,,,。禁用=true。
,,,,,,,,//如果将按钮设置为不用状态,那么表单也将不会提交
,,,,,,,,//我们需要手动提交表单
,,,,,,,, this.parentNode.submit ();
,,,,,,,,},,
,,,,},
<李>
产生问题的根本原因:
李>服务器端Servlet不的能区分两次请求是不是重复提交的内容
<李>
解决:
李>在Servlet中,我们需要在处理请求之前,先来检查表单是否是重复提交。
使用令牌解决这个问题
标记就是令牌意思
所谓的令牌就是服务器在处理用户请求之前,先检查牌是否正确,如果牌正确那服务器正常处理请求,如果令牌不正确服务器不处理请求。
我们的令牌是一个一次性的令牌,只能使用一次。
流程:
1。创建一个令牌,要求唯一,不能重复(UUID),并在服务器中保存牌。
2。放入到浏览器的表单中。
3。浏览器提交表单时,会同时将牌一起提交。
4。服务器在处理请求之前要检查令牌是否有效。
5。销毁牌。
,
验证码使用流程
引用>
会话的活化和钝化,表单重复提交,验证码使用流程