对重复提交问题解决的一些思路和想法

对重复提交问题解决的一些思路和想法

ID:35332789

大小:60.88 KB

页数:5页

时间:2019-03-23

对重复提交问题解决的一些思路和想法_第1页
对重复提交问题解决的一些思路和想法_第2页
对重复提交问题解决的一些思路和想法_第3页
对重复提交问题解决的一些思路和想法_第4页
对重复提交问题解决的一些思路和想法_第5页
资源描述:

《对重复提交问题解决的一些思路和想法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、对重复提交问题解决的一些思路和想法目前,随着信息技术的快速发展,BS架构的程序越来越普及,应用越来越广泛。同吋随之而来的问题也很多,最近做到一个后台管理程序时,考虑到重复登陆的问题,于是开始找解决办法,但是网上没有给出一个确切可行的方案。经过一翻思考终于有了些须想法。首先这里用到了SESSION和APPLICATION的一些知识,当然也可以用COOKIE解决但是,有缺陷例如COOKIE被禁用了还得提示客户打开限制,这样很可能让客户失去自己的耐心,但也不失为一条解决之道。废话不多说了直接上思路和代码。思路

2、:我们在做登陆的时候大多数都是将用户信息放入SESSION中以保存用户的登陆状态。因此重复提交问题就变成了验证相应的SESSION屮是否包含了登录时用到的用户信息。这里就出现了一个问题了,就是如何找到对应的SESSION对象呢。大家都知道,SESSION是浏览器访问服务器时服务器端SERVLET白主创建的拥有唯一SESSIONID的SESSION对象。也就是说,每个浏览器在访问服务器时都会创建SESSION,也就是说我机器上有火狐和ie,用这两个浏览器访问同一服务器的时候,该服务器就会对我这个用户,针对

3、两款不同的浏览器创建两个SESSION对象,这样我分别在两款浏览器上登录的时候就会相应的在两个SESSION对象中保存我的用户信息,也就是重复登录了(当然这里是没有解决问题之前)。同吋解决问题之前同一个浏览器在访问服务器吋也会有创建两个SESSION对象的情况,例如:我用ie登录了浏览器,然后我关闭了所有了浏览器再次登录服务器相应的我的用户信息就在服务器中有两个对应的SESSION对象保存了。不管我的登录状态时什么样的,同一账户理论上可以登录n次。这就造成了极大的资源浪费,而且有着线程安全的问题,同时也

4、让系统变得更加不稳定。解决之道:•使用COOKIE解决(此方法只支持同种浏览器,或者说cookie保存在同一位置的浏览器,不过cookie保存位置可以设置,同志们关注一下,我提供的有相关图表)当用户登录时会得到相应的SESSION对象,我们将SESSION相应的唯一的SESSIONID获取并保存在cookie文件(cookie保存在客户端哦,大家都是知道的哈)中,这样有用户访问的时候我们先查cookie文件看看是否能获取相应的SESSIONID从而得到SESSION对象,如杲我们已尽登录,那么SESSI

5、ON屮就会有相应的用八信息,如果没有说明SESSION已经过期重新创建session对彖,将Sessionld保存到指定的Cookie文件,然后重新登录即可。代码:Cookiecookiename=newCookie("Patametei'","Value");//cookie的仓ij建例如:<%//每次登陆成功后用sessionld标识userid并放入cookie文件中Stringsessionld=session.getTd();CookienewCookie=newCookie(sessionT

6、d,userid);//用sessionTd标识useridresponse.addCookie(newCookie);%>这里涉及到cookie的创建和读取,就多一点废话。JSP是调用Cookie对象相应的构造函数Cookie(name,value)用合适的名字和值來创建Cookie,然后Cookie"J以通过IlttpServletResponse的addCookie方法加入到Set-Cookie应答头,本例中Cookie对彖有两个字符串参数:sessionld,sessionldo注意,名字和值都

7、不能包含空白字符以及下列字符:@:;?,〃/[]()二处理Cookie的属性看到这里,有的朋友又要问了:我光知道如何创建Cookie有什么用呀?是呀,光知道如何创建Cookie而不知道怎么使用是不够的。在JSP中,程序是通acookie,setxxx设置各种属性,用cookie.getXXX读出cookie的属性,现把Cookie的主要属性,及其方法列于下,供大家参考:【类型1方法名方法解释StringgwtComment()返回cookie中注释,如果没有注释的话将返回空值.StringggtDoma

8、inO返回cookie中Cookie适用的域名.使用getDomainO方法可以指示浏览器把Cookie返回给同一域内的苴他服务器,而通常Cookxe只返回给与发送它的服务器名字完全相同的服务器。注意域名必须以点开始(例如.yesky.com)iritgetMajcAge()返回Cookie过期之前的星大时间,以秒计算口StringgetName()返回匚ookie的名字。名字和值是我;们始终关心的两-个部分>笔者会在后[0]详细J「绍ge

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。