今天做场次安排的添加和显示时,遇到这样一个问题。页面上只有一个添加的连接,点击连接后进入Action中的add方法执行添加操作。然后返回列表显示页面,但刷新页面时,又会重新添加一遍。知道这样的原因是因为从后台返回的时候用的是forward,但是因为我还要给页面返回信息,所以必须用forward。说到这,其实我对forward和redirect的区别还是不懂。
然后问了同事,他们说可以在页面上封装一个form ,
<html:form action="/ccap.do" method="POST" >
然后就会产生一个Token令牌,在后台会有个this.isTokenValid()来判断是否重复提交。但之前必须先在这个页面之前保存一个Token.
我的流程是这样的,先到objList方法中查询ccap,然后返回到ccapList页面,如果页面上没有数据,则添加数据。
添加数据之前,先重新构建一个form,这个Form会将Token隐藏起来发送到Action中。
<action attribute="ccapForm" name="ccapForm"
scope="request" parameter="method"
path="/ccap" type="org.springframework.web.struts.DelegatingActionProxy">
</ation>
在struts中必须有个ActionForm和前台的form对应。
import org.apache.struts.action.ActionForm;
public class xxForm extends ActionForm {
}
后台的验证:
public ActionForward add(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)throws Exception{
try{
if(this.isTokenValid(request)){
//添加操作
this.resetToken(request);
}
}catch(Exception e){
e.printStackTrace();
request.setAttribute("msg", "添加失败!");
}
return mapping.findForward("success");
}
分享到:
相关推荐
Struts1.x是一个非常经典的Java Web开发框架,它在企业级应用中被广泛使用。而Struts1.x的令牌机制(Token)则是防止重复提交、跨页请求攻击的重要手段。在此,我们将深入探讨Struts1.x令牌的使用方法及其背后的原理...
以下是对Struts1.x中使用Token防止提交的详细说明: 1. **理解Token机制**: Token机制的核心思想是在客户端和服务器之间建立一种绑定关系,每个提交请求都必须携带一个服务器生成并已存储的唯一令牌。如果令牌...
Struts2是一个强大的Java web应用程序框架,源自Struts1.x和WebWork的融合。它并非Struts1.x的简单延续,而是基于WebWork的核心构建,因此具有更稳定、高效的性能。Struts2的设计思路和工作流程与Struts1.x有很大的...
Struts2是一个流行的Java web应用程序框架,它源自Struts1.x和WebWork的结合,具有稳定性和高性能。在深入理解Struts2的工作原理时,源码分析是必不可少的步骤。Struts2的核心设计理念和设计模式相比Struts1.x有了...
- **Struts2概述**:Struts2是一个开源的MVC框架,它结合了Struts 1.x、WebWork和其他一些框架的优点。Struts2的主要目标是简化Web应用程序的开发过程。 - **Struts2的起源**:Struts2最初由WebWork和Struts1的核心...
在Struts 1中,标签库是实现视图层与控制器层交互的重要工具,使得开发者可以方便地在JSP页面中处理用户输入、展示数据和控制流程。 ### 一、STRUTS1.X 工作原理 Struts 1 的工作流程主要包括以下几个步骤: 1. ...
- **添加JAR文件**:为了使用Struts2框架,需要在项目中添加一系列必要的JAR文件。这些文件通常包括`struts2-core-2.x.x.jar`、`xwork-2.x.x.jar`、`ognl-2.6.x.jar`等,其中: - `struts2-core-2.x.x.jar`包含了...
这些标签用于条件判断,类似于 Struts 1.x 中的 `logic:present` 或 `logic:notPresent`。 **示例:** ```xml != null}"> Welcome, <s:property value="user.name"/> != null}"> Hello, guest! Please log ...
相较于 Struts1.x 版本,Struts2 提供了更强大的功能与灵活性,它不仅支持传统的表单提交方式,还提供了更为灵活的 Ajax 支持,以及更丰富的标签库等特性。 #### 二、Struts2架构与配置 1. **基础配置**:Struts2 ...
Struts2是Struts1.x和WebWork两个社区合作的结果,可以认为是WebWork的一个进化版本,继承了WebWork的核心机制并在此基础上进行了优化和封装。 在Struts2的工作机制中,FilterDispatcher是一个关键组件,它是一个...
OGNL(Object-Graph Navigation Language)是Struts2中使用的表达式语言,用于访问Java对象的属性和调用方法,增强了视图层的表达能力和灵活性。 #### 表达式语言主要好处 OGNL的主要好处包括简洁的语法、强大的...
因此,在使用Struts 2时,开发者必须关注并修复框架的安全更新,同时采用适当的防御策略,如使用参数化查询防止SQL注入,使用CSRF token防止跨站请求伪造等。 **版本:** 在你提供的压缩包文件中,看到的是`struts-...
1. <s:bean name=""></s:bean>-----类似于struts1.x中的,JavaBean的值 C: 1. <s:checkbox></s:checkbox>-----复选框 2. <s:checkboxlist list=""></s:checkboxlist>-----多选框 3. <s:combobox list=""></s:...
- Spring支持在切入点表达式中使用`或`(or)和`与`(and)运算符。 12. **排序方向**: - `asc`表示升序排列,`desc`表示降序排列。 13. **Spring依赖注入方式**: - Spring提供了设值注入(setter injection...
`Struts1.x令牌(Token)的使用.rar`则涉及Struts 1.x框架中的令牌机制,这是一种防止重复提交和跨站请求伪造(CSRF)的安全措施。在表单提交过程中,Struts会生成一个唯一的令牌并存储在session中,同时将其作为隐藏...
- 在Struts1.x中,`<s:bean>`用于实例化JavaBean并将其值绑定到页面上下文。在Struts2中,这种功能通常通过Action类和Ognl表达式实现。 C. `<s:checkbox>` 和 `<s:checkboxlist>` - `<s:checkbox>` 创建一个复选框...
Struts1.x中的标签,用于将JavaBean的值插入到JSP页面中。 ```xml ``` #### 8. `<s:checkbox>` - 单个复选框 创建单个复选框。 ```xml ``` #### 9. `<s:checkboxlist>` - 复选框列表 创建一组复选框列表。 ```...
该标签用于显示Struts1.x中JavaBean的属性值。 ```jsp ``` ##### 8. `<s:checkbox>` - 复选框标签 用于创建一个复选框。 ```jsp ``` ##### 9. `<s:checkboxlist>` - 复选框列表标签 用于创建一组复选框列表。 ``...
- **防止重复提交**:Struts 1.x中使用Token机制,保存一个唯一的Token,如果提交时Token未改变,则认为是重复提交。Struts 2使用内置的Token拦截器实现类似功能。 - **请求验证失败后变量丢失**:可以将ActionForm...