`
convertto
  • 浏览: 125571 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

Struts控制器

阅读更多

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控制器

    **JSP教程Struts控制器详解** 在Web应用程序开发中,Struts框架是一个极其重要的MVC(Model-View-Controller)架构实现,它极大地简化了Java Web应用的开发过程。Struts控制器是Struts框架的核心组成部分,负责处理...

    struts控制器核心代码及解释.rar

    在"struts控制器核心代码及解释"这个压缩包中,我们可以深入理解这一核心机制。 1. **ActionServlet**:当用户发起HTTP请求时,`ActionServlet`会接收到这些请求。它首先解析请求中的参数,然后根据配置文件...

    Struts控制器示例

    Struts的控制器主要包括: ActionServlet :核心控制器 RequestProcessor :子应用模块的处理器 Action :处理单项业务

    Java Struts教程,Struts学习

    1. **请求解析**:当用户发送请求时,Struts控制器会解析请求URL,识别出对应的Action Mapping,这通常在`struts-config.xml`配置文件中定义。 2. **业务逻辑处理**:控制器将请求转发给相应的Action,Action是业务...

    Struts的中央控制器

    Struts的中央控制器 对Struts的中央控制器的处理进行简单介绍 及其流程

    Struts 通俗易懂

    next3: struts控制器根据name="HelloForm"找中对应的 next4: 调用指定的type类 关联: 如果validate是"true"那么调用type类的validate(); next5: struts控制器在HelloForm bean处理结束会根据的type调用指定的...

    Struts In Action 电子书 Struts1电子书

    - **Struts控制器组件**:Struts框架中的控制器组件主要负责处理HTTP请求,并根据不同的请求类型调用相应的Action处理类。 - **开发流程**:在使用Struts开发Web应用时,通常会遵循以下步骤: - 定义应用需求 - ...

    j2ee控制器及应用

    **二、Struts控制器详解** Struts是Apache软件基金会的一个开源项目,提供了一种基于MVC模式的Java Web开发框架。在Struts中,控制器的核心组件是Action类,它是实现了`com.opensymphony.xwork2.Action`接口或其子...

    网上书店 struts JSP 毕业设计

    在Struts框架中,JSP主要作为视图层,展示由Struts控制器处理后的数据。 **MVC设计模式**: MVC模式是软件工程中的一种设计模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller...

    Struts Controller UML diagrams

    这个示例的核心配置文件是`struts-config.xml`,它是Struts控制器初始化时解析的关键资源文件,用于分发映射信息到`ActionConfig`、`ForwardConfig`和`FormBeanConfig`实例中。 ### 类图分析 #### ...

    一个很棒的购物网站(struts+hiberanate)

    3. **购物车功能**:购物车状态保存在会话范围(Session),添加、删除商品的操作由Struts控制器处理,数据存储使用Hibernate。 4. **订单处理**:用户下单时,Struts处理订单信息,Hibernate持久化订单和订单详情到...

    struts中文帮助文档

    - **可编程组件**:Struts控制器组件是一组可编程的组件,可以帮助开发者定义应用如何与用户交互。 - **组件实例**:例如,通过Struts可以轻松定义超链接、表单以及自定义的动作,从而简化了与用户交互的过程。 #...

    jsp+struts小项目-1

    在这个项目中,JSP页面可能包含用于显示和接收用户输入的表单,以及与Struts控制器进行交互的标签库。 项目可能包括以下几个关键部分: 1. **配置文件**:如struts-config.xml,这是Struts框架的核心配置文件,定义...

    struts2控制器源码讲解

    Struts2是一个流行的Java web框架,它以MVC(模型-视图-控制器)架构为基础,简化了开发过程。在Struts2中,控制器扮演着关键角色,负责处理用户请求并协调模型和视图。本篇文章将深入讲解Struts2控制器的核心——`...

    struts源码

    2. **Struts控制器**:在Struts中,Controller部分主要由ActionServlet实现,它是Servlet的一个实例,负责接收HTTP请求,并根据配置文件(struts-config.xml)中的映射规则将请求转发给相应的Action。 3. **...

    实验指导\第二章Struts框架详解.doc

    1. **理解Struts控制器的作用**:控制器是Struts框架的核心组件,它负责接收HTTP请求,解析请求参数,并调用相应的业务逻辑(Action)进行处理。在本实验中,控制器主要通过`Action`类来实现。 2. **理解配置文件的...

    struts运行流程图

    3. **ActionMapping查找**:Struts控制器(`ActionServlet`)接着会在`struts-config.xml`配置文件中的`&lt;action-mappings&gt;`中寻找与URL请求匹配的`path`属性。例如,`HelloWorld.do`对应着`&lt;action-mapping&gt;`中的`...

    Struts

    1. **控制器组件**:Struts控制器主要由ActionServlet和Action类组成。ActionServlet作为前端控制器,负责拦截HTTP请求,并根据配置的ActionMappings将请求转发到合适的Action类。Action类则接收表单数据,进行业务...

Global site tag (gtag.js) - Google Analytics