Struts2防止表单重复提交
环境搭建、工程创建略去,有兴趣的可以参考
环境搭建的步骤
先大致讲一下思路:我会建一个简单的页面做提交表单
表单只包含两项内容,提交给一个action处理,当表单提交
成功我们跳转到一个页面,此时按下F5重复提交表单,让
Struts2帮我们拦截这个重复提交的请求!
一、按照惯例,先建页面(index.jsp)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!-- 引入Struts2标签 -->
<%@taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>struts2防止表单重复提交</title>
</head>
<body>
<form action="test/login.action" method="post">
<!-- 告诉服务器注意表单的重复提交 -->
<s:token/>
姓名<input type="text" name="name" /><br>
年龄<input type="text" name="age"/><br>
<input type="submit" value="登陆" />
</form>
</body>
</html>
二、下面该轮到建Action了(LoginAction)
package com.hulang.actions;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{//如果不继承,重复提交不会有提示
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String execute(){
return "success";
}
}
三、注册Action
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="first" namespace="/test" extends="struts-default">
<action name="login" class="com.hulang.actions.LoginAction">
<result name="success">/welcome.jsp</result>
<!-- 重复提交跳转的视图 -->
<result name="invalid.token">/token.jsp</result>
<!-- 声明token拦截器 -->
<interceptor-ref name="token"/>
<!-- 当你声明了自定义拦截器时默认拦截器就不会执行 -->
<!-- 所以还要加上默认的拦截器-->
<interceptor-ref name="defaultStack"/>
</action>
</package>
</struts>
四、提交成功跳转的视图(welcome.jsp)
五、发生重复提交跳转的视图(token.jsp)
到此,实例就做完了,结果如下
如有疑问加群:511906138 私聊我!谢谢