JavaWeb中session是一个极其重要的概念,之前只是知道有这个东西,没有深入了解它。
契入方式:JavaWeb技术内幕中,有一个章节讲解Session使用。
1.session避免表单重复提交
文章链接:https://www.cnblogs.com/xdp-gacl/p/3859416.html
首先session是存在服务器端内存中的,session的清理是需要服务器清理(在tomcat或者其他服务器中可以配置)或者你手动清理session.invalidate()。
其次博主的思路是,JSP页面不能让浏览器直接访问,需要经过一个产生令牌的servlet之后跳转过去,也就是当你能访问这个JSP页面的时候,session域中有一个token是,JSP的隐藏域也有一个token两者是对应的。如果你在去开一浏览器,再次能访问到JSP页面的时候,servlet又会产生另外的令牌了,所以在这种一对一的机制下,保证了不能重复提交。(servlet判断完是否重复提交,最好能立马移除token,不然还没有移除的时候,客户端那边儿的请求又来了,就又能匹配了,产生了重复提交)
但这种解决方案的失败点在于:必须访问同样的web服务器节点才可以保证JSP页面提交过来的token和原来服务器生成的token能够匹配。
产生原因是:session是存在于服务器内存中的。
进阶:
如果有一种机制可以解决多服务器节点的数据共享,存在这样一个域那就可以解决了。--- 集群中服务器session共享
2.系统在线人数动态更新
网友评论