struts2的防止表单重复提交
2024-10-16 22:43:49
防止表单重复提交其实就是struts2的一个拦截器的使用;
struts.xml配置文件:
<?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>
<constant name="struts.ui.theme" value="simple" />
<!-- struts2在防止表单重复提交的拦截中有2个,分别是:token,tokenSession。tokenSession继承token而来。
通常情况下,使用tokenSession客户端感觉会比较友好。 -->
<!-- 如果重复提交,会跳转到error.jsp页面 -->
<package name="person" namespace="/test" extends="struts-default">
<action name="token" class="com.ljq.action.PersonAction">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="token" />
<!-- 如果重复提交,跳转到error.jsp页面 -->
<result name="invalid.token">/WEB-INF/page/error.jsp</result>
<result>/WEB-INF/page/message.jsp</result>
</action>
<action name="tokenSession" class="com.ljq.action.PersonAction">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="tokenSession" />
<!-- 如果重复提交,不会跳转到error.jsp页面 -->
<result name="invalid.token">/WEB-INF/page/error.jsp</result>
<result>/WEB-INF/page/message.jsp</result>
</action>
</package>
</struts>
Action类:
package com.action;
import java.util.ArrayList;
import java.util.List;
public class PersonAction {
private String name;
public String execute() {
System.out.println(name);
return "success";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
index.jsp表单页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>防止表单重复提交</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head>
<body>
<!-- 防止表单重复提交,记得在form表单里填上<s:token></s:token> -->
<!-- action="token"、action="tokenSession" -->
<s:form action="token" namespace="/test" method="post">
姓名:<s:textfield name="name"/>
<s:token></s:token>
<input type="submit" value="发送"/>
</s:form>
</body>
</html>
message.jsp返回成功页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
</head>
<body>
<s:property value="name"/>
</body>
</html>
error.jsp表单重复提交提示页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'error.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
</head>
<body>
您已经提交了表单,请不要重复提交。
</body>
</html>
最新文章
- TransactionScope oracle不能用的问题(转载)
- iOS创建、删除文件夹、获取沙盒路径
- WordPress使用固定链接
- Spring(五)AOP简述
- erlang常用命令
- mysql5.6子查询的优化
- mysql基本知识
- World Wind Java开发之十五——载入三维模型
- Jquery 类似新浪微博,鼠标移到头像,用浮动窗口显示用户信息,已做成一个jquery插件
- Activity的生命周期与加载模式——Activity的生命周期演示
- 在Web中获取MAC地址
- JMeter 配置元件之随机变量(RandomVariable)介绍
- spring JdbcTemplate数据库
- “全栈2019”Java多线程第三十一章:中断正在等待显式锁的线程
- Windows和linux下clock函数
- 算法笔记_199:第二届蓝桥杯软件类决赛真题(C语言本科)
- 可视化库-seaborn-回归分析绘图(第五天)
- JavaScript unshift()函数移入数据到数组第一位
- 如何利用Framework模型生成IQD文件
- Libusb学习
热门文章
- [知了堂学习笔记]_JSON数据操作第2讲(JSON的封装与解析)
- Java基础---其他对象
- pomelo 安装 windows 下
- AHD-模拟高清芯片RN6752替代TVP5150/CJC5150
- XMind与MindManager哪个好(网易云课堂老师:Array老师讲解稿)
- [C#] 如何截取完整的网页图片
- MEF IOC使用
- ireport导出中英文pdf
- makefile中";:=";,";=";,";?=";,";+="; 之间的区别
- jQuery常用工具方法