Struts2防止表单重复提交
最近开发中涉及到了表单重复提次的问题,通过研究做个总结。
防止表单重复提交主要用的到
标签: <s: token />
拦截器: <interceptor-ref name="token" />
默认的返回值: <result name="invalid.token">/input.jsp</result>
在页面加载时<s:token />产生一个GUID(Globally Unique Identifier—全局唯一标识符)值的隐藏输入框如:
<input type="hidden" name="struts.token.name" value="struts.token"/>
<input type="hidden" name="struts.token" value="BXPNNDG6BB11ZXHPI4E106CZ5K7VNMHR"/>
同时,将GUID放到会话(session)中。在执行action之前,token拦截器将会话token与请求token比较,如果两者相同,则将会话中的token删除并往下执行,否则向actionErrors加入错误信息。如此一来,如果用户通过某种手段提交了两次相同的请求,两个token就会不同。
action
import com.opensymphony.xwork2.ActionSupport;
public class TestAction extends ActionSupport {
private static final long serialVersionUID = 6820659617470261780L;
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
@Override
public String execute() {
System.out.println("Executing action, your message is " + message);
return SUCCESS;
}
}
JSP
<%@ taglib prefix="s" uri="/struts-tags" %>
<head>
<title>token测试</title>
<s:head />
</head>
<body>
<s:actionerror />
<s:form action="testAction" >
<s:textfield name="message" label="Message" />
<s:token />
<s:submit />
</s:form>
</body>
struts2的配置文件
<struts>
<package name="test" extends="struts-default" namespace="/testToken">
<action name="test" class="com.fhx.TestAction">
<result name="invalid.token">/input.jsp</result>
<result>/input.jsp</result>
<interceptor-ref name="defaultStack" />
<interceptor-ref name="token" />
</action>
</package>
</struts>
以上XML片段值注意的是加入了token拦截器和invalid.token结果。
因为token拦截器在会话token与请求token不一致时,将会直接返回invalid.token结果。
也可以导航到<result name="invalid.token">/error.jsp</result>。
http://blog.csdn.net/woshixuye/article/details/7555453
分享到:
相关推荐
struts2防止表单重复提交--重定向
这里是Struts2 中放置表单重复提交的例子。
【原创】Struts2防止表单重复提交.doc
struts2防止表单重复提交,利用struts的拦截器tokenSession,轻轻松松解决表单重复提交的问题。 附件为源代码,后台延迟了3秒,可直接在web服务器下部署运行,输入用户名和密码后,多点几次提交按钮,然后看控制台...
这个示例简单易懂,就是利用token过滤器
防止表单重复提交 token eclipse项目
struts2防止重复登录,分享给大家学习一下。
struts数据回显、模型驱动、防止表单重复提交
详解struts2的token机制和cookie来防止表单重复提交 今天在做一个投票系统时要实现防止表单重复提交! 当时就想到了用struts2提供的token机制 struts2的token机制防止表单重复提交: 首先需要在提交的jsp页面(要...
本文档主要记录了struts2的属性驱动和模型驱动的区别,以及防止表单重复提交,另外增加了验证信息的正确位置的显示,希望对你有所帮助!
SSH笔记-数据验证、上传下载、避免表单重复提交、自定义拦截器
Struts2知识点总结,包括文件上传,文件下载,防止表单重复提交,Struts2标签,Struts2拦截器
struts2知识点:处理流程,基本配置,与servlet的API解耦,结果类型,通配符和动态方法的调用,类型转换,文件上传,拦截器,表单验证,国际化,OGNL表达式,UI标签,模型驱动,防止表单重复提交,项目练习知识点:...
简单使用struts2,Hibernate 3实现注册模块 另外使用token方式防止表单重复提交 使用hbm2ddl.auto,透过pojo产生数据库表
介绍Struts 2及Struts 2开发环境的搭建 第一个Struts 2应用开发 解决Struts 2配置文件无提示问题 Action名称的搜索顺序 ...使用标签防止表单重复提交 Struts 2+Spring 2.5+Hibernate 3.3整合开发
5. TokenInterceptor防止表单重复提交。 34 6.使用拦截器实现权限验证 35 7.拦截器中的注解 37 8.使用PreResultListener实现回调 39 六、使用标签 40 1.基础表单标签 40 2.单选按钮和复选框: 41 3.三种方式实现下拉...
本课程讲解Struts2的执行流程和基本原理分析?本课程全面讲解Struts2的数据封装方式和值栈数据的存储和获取?本课程讲解Struts2防止表单重复提交和注解方式的开发
这里包含了struts2标签的介绍,介绍了Struts2中OGNLvalueStack和stackContext,radio List的预选问题,文件的上传与下载,防止表单重复提交optiontransferselect字符串拼接,struts2_Path_路径问题