Struts 2 避免表单重复提交

来源:互联网 发布:mac怎么把图标放到桌面 编辑:程序博客网 时间:2024/06/05 22:56
 第一步:
<!-- Struts 2 中要避免表单重复提交必须在表单中加入<s:token/> 标签 --><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <title>避免表单重复提交测试</title>  </head>    <body>   <center><b>避免表单重复提交测试</b></center>    <center>    <s:form action="test" namespace="/test" method="post" theme="simple">    <s:textfield name="name" label="Name"></s:textfield>    <s:token />    <input type="submit" value="发送"/>    </s:form>    </center>  </body><html>




第二步:
<!--struts.xml文件配置如下--><?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts><package name="df" namespace="/test" extends="struts-default"><action name="test" class="com.test.TestAction"><!-- 配置默认拦截器 --><interceptor-ref name="defaultStack" /><!-- 配置token拦截器,用于拦截表单的数据重复提交 --><interceptor-ref name="token" /><!-- 当token拦截器拦截到重复提交的表单时,就会返回首页 --><result name="invalid.token">/index.jsp</result><!-- 正常的表单数据提交后,返回的正常页 --><result name="success" >/messge.jsp</result></action></package></struts>


struts.xml配置加入了“token”拦截器和“invalid.token”结果,因为“token” 拦截器在会话的token与请求的token不一致时,
将会直接返回“invalid.token”结果
在debug/调试状态下,控件台出现下面信息:
2013-8-31 15:49:35 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
警告: Form token OHMH70PLAKGVY343WRXKQ4KIIS6CC213 does not match the session token null.
是因为action中并没有struts.token和struts.token.name属性,我们不用关心这个错误。 
原创粉丝点击