struts利用Token(令牌)防止用户重复提交
2010-03-04 12:51
507 查看
在我们的开发中经常遇到需要防止用户重复提交的情况,如果你用了struts,恭喜你,因为struts已经给你做好了,你只要会调用即可:
在跳转到页面前的action方法中写:
[align=left]public ActionForward toAddUser(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
[/align]
[align=left]
[/align]
[align=left] this.saveToken(request);[/align]
[align=left] return mapping.findForward("addUser");
[/align]}
以上的this.saveToken(request),会在将要跳转到的"addUser.jsp"页面上生成一个
<input type="hidden" name="org.apache.struts.taglib.html.TOKEN" value="38912d4c87ce950cf6c159411c0a4966">
的隐藏字段,value值是随机生成的,并且同时把该属性和值放到Session中。
[align=left]public ActionForward addUser(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
[/align]
[align=left]
[/align]
if( ! this.isTokenValid(request,true)){
[align=left] request.setAttribute("info", "请不要刷新!");
[/align]
[align=left] return mapping.findForward("backInfo");[/align]
[align=left] } [/align]
[align=left] bo.addUser() ; [/align]
[align=left] return mapping.findForward("viewUser"); //添加完后显示用户资料[/align] }
当用户填写完信息第一次提交,调用"addUser"方法时,咱们看一下,其中的"this.isTokenValid(request,true)"都做了些什么:
把从页面传来的org.apache.struts.taglib.html.TOKEN的值和session中的org.apache.struts.taglib.html.TOKEN值比较,
如果值是相等的(这时的值是相等),会清除session中的该令牌。继续执行bo.addUser() 后跳转到"addUser.jsp"页面。
当用户后退到该页面,点提交,程序依然会对从页面来的与session中的org.apache.struts.taglib.html.TOKEN的值进行比较,由于在第一次提交时已经清除了该令牌,所以struts就知道这时的用户
正在进行重复提交,故执行:
request.setAttribute("info", "请不要刷新!");
[align=left]return mapping.findForward("backInfo");[/align]
相关文章推荐
- struts利用Token(令牌)防止用户重复提交
- struts利用Token(令牌)防止用户重复提交(转载)
- struts利用Token防止用户重复提交
- 【struts2八】利用token防止表单重复提交
- STRUTS中利用同步令牌(Token)解决重复提交的问题(转载)
- ssm+拦截器做到利用token令牌机制防止数据重复提交
- Struts中利用同步令牌(Token)解决重复提交的问题
- 利用struts2<s:token>标签防止用户重复提交
- 《struts---利用Token防止表单重复提交》
- struts 1.x 用token防止重复提交
- Struts(二十七):使用token或tokenSession防止表单重复提交
- 防止重复提交表单---Struts中Token的使用方法
- Spring MVC如何防止重复提交?类似Struts Token机制!
- <转>防止刷新/后退引起的重复提交问题的Java Token代码,非Struts
- JavaWeb 如何防止表单重复提交 - 使用Token,令牌
- 页面防止重复提交,在服务端使用struts令牌机制,前台分为jsp和extJs(其他js框架同理)
- token令牌防止重复提交的问题
- sturts学习系列2:Struts的请求重复提交的解决之道--Token(令牌)
- 我对servlet+jsp当中使用token令牌避免用户重复提交表单的见解
- struts令牌机制防止重复提交 savetoken(request) resetToken(request)