第一步:
在表单中加入<s:token/>标签
第二步:
在struts.xml配置文件中配置interceptor
<action name="user_*" class="action.UserAction" method="{1}">
<interceptor-ref name="defaultStack"></interceptor-ref>//struts2的默认拦截器 name值为固定写法
<interceptor-ref name="token">//struts2已经写好了的拦截器 name值为固定写法
<param name="includeMethods">add</param>//这个表示对那些方法进行防止重复进行,这里的add表示当遇到add这个方法时,如果是第一次请求add方法会执行,如果是重复(如刷新)则会跳转到下面的页面
</interceptor-ref>
<result name="message">/message.jsp</result>
<result name="invalid.token" type="redirect">/index.jsp</result>//如果重复提交,则跳转到这个页面,如果刷新,则提交到这个页面
</action>
案例代码
jsp:
<s:form action="user_execute" method="post" namespace="/">
<s:textfield name="name"/><s:token></s:token>
<input type="submit" value="add"/>
</s:form>
<s:form action="user_add" method="post" namespace="/">
<s:textfield name="name"/><s:token></s:token>
<input type="submit" value="update"/>
</s:form>
struts.xml配置
<action name="user_*" class="action.UserAction" method="{1}">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="token">
<param name="includeMethods">add</param>
</interceptor-ref>
<result name="success">/message.jsp</result>
<result name="message">/message.jsp</result>
<result name="invalid.token" type="redirect">/index.jsp</result>
</action>
action:
public class UserAction {
private String name;
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String execute(){
this.message="execute()";
return "success";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String add(){
this.message="add()";
return "message";
}
}
这个纯碎个人笔记!
struts2如何防止重复提交
最新推荐文章于 2020-11-17 09:30:14 发布