您的位置:首页 > 编程语言 > Java开发

Struts2中的Token令牌使用

2015-10-23 15:47 417 查看

Struts2中的Token令牌使用

2011-07-17 18:54:55
A-A+

1、使用Struts2的表单标签,其中需要增加token标签。如下:

……

<%@ taglib uri='/struts-tags' prefix='s' %>

……

<s:form action='page1' theme='simple'>

<s:datetimepicker name='order.date' label='购买日期' toggleType='explode' value='today'/><br/>

<s:token/>

<s:reset/><s:submit/>

  </s:form>
2、在struts配置文件中增加token拦截器。(token 和 token-session 拦截器的启用,是在 struts.xml 配置文件中,既可以为包启用,也可以单独为某个 action 启用)

2.1 为 Action 启用 token

<?xml version='1.0' encoding='UTF-8'?>

<!DOCTYPE struts PUBLIC

'-//Apache Software Foundation//DTD Struts Configuration 2.0//EN'

'http://struts.apache.org/dtds/struts-2.0.dtd'>

<struts>
<package name='lee' extends='struts-default'>

<action name='page1' class='org.bruce.Page1'>

<interceptor-ref name='defaultStack' />

<interceptor-ref name='token' />

<result>/page1.jsp</result>

<result name='invalid.token'>/page1error.jsp</result>

</action>

</package>

</struts>

2.2 为包启用 token
注意,需要name为invaid.token的result。这是当拦截器判断是重复提交的时候,会转向的结果。

<package name='lee' extends='struts-default'>

<interceptors>

  <interceptor-stack name='myStack'> 

  <interceptor-ref name='token'/> 

  <interceptor-ref name='defaultStack' /> 

  </interceptor-stack>

</interceptors>

<default-interceptor-ref name='myStack' /> 

<action name='page1' class='org.bruce.Page1'>

  <result>/page1.jsp</result>

  <result name='invalid.token'>/page1error.jsp</result>

</action>

</package>
如遇到
Could not find token name in params. - at com.opensymphony.xwork2.util.logging.commons.CommonsLogger.warn(CommonsLogger.java:56) 
    解决方式 :

struts.xml中修改token拦截器中增加对防止重复提交方法的拦截配置:

<interceptor-ref name="token">
<param name="includeParams">
allocate,create
</param>
</interceptor-ref>

 如遇到

Error setting expression 'struts.token.name' with value '[Ljava.lang.String;@14057e5' - at com.opensymphony.xwork2.util.logging.commons.CommonsLogger.warn(CommonsLogger.java:64) 
解决方式:

struts.xml中修改params参数拦截器配置如下:

<interceptor-ref name="params">
<param name="excludeParams">
dojo\..*,.*\\u0023.*,struts.token,struts.token.name
</param>
</interceptor-ref>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: