- 浏览: 254091 次
- 性别:
- 来自: 湖南
文章分类
- 全部博客 (194)
- java (23)
- 数据结构和算法 (5)
- oracle (7)
- sql server (1)
- mysql (5)
- Ajax (5)
- JSTL (7)
- jsp (20)
- 组件 (11)
- C++可视化 (0)
- javascript (14)
- c/c++ (0)
- XML (6)
- 只是扩宽 (0)
- 设计模式 (3)
- 正则表达式 (3)
- 心情和感悟 (4)
- ACM (3)
- HTML/css (9)
- 软件破解 (2)
- spring (1)
- struts (15)
- hibernate (10)
- Servlet (2)
- sql (2)
- 面试题 (1)
- struts2 (22)
- Unix/Linux (0)
- javamail (1)
- svn (1)
- 异常 (3)
- EJB (3)
- jquery (2)
- android (1)
最新评论
-
lianlupengUestc:
From my testing (Struts2 versio ...
struts2 注解 -
yulongxiang:
非常感谢!!!!!!!
使用动态ActionForm(转)
在服务器端生成一个随机值,然后传给客户端的form中,当客户端提交时,用隐含域提交给服务器端,提交后,
服务器端又把那个随机值清掉了,当你再次提交时,服务器端的那个随机值已经清掉了,所以提交失败
服务器端又把那个随机值清掉了,当你再次提交时,服务器端的那个随机值已经清掉了,所以提交失败
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <constant name="struts.devMode" value="true"></constant> <package name="test" namespace="/" extends="struts-default"> <action name="input" class="com.hugui.action.InputAction"> <result>/input.jsp</result> </action> <action name="user" class="com.hugui.action.UserAction"> <result>/addOK.jsp</result> <interceptor-ref name="defaultStack"></interceptor-ref> <!-- 在服务器端生成一个随机值,然后传给客户端的form中,当客户端提交时,用隐含域提交给服务器端,提交后, 服务器端又把那个随机值清掉了,当你再次提交时,服务器端的那个随机值已经清掉了,所以提交失败,错误是invalid.token --> <interceptor-ref name="token"></interceptor-ref> <result name="invalid.token">/error.jsp</result> </action> </package> </struts>
package com.hugui.action; import com.opensymphony.xwork2.ActionSupport; public class InputAction extends ActionSupport { @Override public String execute() throws Exception { return super.execute(); } }
package com.hugui.action; import com.opensymphony.xwork2.ActionSupport; public class UserAction extends ActionSupport { private String name; private int age; @Override public String execute() throws Exception { System.out.println("a user added!"); return super.execute(); } 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; } }
发表评论
-
Struts2.1 处理未知Action 和访问不存在的页面
2011-10-18 12:13 1381你可以配置个默认action,当请求的action不存在时,他 ... -
struts2文件上传
2011-04-05 01:25 976package com.hugui.qq.web.acti ... -
struts.xml (constant)
2011-03-26 19:12 1027<?xml version="1.0&qu ... -
java.lang.NoClassDefFoundError: org/apache/commons/fileupload/RequestContext
2011-03-26 18:17 8924严重: Exception starting filter ... -
struts2-写自己的转换器
2010-09-17 22:35 912b) 写自己的转换器: public class MyPoi ... -
struts2-自定义拦截器
2010-09-17 21:02 994用来验证。。。等等 package com.hugui. ... -
struts2-i18n
2010-09-16 21:59 1449login.username=username: log ... -
struts2-tags
2010-09-15 22:38 1008<?xml version="1.0&qu ... -
OGNL表达式语言学习
2010-09-13 10:31 992<?xml version="1.0&qu ... -
struts2-动态结果集
2010-09-13 09:03 1376UserAction.java package com.hu ... -
struts2-带参数的结果集
2010-09-13 08:58 945UserAction.java package com.h ... -
struts2-global-results
2010-09-12 23:31 1130struts.xml <?xml version=& ... -
struts2的常用Result类型用法
2010-09-12 22:42 1127chain 用来处理Action链 ... -
Struts2 使用Domain Model接收参数
2010-09-12 00:01 3082Domain Model 域模型,包含着项目里真正证存在的概念 ... -
Struts2_ActionWildcard_通配符配置
2010-09-11 23:30 810<?xml version="1.0&qu ... -
Struts2_ActionMethod_DMI_动态方法调用
2010-09-11 22:57 1307动态的方法调用:DMI 在form的action中使用动态的方 ... -
struts2-Action
2010-09-11 22:42 981<?xml version="1.0&qu ... -
struts2-path
2010-09-11 22:37 865<?xml version="1.0&qu ... -
struts.xml
2010-09-11 21:10 764<?xml version="1.0&qu ... -
struts2 中MyEclipse操作手册[来自互联网]
2010-09-11 20:48 1783前言 假 如 你 的 人 生 ...
相关推荐
其中,init和destroy方法会在程序开始和结束时各执行一遍,不管使用了该拦截器与否,只要在struts.xml中声明了该Struts2拦截器就会被执行。 intercept方法就是拦截的主体了,每次拦截器生效时都会执行其中的逻辑。
4. **验证与处理**:当表单提交后,Struts2的tokenSession拦截器会自动进行token的验证。如果验证通过,业务逻辑正常执行;若失败,则会抛出异常,提示用户重新操作。 在实际应用中,我们还需要考虑一些其他情况,...
Token 拦截器是 Struts2 提供的一个特殊的拦截器,用于防止重复提交。 Token 机制 Token 机制是 Struts2 的一个安全机制,用于防止重复提交。Token 是一个唯一的标识符,用于标识一个请求。在提交表单时,Struts2 ...
3. **验证Token:** 在处理表单提交的Action方法中,Struts2的Token拦截器会自动进行Token验证。如果验证失败(比如因为用户刷新页面),拦截器会抛出一个`TokenException`,你可以捕获这个异常并处理。 ```java ...
Struts2默认提供了一些拦截器来帮助处理这个问题,但如题目所述,由于性能考虑,项目组决定不使用Struts2的标签,因此需要自定义拦截器来实现防止重复提交的功能。 自定义拦截器的实现主要分为以下几个步骤: 1. *...
21. `token` 和 `token-session` 拦截器:防止重复提交,通过检查Action中的token,确保每个请求的唯一性。 22. `validation` 拦截器:执行在`xxxAction-validation.xml`中定义的验证规则,进行数据校验。 23. `...
本文将深入探讨Struts2防止重复提交的解决方案,包括拦截器的配置、重复提交的原因以及`token`机制的工作原理。 首先,了解Struts2拦截器的基础知识是至关重要的。在Struts2框架中,拦截器是基于AOP(面向切面编程...
在 Struts 中,"重复提交 token" 是一个重要的概念,用于防止用户意外或恶意地多次提交同一个表单,从而确保数据的一致性和安全性。 在 Web 应用中,重复提交问题可能出现在用户网络不稳定或误操作的情况下,导致同...
在这个"struts2实现的简单登陆 附加拦截器防止重复提交"的项目中,我们将深入探讨Struts2如何处理用户登录以及如何通过拦截器来防止重复提交的问题。 首先,我们来理解一下Struts2的核心概念。Struts2框架基于...
### 解决Struts中通过Token防止重复提交的问题 在Web应用程序开发中,特别是基于MVC架构的框架如Apache Struts中,确保用户操作的安全性是非常重要的。其中一项常见且重要的安全措施是防止表单的重复提交。本文将...
struts2防止表单重复提交,利用struts的拦截器tokenSession,轻轻松松解决表单重复提交的问题。 附件为源代码,后台延迟了3秒,可直接在web服务器下部署运行,输入用户名和密码后,多点几次提交按钮,然后看控制台...
1. **配置Action**:在Struts的配置文件(struts.xml或struts.properties)中,为需要防止重复提交的Action添加一个拦截器,通常是`token`和`tokenSession`拦截器。 2. **生成Token**:在Action的准备方法(Prepare...
当用户尝试重复提交表单时,Struts2会检测到Token已经使用过,因此会抛出异常。你可以捕获这个异常并给出相应的提示,例如: ```java public class MyAction extends ActionSupport { @Override public void ...
当用户提交表单时,Struts2的Token拦截器会自动检查Token的有效性。如果Token已经使用过或者不存在于session中,那么`isTokenValid()`会返回`false`,此时可以抛出异常或者返回一个错误页面,提示用户重新尝试。 6...
在本案例中,由于项目组认为Struts2的标签性能不佳,所以选择了自定义拦截器来实现防止重复提交。 首先,我们来看如何创建自定义拦截器。在Struts2中,拦截器是基于AOP(面向切面编程)的概念,可以对Action的调用...
在Struts的配置文件中定义一个Token拦截器,拦截所有需要防止重复提交的Action,然后在拦截器中实现Token的验证逻辑。 通过这种方式,Struts+Token机制可以有效地防止由于用户误操作或者网络延迟造成的表单重复提交...
在Struts配置文件中,为需要防止重复提交的Action添加一个拦截器引用,如`token`或`token-session`。这两个拦截器都可以处理Token,但`token-session`更安全,因为它会将Token存储在会话中,而不仅仅是请求中。 2....
Struts2框架提供了一种解决方案,即使用Token机制来防止表单的重复提交。以下是对这个主题的详细说明: 1. **表单重复提交问题**:当用户在提交表单时,由于网络延迟或用户误操作,可能会导致同一个表单被多次提交...
Struts2为解决这个问题引入了Token机制,确保每个表单提交只被处理一次,避免了由于用户意外刷新页面导致的重复请求。 首先,我们来了解一下什么是表单重复提交问题。当用户填写并提交一个表单后,如果网络延迟或者...