首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

struts2.1.8 token拦截器配置有关问题

2012-04-07 
struts2.1.8 token拦截器配置问题jar包:struts2-core-2.1.8.jar,xwork-core-2.1.6.jar小弟在测试token拦截

struts2.1.8 token拦截器配置问题
jar包:struts2-core-2.1.8.jar,xwork-core-2.1.6.jar 
小弟在测试token拦截器时发现怎么配都有问题,故特来求教,先谢了! 

第一种方式: 
struts.xml 
<package name="actionTwo" namespace="/" extends="struts-default">  
   
  <global-results>  
  <result name="invalid.token" >/s2Page/repeatSubmitTest.jsp</result> 
  </global-results> 
   
  <action name="money_*" method="{1}" class="web.action.ShowMeTheMoney" > 
  <result name="destination">/s2Page/HelloWorld.jsp</result> 
  <result name="success">/s2Page/Hello.jsp</result> 
  </action> 

  <action name="s2Action" class="web.action.Struts2Action"> 
  <interceptor-ref name="token"/>  
  <interceptor-ref name="defaultStack" />  
  <result name="success" type="redirectAction"> 
  <param name="namespace">/</param> 
  <param name="actionName">money_gotoThePage</param> 
  </result> 
   
  </action> 
   
</package> 

提交请求页面jsp: 
<s:form action="s2Action" namespace="/" method="post"> 
  <s:token name="token"></s:token>  
  <s:submit value="s2Action, goto struts2 page!"></s:submit> 
</s:form> 

提示页面repeatSubmit.jsp: 
<div class="div_center">  
  <span class="waring">  
  <font size="5" color="red">您已经成功提交,请不要重复提交!</font>  
  </span>  
</div>  
<s:actionerror/> 

现象: 
第一次点击按钮提交可以正常跳转,后退后再次提交成功跳转到提示重复提交的页面但是<s:actionerror/>没有显示控制台的警告信息,后退刷新后能够再次正常跳转. 
问题: 
1,为什么<s:actionerror/>没有显示控制台的警告信息? 
2,为什么刷新后能再次跳转呢? 

第二种 
struts.xml 
<package name="actionTwo" namespace="/" extends="struts-default">  
  <interceptors> 
  <interceptor-stack name="myStack">  
  <!--引用struts2默认定义token拦截器解决重复提交 --> 
  <interceptor-ref name="token"/>  
  <interceptor-ref name="defaultStack" />  
  </interceptor-stack>  
  </interceptors> 
  <default-interceptor-ref name="myStack" />  
   
  <global-results>  
  <result name="invalid.token" >/s2Page/repeatSubmitTest.jsp</result> 
  </global-results> 
   
  <action name="money_*" method="{1}" class="web.action.ShowMeTheMoney" > 
  <result name="destination">/s2Page/HelloWorld.jsp</result> 
  <result name="success">/s2Page/Hello.jsp</result> 
  </action> 
  <action name="s2Action" class="web.action.Struts2Action"> 
   
  <result name="success" type="redirectAction"> 


  <param name="namespace">/</param> 
  <param name="actionName">money_gotoThePage</param> 
  </result> 
   
  </action> 
   
  </package> 

jsp页面code不变 
现象: 
点击按钮提交后直接跳转到提示重复提交的页面,<s:actionerror/>有显示信息"?The form has already been processed or no token was supplied, please try again.",但是控制台显示"警告: Could not find token name in params." 
问题: 
为什么会显示找不到token name 明明我jsp页面有<s:token name="token"></s:token>且看源代码上面已经有了相应的内容<input type="hidden" name="struts.token.name" value="token" /> 
<input type="hidden" name="token" value="3Q8EPW8B4U5MO3ZF8PX7P5UO5AUABPPN" /> 


[解决办法]
还是清空下 work 目录里的缓存吧,试试...
[解决办法]
可能是webapp下的缓存,清空重新部署一下!
[解决办法]
<!-- 拦截器一般配置在result元素之后! -->
<!-- 默认拦截器放在其它拦截器之前 -->
<interceptor-ref name="defaultStack" />
<interceptor-ref name="checkLogin" />


希望对你有帮助

热点排行