//-----------------------------------------jsp-----------------------------------------------
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<head>
<title>防止表达数据重复提交</title>
</head>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<head>
<title>防止表达数据重复提交</title>
</head>
<body>
<form action="user!addUser.action">
username:
<input type="text" name="user.username" />
<!--
使用struts2提供的标签token
这里会在html页面中生成一个hidden 并产生一个与服务器端session中存在一个相同的值用于比较
-->
<s:token></s:token>
<input type="submit" value="submit" />
</form>
</body>
</html>
//-----------------------------------------struts.xml-----------------------------------------------
<struts>
<package name="interceptor" namespace="/" extends="struts-default">
<action name="input" class="com.struts2.action.InputAction">
<result>/addUser.jsp</result>
</action>
<action name="user" class="com.struts2.action.UserAction">
<result>/success.jsp</result>
<!--配置拦截器-->
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="token"></interceptor-ref>
<!--配置错误页面,指定name="invalid.token"-->
<result name="invalid.token">/error.jsp</result>
</action>
</package>
</struts>
<form action="user!addUser.action">
username:
<input type="text" name="user.username" />
<!--
使用struts2提供的标签token
这里会在html页面中生成一个hidden 并产生一个与服务器端session中存在一个相同的值用于比较
-->
<s:token></s:token>
<input type="submit" value="submit" />
</form>
</body>
</html>
//-----------------------------------------struts.xml-----------------------------------------------
<struts>
<package name="interceptor" namespace="/" extends="struts-default">
<action name="input" class="com.struts2.action.InputAction">
<result>/addUser.jsp</result>
</action>
<action name="user" class="com.struts2.action.UserAction">
<result>/success.jsp</result>
<!--配置拦截器-->
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="token"></interceptor-ref>
<!--配置错误页面,指定name="invalid.token"-->
<result name="invalid.token">/error.jsp</result>
</action>
</package>
</struts>
//-----------------------------------------action-------------------------------------------------------
import com.opensymphony.xwork2.ActionSupport;
import com.struts2.dto.User;
/**
*UserAction
*/
public class UserAction extends ActionSupport{
private User user;
public String addUser()
{
System.out.println("-----------添加成功!-------------");
return this.SUCCESS;
}
public void setUser(User user) {
this.user = user;
}
}
import com.opensymphony.xwork2.ActionSupport;
/**
*InputAction
*/
public class InputAction extends ActionSupport{
public String execute() throws Exception {
// TODO Auto-generated method stub
return super.execute();
}
/**
*InputAction
*/
public class InputAction extends ActionSupport{
public String execute() throws Exception {
// TODO Auto-generated method stub
return super.execute();
}
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xinyangwl/archive/2010/04/03/5446034.aspx
Copied from : http://blog.chinaunix.net/uid-20787846-id-1842542.html
相关推荐
Struts2默认提供了一些拦截器来帮助处理这个问题,但如题目所述,由于性能考虑,项目组决定不使用Struts2的标签,因此需要自定义拦截器来实现防止重复提交的功能。 自定义拦截器的实现主要分为以下几个步骤: 1. *...
通过以上方式,Struts2的Token机制有效地防止了表单的重复提交,保证了服务端的处理逻辑正确性和数据的一致性。在实际开发中,结合合理的前端提示,还可以提高用户体验,避免用户因误操作而产生的困扰。
总的来说,Struts2的`token`拦截器是防止重复提交的有效解决方案,通过结合合理的拦截器配置和跳转策略,可以确保应用程序的稳定性和数据一致性。在实际开发中,还需要考虑其他因素,如异常处理、用户体验优化等,以...
struts2防止表单重复提交,利用struts的拦截器tokenSession,轻轻松松解决表单重复提交的问题。 附件为源代码,后台延迟了3秒,可直接在web服务器下部署运行,输入用户名和密码后,多点几次提交按钮,然后看控制台...
在Web应用中,表单重复...开发者在使用时需要注意配置token相关标签和拦截器,并通过设置正确的结果视图跳转类型来防止因刷新页面导致的重复提交。通过这些方法的合理应用,可以有效地提高Web应用的健壮性和用户体验。
为了解决这个问题,Struts2 提供了拦截器机制来防止重复提交。在本文中,我们将详细介绍如何设置拦截器来防止重复提交。 Step 1: 引用 Struts 标签 在 JSP 页面中,需要引用 Struts 标签来使用 Struts2 的功能。在...
在本案例中,由于项目组认为Struts2的标签性能不佳,所以选择了自定义拦截器来实现防止重复提交。 首先,我们来看如何创建自定义拦截器。在Struts2中,拦截器是基于AOP(面向切面编程)的概念,可以对Action的调用...
**TokenInterceptor**是Struts2的一个特定拦截器,主要用于防止重复提交。在表单提交过程中,如果用户意外刷新页面,可能会导致数据重复录入。TokenInterceptor通过在客户端生成一个令牌(Token),并在服务器端检查...
4. **插件使用**:Struts1.2提供了一些预定义的拦截器插件,例如`TilesPlugin`用于集成Tiles视图技术,`ValidationPlugin`用于表单验证,`I18nPlugin`用于国际化支持。这些插件可以通过简单的配置就能引入到项目中,...
对于防止重复提交,可能需要添加`token`或`token-session`拦截器。 5. **安全性考虑** 在实现文件上传和下载时,务必注意安全性问题。比如,防止文件名注入以绕过安全控制,限制上传文件的大小和类型以防止DoS攻击...
在实际应用中,Struts2提供了`Token拦截器`来实现这个功能。开发者需要在struts配置文件中添加Token拦截器栈,并在相应的Action类上进行配置。配置完成后,框架会自动处理Token的生成、验证和清理工作。 以下是一个...
在"Struts2 拦截器注解"这个主题中,我们将深入探讨如何利用注解来简化拦截器的配置和使用。 首先,让我们理解什么是Struts2的拦截器。拦截器是一个实现了`Interceptor`接口的Java类,它在Action执行之前或之后执行...
对于Struts2框架,我们可以结合以上策略来实现防止表单重复提交。Struts2提供了拦截器(Interceptor)机制,可以自定义拦截器来处理表单提交。例如,可以创建一个Token拦截器,生成和验证令牌。以下是一个简单的步骤...
在这个SSH笔记中,我们将深入探讨四个核心主题:数据验证、文件上传下载、防止表单重复提交以及自定义拦截器。 首先,我们来谈谈数据验证。在Web应用中,数据验证是必不可少的一环,它确保用户输入的数据符合业务...
4. **验证与处理**:当表单提交后,Struts2的tokenSession拦截器会自动进行token的验证。如果验证通过,业务逻辑正常执行;若失败,则会抛出异常,提示用户重新操作。 在实际应用中,我们还需要考虑一些其他情况,...
在Eclipse项目中,`Struts_0304_Interceptor_token`可能包含了一个示例项目,展示了如何配置和使用Struts2的token拦截器来防止表单重复提交。通过查看该项目的代码和配置文件,你可以更深入地理解和学习这一功能。
### Struts2拦截器的使用 #### 一、概述 Struts2框架是基于MVC设计模式的一个开源框架,它提供了强大的功能来帮助开发者构建Web应用程序。在Struts2中,拦截器是一种非常重要的机制,它可以在Action执行前后进行...