ActionServlet组件
RequestProcessor组件
Action组件
ActionForward组件
内置的Action组件
利用ToKen解决重复提交
Struts控制器概述
Struts控制器组件负责接收用户请求、更新模型,以及选择合适的视图组件返回给用户。控制器组件有助于将视图层和模型层分离,有了这种分离,就可以在同一个模型的基础上得心应手地开发多种类型的视图。Struts控制器组件主要包括:
ActionServlet组件
Struts框架的中央控制器。
RequestProcessor组件
每个子应用模块的请求处理器。
Action组件
负责处理一项具体的业务。
Struts框架采用ActionServlet和RequestProcessor组件进行集中控制,并采用Action组件来处理单项业务。
ActionServlet组件
org.apache.struts.action.ActionServlet类是Struts框架的核心控制器组件,所有的用户请求都先由ActionServlet来处理,然后再由ActionServlet把请求转发给其他组件。Struts框架只允许在一个应用中配置一个ActionServlet类,在应用的生命周期中,仅创建ActionServlet类的一个实例,这个ActionServlet实例可以同时响应多个用户请求。
具体完成的功能:
1.ActionServlet将一个来自客户端的URI映射到一个相应的Action类,如果这个Action类是第一次被调用,那么实例化一个Action类并将其放入至缓存中。
2.如果在配置文件(struts-config.xml)中指定了相应的ActionForm,那么从Request中抓取数据填充FormBean。
3.调用Action类的execute ()方法,传入ActionMapping的一个引用、对应的ActionForm、以及由容器传给ActionServlet的HttpServletRequest、HttpServletResponse对象。
4.execute()方法返回一个ActionForword对象,通过此对象即可连接到相应的JSP页面。
RequestProcessor组件
对于多应用模块的Struts应用,每个子应用模块都有各自的RequestProcessor实例。在ActionServlet的process()方法中,一旦选择了正确的子应用模块,就会调用子应用模块的RequestProcessor实例的process()方法来处理请求。在ActionServlet调用这个方法时,会把当前的request和response对象传给它。
Struts框架只允许应用中存在一个ActionServlet类,但是可以存在多个客户化的RequestProcessor类,每个子应用模块都可以拥有单独的RequestProcessor类。如果想修改RequestProcessor类的一些默认功能,可以覆盖RequestProcessor基类中的相关方法。
Action组件
Action类是用户请求和业务逻辑之间的桥梁。在实际项目发开中,我们会根据需求扩展不同的Action组件。也就是创建一个继承自Action的子类,然后重写它的execute()方法。
常用方法 说明
execute() Action接收到正确的请求时,则自动调用
getLocale() 获得请求相关联的区域
setLocale() 设置请求相关联的区域
getResources() 获得消息资源
isCancelled() 检查用户是否点击了表单上的”取消”键
addMessages() 存储提示信息
addErrors() 存储错误信息
ActionForward组件
Action类的execute()方法返回一个ActionForward对象。ActionForward对象代表了Web资源的逻辑抽象,这里的Web资源可以是JSP、Servlet或Action。
从execute()方法中返回ActionForward对象有两种方法:
1.return new ActionForward(“yes”,”yes.jsp”,false);
2.return mapping.findForward(“yes”);
内置的Action组件
ForwardAction
IncludeAction
DispatchAction
LookupDispatchAction
SwitchAction
ForwardAction
对于用户自定义的Action类,既可以负责请求转发,还可以充当客户端的业务代理。如果仅仅需要Action类提供请求转发功能,则可以使用ForwardAction类。ForwardAction类专门用于转发请求,不执行任何其他业务操作。
IncludeAction
在JSP网页中,尽管可以直接通过<include>指令包含另一个Web组件,但是Struts框架提倡先把请求转发给控制器,再由控制器来负责包含其他Web组件。IncludeAction类提供了包含其他Web组件的功能。与ForwardAction一样,Web组件通过IncludeAction类来包含另一个Web组件,可以充分利用Struts控制器的预处理功能。
DispatchAction
通常,在一个Action类中只能完成一种业务操作,如果希望在同一个Action类中完成一组相关的业务操作,可以使用DispatchAction类。
LookupDispatchAction
LookupDispatchAction类是DispatchAction类的子类,在LookupDispatchAction类中也可以定义多个业务方法。通常LookupDispactchAction主要应用于在一个表单中有多个提交按钮,而这些按钮又有一个共同的名字的场合,这些按钮的名字和具体的ActionMapping的parameter属性值相对应。
SwitchAction
SwitchAction类用于子应用模块之间的切换。
对于请求访问SwitchAction的URL,需要提供两个参数:
prefix:指定子应用模块的前缀,以“/”开头,默认子应用模块的前缀为空字符串“”
page:指定被请求Web组件的URI,只需指定相对于被切换后的子应用模块的相对路径
利用Token解决重复提交
在某些情况下,如果用户对同一个HTML表单多次提交,Web应用必须能够判断用户的重复提交行为,以做出相应的处理。
我们可以利用同步令牌[Token]机制来解决Web应用中重复提交的问题,Struts也给出了一个参考实现。在Action类中提供了一系列和Token相关的方法:
1.protected void saveToken(HttpServletRequest request)创建一个新的令牌,并把它保存在当前session范围内
2.protected boolean isTokenValid(HttpServletRequest request)判断存储在当前用户session中的令牌值和请求参数中的令牌值是否匹配
3.protected void resetToken(HttpServletRequest request)从当前session范围内删除令牌属性
分享到:
相关推荐
**JSP教程Struts控制器详解** 在Web应用程序开发中,Struts框架是一个极其重要的MVC(Model-View-Controller)架构实现,它极大地简化了Java Web应用的开发过程。Struts控制器是Struts框架的核心组成部分,负责处理...
在"struts控制器核心代码及解释"这个压缩包中,我们可以深入理解这一核心机制。 1. **ActionServlet**:当用户发起HTTP请求时,`ActionServlet`会接收到这些请求。它首先解析请求中的参数,然后根据配置文件...
Struts的控制器主要包括: ActionServlet :核心控制器 RequestProcessor :子应用模块的处理器 Action :处理单项业务
1. **请求解析**:当用户发送请求时,Struts控制器会解析请求URL,识别出对应的Action Mapping,这通常在`struts-config.xml`配置文件中定义。 2. **业务逻辑处理**:控制器将请求转发给相应的Action,Action是业务...
Struts的中央控制器 对Struts的中央控制器的处理进行简单介绍 及其流程
next3: struts控制器根据name="HelloForm"找中对应的 next4: 调用指定的type类 关联: 如果validate是"true"那么调用type类的validate(); next5: struts控制器在HelloForm bean处理结束会根据的type调用指定的...
- **Struts控制器组件**:Struts框架中的控制器组件主要负责处理HTTP请求,并根据不同的请求类型调用相应的Action处理类。 - **开发流程**:在使用Struts开发Web应用时,通常会遵循以下步骤: - 定义应用需求 - ...
**二、Struts控制器详解** Struts是Apache软件基金会的一个开源项目,提供了一种基于MVC模式的Java Web开发框架。在Struts中,控制器的核心组件是Action类,它是实现了`com.opensymphony.xwork2.Action`接口或其子...
在Struts框架中,JSP主要作为视图层,展示由Struts控制器处理后的数据。 **MVC设计模式**: MVC模式是软件工程中的一种设计模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller...
这个示例的核心配置文件是`struts-config.xml`,它是Struts控制器初始化时解析的关键资源文件,用于分发映射信息到`ActionConfig`、`ForwardConfig`和`FormBeanConfig`实例中。 ### 类图分析 #### ...
3. **购物车功能**:购物车状态保存在会话范围(Session),添加、删除商品的操作由Struts控制器处理,数据存储使用Hibernate。 4. **订单处理**:用户下单时,Struts处理订单信息,Hibernate持久化订单和订单详情到...
- **可编程组件**:Struts控制器组件是一组可编程的组件,可以帮助开发者定义应用如何与用户交互。 - **组件实例**:例如,通过Struts可以轻松定义超链接、表单以及自定义的动作,从而简化了与用户交互的过程。 #...
在这个项目中,JSP页面可能包含用于显示和接收用户输入的表单,以及与Struts控制器进行交互的标签库。 项目可能包括以下几个关键部分: 1. **配置文件**:如struts-config.xml,这是Struts框架的核心配置文件,定义...
Struts2是一个流行的Java web框架,它以MVC(模型-视图-控制器)架构为基础,简化了开发过程。在Struts2中,控制器扮演着关键角色,负责处理用户请求并协调模型和视图。本篇文章将深入讲解Struts2控制器的核心——`...
2. **Struts控制器**:在Struts中,Controller部分主要由ActionServlet实现,它是Servlet的一个实例,负责接收HTTP请求,并根据配置文件(struts-config.xml)中的映射规则将请求转发给相应的Action。 3. **...
1. **理解Struts控制器的作用**:控制器是Struts框架的核心组件,它负责接收HTTP请求,解析请求参数,并调用相应的业务逻辑(Action)进行处理。在本实验中,控制器主要通过`Action`类来实现。 2. **理解配置文件的...
3. **ActionMapping查找**:Struts控制器(`ActionServlet`)接着会在`struts-config.xml`配置文件中的`<action-mappings>`中寻找与URL请求匹配的`path`属性。例如,`HelloWorld.do`对应着`<action-mapping>`中的`...
1. **控制器组件**:Struts控制器主要由ActionServlet和Action类组成。ActionServlet作为前端控制器,负责拦截HTTP请求,并根据配置的ActionMappings将请求转发到合适的Action类。Action类则接收表单数据,进行业务...