`

struts2的基本流程(转)

阅读更多

大致上 ,Struts2 框架由三个部分组成 : 核心控制器 FilterDispatcher, 业务控制器和用户实现的业务逻辑组件 . 在这三个部分里面 ,Struts2 框架提供了核心控制器 FilterDispatcher, 而用户需要提供业务控制器和业务逻辑组件 .

(1)     核心控制器 FilterDispatcher

FilterDIspatcher Struts2 框架的核心的控制器 , 该控制器作为一个 Filter 运行在 Web 应用当中 , 它负责拦截所有的用户请求 , 当用户请求到达的时候 , Filter 将会过滤用户请求 . 如果用户请求以 action 结尾 , 那么 , 该请求将被转入 Struts2 框架处理 .

Struts2 框架获得了 *.action 请求之后 , 将会根据 *.action 请求的前面的部分决定调用哪个业务逻辑组件 , 比如说 , 对于 login.action 请求 ,Struts2 调用名为 login Action 来处理该请求 .

Struts2 应用中的 Action 都被定义到 struts.xml 文件当中了 , 在该文件中定义 Action 的时候 , 定义了该 Action name 属性和 class 属性 , 其中 name 属性决定了改 action 处理哪个用户的请求 . struts 框架提供了系列拦截器 , 该系列拦截器负责将 HttpServletRequest 请求中的请求参数解析出来 , 传入到 Action 当中 , 并且回调 Action execute 方法来处理用户的请求 .

显然 , 上面的处理过程是典型的 AOP 处理方式 .( 面向切面编程 ), 用户实现的 Action 类仅仅是 Struts2 Action 代理的代理目标 . 用户实现的业务控制器 Action 则包含了对用户请求的处理 . 用户的请求数据包含在 HttpServletRequest 对象里面 , 而用户的 Action 类无需访问 HttpServletRequest 对象 , 拦截器负责将 HttpServletRequest 里面的请求数据解析出来 , 并且传给业务逻辑组件 Action 实例 .

(2)     业务控制器

业务控制器组件就是用户实现的 Action 类的实例 ,Action 中通常包含了一个 execute 方法 , 该方法返回一个字符串 这个字符串就是一个逻辑视图名 , 当业务控制器处理完用户的请求之后 , 根据处理的结果不同 ,execute 方法就返回不同的字符串 每个字符串对应一个视图名 .

程序员开发出系统所需要的业务控制器之后 , 还需要配置 struts2 Action, 也就是配置 Action 的如下三个部分的定义 :

1)       Action 所要处理的 URL

2)       Action 组件所对应的实现类

3)       Action 里面包含的逻辑视图和物理资源之间的关系

每个 Action 都要处理一个用户的请求 , 而用户请求总是包含了指定的 URL, FilterDispatcher 拦截到用户的请求之后 , 根据请求的 URL Action 处理 URL 之间的对应关系来进行转发 .

(3)     Struts2 的模型组件

JavaEE 应用里的模型组件 , 通常是指业务逻辑组件 , 而隐藏在系统业务逻辑组件下面的 , 还可能包含了 DAO, 领域对象等组件 .

通常 MVC 框架里面的业务控制器会调用模型组件的方法来处理用户请求 . 也就是说 , 业务逻辑控制器不会对用户请求进行任何的实际处理 . 用户请求最终由模型组件负责处理 . 业务控制器只是中间负责调度的调度器 , 这也是称 Action 为控制器的原因 .( 当控制器需要获得业务逻辑组件的实例的时候 , 通常不会直接获取业务逻辑组件实例 , 而是通过工厂模式来获得业务逻辑组件的实例 , 或者利用其他 IOC 容器 , 比如说 Spring 容器来管理业务逻辑的实例 )

请求发送到容器 - à FilterDispatcher- à 转发请求 - à Action-- à 业务逻辑组件

(4)     Struts2 的视图组件

Struts2 已经改变了 Struts1 只能够使用 JSP 作为视图技术的现状 ,Struts2 允许使用其他的模版模式 , 比如说 FreeMarker,Velocity 等作为视图技术 .

Struts2 的控制器返回逻辑视图名的时候 , 逻辑视图并没有和任何的视图技术相关联 , 仅仅是返回一个字符串 , 该字符串作为逻辑视图名

当我们在 struts.xml 文件中配置 Action 的时候 , 不仅要制定 Action name 属性和 class 属性 , 还要为 Action 元素指定 result 子元素 , 每个 result 子元素定义一个逻辑视图和物理视图之间的映射 .

如果需要在 Struts2 中使用其他的视图技术 , 则可以再配置 result 子元素的时候 , 指定相应的 type 属性就可以了 , 比如说 , 要使用 FreeMarker, 则为 result 指定 freeMarker type 属性 , 如果想使用 velocity 模版技术作为视图资源 , 则为 result 指定值为 velocity type 属性 ……

(5)     Struts2 的运行流程

Struts2 框架的运行流程非常类似于 WebWork 的流程 .

分享到:
评论

相关推荐

    Struts2 基本流程

    我们已在前面学习了Servlet 数据库应用,有了JSP、Servlet 、JDBC的一些知识、理解和...2. Struts2基本流程 3. 了解核心控制器FilterDispatcher及在web.xml中的配置 4. 了解业务控制器Action及在struts.xml中的配置

    struts2工作流程

    在深入探讨Struts2的工作流程之前,我们先了解一下MVC模式的基本概念。MVC模式将应用逻辑分隔为三个部分:模型(Model)处理业务逻辑,视图(View)负责展示数据,控制器(Controller)协调用户输入和模型间的交互。...

    超详细struts2执行流程图

    这张流程图 深刻的描述了 struts2的执行流程 帮助了解Struts2

    Struts2工作流程

    在深入理解Struts2的工作流程之前,我们需要先了解一些基本概念。 1. **MVC模式**: MVC模式将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。模型负责业务逻辑,视图负责显示...

    struts2开发基本包

    总的来说,"struts2开发基本包"是一个集成了Struts2框架核心组件及必需依赖的集合,是开始Struts2开发的起点。下载并使用这个基本包,开发者能够搭建起一个基本的Struts2环境,进而进行Web应用的开发。

    Struts2 运行流程分析

    以上就是Struts2的基本运行流程。理解这一流程有助于开发者更好地设计和调试应用,确保系统的高效运行。在实际开发中,还需要结合具体的业务需求和最佳实践,对Struts2的配置和拦截器进行定制,以满足项目的需求。

    struts2开发流程简图

    Struts2是一个流行的Java Web框架,它简化了MVC...以上就是Struts2的基本开发流程,实际开发中可能还需要考虑国际化、异常处理、安全配置等更多细节。理解并熟练掌握这个流程对于构建健壮的Struts2应用程序至关重要。

    struts2.2.3需要11个基本包

    在Java Web开发中,Struts2被广泛用于构建企业级应用,提供了强大的控制层,使得开发者能够更有效地管理请求和响应流程。Struts2.2.3的"需要11个基本包"是指为了成功地配置和运行Struts2框架,开发者通常需要引入一...

    Struts2基本原理

    Struts2的设计理念和工作流程与WebWork框架相似,可以认为Struts2是对WebWork的升级和扩展,吸收了WebWork的优点,同时改进了Struts1的一些不足,如更简洁的配置和更强大的动作映射。 8. **集成其他框架**: ...

    Struts2详细分类流程API文档

    总之,"Struts2详细分类流程API文档"涵盖了Struts2框架的核心流程和API,包括Action、Interceptor、Result的使用,以及Struts2标签库和OGNL等重要概念。开发者可以通过这份文档深入理解Struts2的工作原理,提高开发...

    struts1 基本流程.docx

    Struts1.2 是一款经典的Java Web开发框架,它的核心在于提供了一种MVC(Model-View-Controller)架构模式的实现。以下是Struts1.2的基本控制流程...通过以上详细阐述,相信你已经对Struts1.2的基本流程有了清晰的认识。

    Struts2视频教程

    - **Hello Struts2**:通过创建一个简单的“Hello World”示例,帮助开发者快速上手Struts2的基本配置和运行流程。 - **Action类详解**:Action类是Struts2的核心组件之一,负责处理用户的请求并返回相应的结果。...

    struts2基本(最小)jar包

    Struts2是一个基于MVC(Model-View-Controller)设计模式的Java web框架,它极大地简化了Java web应用的开发工作。...但是,这些基本的库是搭建Struts2框架的基石,确保了应用的基本功能和流程能够正确执行。

    struts2 Demo

    这是一个struts2框架的处理流程的demo,里面有struts2基本的配置和模拟登录的例子,以及struts2前台后后台的数据交互方式的解释,代码中有完整的注释帮助理解struts2的基本流程,同时对jstl和struts2的标签也有一定...

    struts2小程序 struts2代码

    这个“struts2小程序”很可能是开发者利用Struts2框架开发的一个小型项目,可能包含了基本的CRUD操作或其他特定功能。在描述中提到花费了3小时搭建,暗示这可能是一个简单的入门示例,用于学习或教学目的。 Struts2...

    留言板留言板struts2留言板struts2

    这个"留言板留言板struts2"项目,显然是一个基于Struts2实现的简单留言板系统,旨在展示Struts2的核心功能和开发流程。下面将详细介绍Struts2框架以及在该项目中可能涉及的关键知识点。 1. **Struts2框架概述**:...

    struts2的基本特性

    Struts1虽然历史悠久,但其配置繁琐,而Struts2通过OGNL和拦截器等特性大大简化了开发流程。Spring MVC虽然同样强大,但在轻量级和简洁性上可能略逊于Struts2,但对于大型企业级应用,Spring的整体生态和丰富的功能...

    struts2基本配置

    - **请求处理流程**:当用户提交表单后,Struts2会根据配置找到对应的Action处理请求,并调用该Action中的`execute()`方法(或指定的方法)。处理完毕后,根据返回的结果名称跳转到相应的视图页面。 综上所述,...

Global site tag (gtag.js) - Google Analytics