`
qieyi28
  • 浏览: 157153 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Struts2 防止重复提交 注解配置 xml配置

 
阅读更多
防重复提交其实很简单,首先我们用普通的XML配置来理解一下:

1) 只要在jsp里面必须加上一个token标签
<s:token name="token"></s:token>

加完之后你可以浏览器里查看源代码,看看这个标签生成什么样的HTML标签了。不出意外,应该有类似如下两句:
<input type="hidden" name="struts.token.name" value="token" />
<input type="hidden" name="token" value="I3Q3IKH98IFQ5E8L48MP9WI9BGRK2GT7" />

是两个表单都是隐藏表单,里面有一个36位的加密的值,这也是struts2自动生成的,而且它把这个值存到了session里,当第一次提交表单时它会进行比较,如果一样的可以提交反之不许提交,这是struts2的拦截器做的。

2)加上这个还不行,因为struts2用的是拦截器进行执行的,可以到struts-default.xml里看看这个拦截器是不是被加入了struts-default里面,显而没有加入,这得自己进行配置了,在 struts.xml 给自己的action 里加入一个拦截器
<action name="t" class="com.tx.action.TAction" method="test">

       <result>/success.jsp</result>

       <result name="input">/index.jsp</result>
       <result name="invalid.token">/index.jsp</result>

       <interceptor-ref name="token"></interceptor-ref>

       <interceptor-ref name="defaultStack"></interceptor-ref>

</action> 

如果你在action里加上了自己的拦截器那么默认的拦截器不起作用了,你得自己手动再加入,否则好多功能不能用了。

一定要把 <s:token name="token"></s:token> 放在表单里面 form 里面,否则报一个

警告: Could not find token name in params.


理解了上面后,来看看注解配置:
	@Action(value="userTrans",
			interceptorRefs = {
				@InterceptorRef("token"),
				@InterceptorRef("defaultStack") 
			}, 
			results={
				@Result(name="invalid.token", type = "redirect", location = "/accessLogin.action"),
				@Result(name="success", location="/page/account/trans/transfer_submit.jsp"),
				@Result(name="failuer", type = "redirect", location = "/accessLogin.action")
			}
	)
将此配置放置在对应的action方法前,即可。
分享到:
评论

相关推荐

    Struts2文件上传下载和表单重复提交问题

    对于防止重复提交,可能需要添加`token`或`token-session`拦截器。 5. **安全性考虑** 在实现文件上传和下载时,务必注意安全性问题。比如,防止文件名注入以绕过安全控制,限制上传文件的大小和类型以防止DoS攻击...

    struts2的驱动和防止重复提交

    Struts2提供了内置的验证机制,可以使用注解或XML配置文件定义验证规则。当验证失败时,错误信息可以通过`ActionError`或`FieldError`对象添加到ActionContext中。在JSP页面中,可以使用`&lt;s:fielderror&gt;`或`...

    利用struts的token控制重复提交

    1. **配置Action**: 在Struts配置文件(如struts.xml)中,为需要防止重复提交的Action添加`token`拦截器。 ```xml &lt;result name="success"&gt;/success.jsp &lt;result name="input"&gt;/input.jsp ``` 2. **创建...

    Struts2知识点总结

    防止表单重复提交是Web开发中的一个重要功能,为了避免重复提交造成的数据重复或错误,Struts2同样提供拦截器实现这一功能。可以配置token拦截器来为每个请求生成一个令牌(token),并将这个令牌存储在客户端。提交...

    struts2token回退刷新

    Struts2 Token回退刷新是一种防止重复提交的安全机制,尤其在处理并发操作和防止 CSRF(跨站请求伪造)攻击时显得尤为重要。Struts2框架提供了一种令牌验证的方式来确保每个表单提交是唯一的,避免了恶意用户通过...

    struts2学习笔记.doc

    - 使用Token机制防止重复提交。 - 在`struts.xml`中配置Token拦截器。 - 在Action类中处理Token验证逻辑。 #### 八、杂项 **8.1 常见问题解答** - **问题汇总**:针对Struts2开发过程中常见的问题进行总结和解答...

    struts2课程笔记

    防止表单重复提交是Web开发中的常见问题,Struts2通过令牌机制来解决这个问题,避免了同一操作被多次执行。 项目练习部分涉及到使用Ajax实现异步请求并返回JSON数据,这通常通过Struts2的JSON插件实现。文件下载则...

    SSH笔记-数据验证、上传下载、避免表单重复提交、自定义拦截器

    Struts2提供了一种灵活的数据验证机制,可以通过注解或者XML配置文件实现。你可以为每个字段定义验证规则,如非空检查、长度限制、格式校验等。当验证失败时,Struts2会自动将错误信息返回到页面,帮助用户修正输入...

    struts2中token限制表单多次提交

    当用户尝试重复提交表单时,Struts2会检测到Token已经使用过,因此会抛出异常。你可以捕获这个异常并给出相应的提示,例如: ```java public class MyAction extends ActionSupport { @Override public void ...

    Struts2入门教程(全新完整版)

    5. TokenInterceptor防止表单重复提交。 34 6.使用拦截器实现权限验证 35 7.拦截器中的注解 37 8.使用PreResultListener实现回调 39 六、使用标签 40 1.基础表单标签 40 2.单选按钮和复选框: 41 3.三种方式实现下拉...

    struts2的token实现.

    在Web表单提交中,防止重复提交是一个常见的需求,而Struts2的Token机制就是为了应对这一问题而设计的。Token机制能确保用户只能提交一次表单,避免了由于网络延迟或误操作导致的重复数据录入。 ### 一、Token机制...

    Struts 2.X权威指南(第3版) 第二章源码

    开发者需要了解如何定义Action类,如何使用注解或XML配置文件来配置它们,以及如何使用Execute-and-Redirect模式来防止重复提交。 接下来,Struts 2的配置文件是理解和使用框架的重要部分。可能包括了struts.xml或...

    struts2中result类型之redirectAction

    在struts.xml或action类的注解中,你可以设置`result`元素的`type`属性为`redirectAction`来配置重定向结果。例如: ```xml &lt;param name="actionName"&gt;anotherAction &lt;param name="namespace"&gt;/...

    研磨Struts2

    ### 知识点十三:防止重复提交 #### 13.1 问题背景 在Web应用中,由于网络延迟等原因,用户可能会不小心多次点击提交按钮,导致数据重复提交。 #### 13.2 解决方案 - **Token机制**:每次提交前生成一个唯一的...

    投票系统基于struts2

    3. **配置与注解**:Struts2支持XML配置和注解方式,允许开发者灵活地定义Action、结果类型、参数绑定等。这使得系统配置更加简洁明了,减少了配置文件的复杂度。 4. **OGNL(Object-Graph Navigation Language)**...

    struts2 重定向

    重定向在实际应用中的常见用途包括登录验证、防止重复提交、页面跳转等。在设计重定向时,需要注意避免无限循环重定向和安全问题,例如在登录验证失败时,不应重定向到登录页面,而应返回错误信息。同时,合理使用...

    Struts2 in action中文版

    15.3 使用令牌防止表单重复提交 313 15.3.1 使用s:token/表单标签 313 15.3.2 令牌拦截器规则的例外 314 15.4 自动显示等待页面 316 15.5 完成CRUD操作的一个动作 317 15.5.1 CRUD 317 15.5.2 拦截器和接口 318 ...

    使用struts2技术,实现登录功能(连接数据库)

    3. 防止重复提交:可以使用令牌(Token)机制防止用户意外或恶意的重复登录请求。 4. 用户验证:除了用户名和密码外,还可以加入验证码、邮箱验证等方式提高安全性。 综上所述,使用Struts2实现登录功能涉及了...

Global site tag (gtag.js) - Google Analytics