各位大虾好,下面是的问题,首先谢谢你们的回答!
我想用<s:token/>标签,配合 token interceptor 实现防止重复提交的问题。
但是我的Action ,如果继承了 ActionSupport类,
在第一次重复提交时(刷新提交页面)拦截成功。当我再此请求页面index.jsp,
然后再提交时,结果被拦截了!
下面是代码:
jsp:
<form method="post" action="addUser">
<s:token/>
<label >用户名:</label>
<input type="text" name="admin.username" id="username" />
<label >密码:</label>
<input type="password" name="admin.pwd" id="pwd" />
<input type="submit" value="submit"/>
</form>
action:
public class AdminAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private Admin admin;
AdminDAO adao;
public Admin getAdmin() {
return admin;
}
public void setAdmin(Admin admin) {
this.admin = admin;
}
public AdminDAO getAdao() {
return adao;
}
public void setAdao(AdminDAO adao) {
this.adao = adao;
}
public String addUser(){
adao.save(admin);
List list = adao.findAll(); ServletActionContext.getRequest().setAttribute("allusers", list);
return "success";
}
}
struts.xml
<action name="addUser" class="AdminAction" method="addUser">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="token"/>
<result name="invalid.token" type="redirect">/repeatedSubmit.jsp</result>
<result name="success">list.jsp</result>
<result name="input">/index.jsp</result>
<result name="error">/index.jsp</result>
</action>
如果 在Action中 去掉 extends ActionSupprot ,那么能够实现提交后再刷新,
拦截成功。
再次请求index.jsp,再次提交,也能提交成功。
相关推荐
Struts2提供了Token插件来解决这个问题,确保每个表单提交只能被执行一次。下面将详细阐述Struts2中Token机制的工作原理、配置以及使用方法。 1. Token机制概述: Token机制是通过在客户端(浏览器)和服务器之间...
- 如果应用部署在多个服务器节点上,需要考虑Token的一致性问题,可能需要使用共享缓存或数据库来存储和验证Token。 综上所述,Struts2的Token机制是防止Web应用中重复提交的有效工具,通过合理的配置和编程,可以...
通过以上方法,Struts的Token机制能有效防止Web应用中的重复提交问题,确保数据的准确性和一致性。不过,随着技术的发展,现代框架如Spring Boot等提供了更先进的解决方案,例如CSRF(跨站请求伪造)保护,可以考虑...
这个拦截器会处理Token的生成和验证过程。例如: ```xml <interceptor name="token" class="org.apache.struts2.interceptor.TokenInterceptor"/> <interceptor-stack name="defaultStack"> <!-- 添加Token...
在Eclipse项目中,`Struts_0304_Interceptor_token`可能包含了一个示例项目,展示了如何配置和使用Struts2的token拦截器来防止表单重复提交。通过查看该项目的代码和配置文件,你可以更深入地理解和学习这一功能。
Struts2框架提供了一种简单有效的方式来解决这一问题,即通过`<s:token/>`标签和相关的拦截器机制来实现。 #### 二、Struts2框架简介 Struts2是一个基于Java的开源Web应用框架,它继承了Struts1的优点,并且进行了...
为了解决这个问题,Struts1引入了“令牌”机制,也称为Token Session或Token Interceptor。下面我们将详细探讨如何使用Struts1的令牌来防止页面重复提交。 ### 1. 令牌机制概述 令牌机制的基本思路是在用户提交...
1. **配置Struts2拦截器**:在struts.xml配置文件中,需要添加`token`和`tokenSession`拦截器到默认栈或自定义的拦截器栈中。`token`拦截器负责在表单中插入令牌,而`tokenSession`拦截器则负责验证令牌。 ```xml ...
1. Action类:实现Action接口或继承ActionSupport基类,定义execute()方法处理请求。 2. Result类型:可以是JSP、FreeMarker、Velocity等模板技术,也可以自定义Result类型。 3. ActionMapping:Action与URL的映射,...
在Struts的配置文件(通常为struts.xml)中,需要添加`token`和`tokenSession`拦截器到默认的拦截器栈。`token`拦截器负责在表单请求时生成和验证令牌,`tokenSession`则用于在用户会话中存储令牌,防止页面刷新时令...
在"struts2上传图片"这个场景下,我们将深入探讨如何在Struts2框架下实现用户上传图片的功能,并关注网站统计访问量以及防止重复提交的问题。 首先,上传图片是Web应用中常见的功能,它涉及到前端表单设计、后端...
| 13 | token | 检查传到Action的token值的有效性,防止表单重复提交。 | **知识点4:如何使用Struts2自带的拦截器** - **配置**: 默认情况下,Struts2自带的拦截器配置在`struts-default.xml`文件中。 - **使用...
Token机制是为了防止重复提交问题,确保每个表单提交都是唯一的。当用户点击多次提交按钮时,重复的请求会被框架自动拦截。 8. **lookup**:可能与Struts的查找机制相关,例如动态方法调用(Dynamic Method ...
Servlet、Struts和SpringMVC是Java Web开发中常用的三大框架,它们各自提供了处理这一问题的策略。以下将详细探讨这三种框架如何防止表单重复提交。 ### Servlet 在Servlet中,通常采用几种方法来避免重复提交: ...
Struts2的核心组件包括Action、Result和Interceptor(拦截器)。Action是业务逻辑的载体,处理用户请求并返回结果;Result定义了Action执行后的页面跳转逻辑;Interceptor则是在Action调用前后进行额外处理的机制,...
- **Action类**:处理用户请求的Java类,通常继承自`ActionSupport`,包含业务逻辑方法。 - **结果类型**:Action执行后的跳转方式,如`dispatcher`(用于转发或重定向到JSP页面)、`stream`(用于下载文件)等。 ...
- **自定义拦截器**:可以通过实现Interceptor接口来创建自定义拦截器。 #### 六、Hibernate基础 ##### 1. 持久化、持久层 - **持久化**:将内存中的数据保存到磁盘上的过程。 - **持久层**:负责数据持久化的...
- **org.apache.struts2.components**:封装视图组件,Struts2在视图组件上做了很大加强,新增了多个组件,如`updownselect`、`doubleselect`、`datetimepicker`、`token`、`tree`等。 - **org.apache.struts2....
<interceptor-ref name="token"/> <interceptor-ref name="myInterceptor"/> </interceptor-stack> ``` 拦截器栈可以被指定到特定的 Action 中。 #### 七、小结 通过上述介绍可以看出,Struts2 框架为开发者...
视图组件在Struts2中得到了增强,例如,Struts2提供了一系列组件如updownselect、doubleselect、datetimepicker、token和tree等,这些组件增强了用户体验并简化了视图层的开发。视图组件支持主题(theme)功能,允许...