struts2 采用Session Token(Token 令牌)避免表单重负提交

表单的重复提交一直都是一个比较困扰人的问题,下面是struts2采用Token令牌的方式的来避免重复提交。

有表单的页面,也就是将要提交表单的那个页面,需用struts2自己的标签,要使用struts2的标签,当然是要在jsp文件的开头加上:

<%@ taglib prefix="s" uri="/struts-tags" %>然后就可以用他的标签了、

现在以一个最基本的表单来示范:

<s:form action="token" theme="simple"> username:<s:textfield name="username"></s:textfield><br/> password:<s:password name="password"></s:password><br/> <s:token></s:token> <s:submit></s:submit> </s:form>
注意上面的表单,为一个亮点就是多加了<s:token></s:token>这个标签。这就是struts2封装好了的,查看他的源代码可以看到:

<form id="token" name="token" action="/strut2_302_token/token.action;jsessionid=946434B84A81E5B277DC0DE907204923" method="post"> username:<input type="text" name="username" value="" id="token_username"/> <br/> password:<input type="password" name="password" id="token_password"/><br/> <input type="hidden" name="struts.token.name" value="struts.token" /> <input type="hidden" name="struts.token" value="33T962IU08J88WEQWZ9WMSNXWYCQU11P" /> <input type="submit" id="token_0" value="Submit"/> </form>
呵呵,有多了个隐藏域、这应该就是重点了。我们不妨假设,struts2这个<s:token></s:token>的原理,应该就和那个value随机数有关。
接下来,为了测试,新建两个jsp页面。

刚刚提交时,转到tokenSuccess.jsp。

假设表单重复提交,则转到:tokenFail.jsp。

然后,最重要的一步:(当然还是我们struts2的核心配置文件struts.xml文件了)

<package name="login" extends="struts-default" namespace="/"> <action name="token" class="com.guang.struts2.token"> <result name="success">/tokenSuccess.jsp</result> <result name="invalid.token">/tokenFail.jsp</result> <interceptor-ref name="token"></interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> </action> </package>
注意上面的代码,较平时多出了两句:

<interceptor-ref name="token"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>


这个是struts2的拦截器、


java文件没有什么特殊的,随便的生成get,set方法。再在execute方法中return SUCCESS; 即可了。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值