首页 > 代码库 > struts2 防止表单的重复提交
struts2 防止表单的重复提交
防止表单重复提交(拦截器)
1、回顾之前的解决办法:
2、Struts2中的解决办法:
2.1、使用重定向
<result type="redirect">/success.jsp</result>
遗留的问题:防不住后退,再提交。
2.2、使用<s:token/>生成令牌配合token拦截器
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <%@ taglib uri="/struts-tags" prefix="s" %> 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 4 <html> 5 <head> 6 <title>struts2中的表单重复提交</title> 7 </head> 8 <body> 9 <%--使用一个struts2的内置标签 s:token --%> 10 <s:form action="login1"> 11 <s:token></s:token> 12 <s:textfield name="name" label="用户名" /> 13 <s:submit value="提交"/> 14 </s:form> 15 </body> 16 </html>
struts.xml 中配置 token拦截器
1 <action name="login" class="com.itheima.web.action.Demo1Action" method="login"> 2 <!-- 由于默认的拦截器栈中没有令牌的拦截器,所以需要把默认的拦截器栈配上 --> 3 <interceptor-ref name="defaultStack"></interceptor-ref> 4 <!-- 使用struts2提供的一个令牌的拦截器:token --> 5 <interceptor-ref name="token"></interceptor-ref> 6 <!--<result>/success.jsp</result> 请求转发不行 --> 7 <result type="redirect">/success.jsp</result> 8 <result name="invalid.token">/message.jsp</result> 9 </action>
点击后退的时候,会提示
配置结果视图
遗留的问题:此种解决方式,是产生了错误之后再告知用户,你错了。
2.3、使用<s:token/>生成令牌配合tokensession拦截器
1 <action name="login1" class="com.itheima.web.action.Demo2Action" method="login"> 2 <!-- 由于默认的拦截器栈中没有tokenSession的拦截器,所以需要把默认的拦截器栈配上 --> 3 <interceptor-ref name="defaultStack"></interceptor-ref> 4 <!-- 使用struts2提供的一个tokenSession的拦截器:token --> 5 <interceptor-ref name="tokenSession"></interceptor-ref> 6 <result type="redirect">/success.jsp</result> 7 </action>
struts2 防止表单的重复提交
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。