标签:
<s:form action="helloworld_other" method="post" namespace="/test">
<s:textfield name="person.name"/><s:token/><s:submit/>
</s:form>
第二步:在struts.xml配置文件中相应的action上配置token拦截器或者tokenSession拦截器。此拦截器只能用在有form的提交请求上。
<action name="helloworld_*"
class="com.jim.action.HelloWorldAction"
method="{1}">
<interceptor-ref
name="defaultStack"/>
<interceptor-ref name="token"
/>
<result
name="invalid.token">/WEB-INF/page/message.jsp</result>
<result>/WEB-INF/page/result.jsp</result>
</action>
以上配置加入了“token”拦截器和“invalid.token”结果,因为“token”拦截器在会话的token与请求的token不一致时,将会直接返回“invalid.token”结果。
方案二:基于第二种重复提交表单的原因,服务器内部使用重定向
在Struts2中的struts.xml中,result标签的type默认值是 dispatcher,(请求转发),要实现以上的功能,肯定不能使用默认值,我们需要将其值设为redirectAction(重定向到某一 Action),也就是说重一个Action跳转到另外一个Action,此时浏览器中的地址是第二个Action,结合到上面的需求,我们可以再第一个 Action中将记录添加到数据库中,然后在第二个Action中将数据读取出来。以后每次刷新,那么只会执行第二个Action。
到struts-default.xml中找到与redirectionAction对应的一个类,ServletActionRedirectResult
从Api文档中发现找出里面有一个字段叫做actionName,指定我们需要跳转的Action
配置方法如下:
<action name="add"
class="com.action.AddAction">
<result
name="success" type="redirectAction">
<param
name="actionName">show_show</param>
</result>
</action>
至于第二个Action的配置方法,相信学过struts2的同学都会
标签:
原文地址:http://www.cnblogs.com/kabi/p/5182755.html