### Struts2入门知识点详解 #### 一、Struts2简介及历史背景 **Struts2** 是一款基于Java的企业级应用开发框架,它继承和发展了经典的**Struts1**框架,并融合了WebWork框架的一些优秀特性。Struts2最初被称为**WebWork2**,在独立发展一段时间后,为了更好地整合资源和技术,最终与Struts社区合并,形成了现在我们所熟知的Struts2框架。 #### 二、Struts2与传统MVC框架的区别 Struts2被定义为一个**Pull MVC**或称为**MVC2**框架。相较于传统的MVC框架,Struts2中的**Action**扮演的是**Model**的角色,而不是控制器的角色。这意味着在Struts2中,业务逻辑和模型数据紧密地结合在一起,由Action类直接处理这些逻辑和数据。 #### 三、Struts2的核心组件 Struts2的核心组件包括**Action**、**Interceptor**、**Value Stack/OGNL**、**Result Types**以及**View Technologies**。这些组件相互协作,共同实现了框架的功能。 - **Action**:作为模型,包含了业务逻辑和数据处理。 - **Interceptor**:用于处理请求的拦截,可以进行预处理和后处理操作。 - **Value Stack/OGNL**:提供了统一的数据存储和访问方式,OGNL是一种强大的表达式语言,用于数据访问和操作。 - **Result Types**:决定了Action执行后返回的结果类型,比如返回一个JSP页面。 - **View Technologies**:用于呈现视图,常见的有JSP、Freemarker等。 #### 四、请求处理流程 Struts2的请求处理流程是理解框架工作原理的关键: 1. **客户端请求**:用户发起HTTP请求到服务器端的Servlet容器(如Tomcat)。 2. **过滤器链**:请求进入过滤器链,其中包括ActionContextCleanup等过滤器,这些过滤器可以清理线程上下文,确保每个请求独立处理。 3. **FilterDispatcher**:这是Struts2的核心,负责调度请求。它会询问ActionMapper来确定请求是否应该映射到某个具体的Action上。 4. **ActionProxy**:当确定了需要执行的Action后,ActionProxy将通过ConfigurationManager查询框架配置文件,找到对应Action的实现类。 5. **ActionInvocation**:ActionProxy创建ActionInvocation实例,并使用命名模式来调用Action。在这个过程中,相关的Interceptor也会被调用。 6. **执行Action**:Action执行完毕后,ActionInvocation根据struts.xml中的配置找到对应的返回结果。这些结果通常是JSP页面或其他视图技术实现的模板。 7. **渲染视图**:根据返回的结果渲染视图并响应给客户端。 #### 五、配置文件解析 Struts2的应用配置主要包括三个文件: - **web.xml**:配置Struts2的Servlet过滤器**FilterDispatcher**。 - **struts.xml**:配置web应用的执行环境,包括Action的定义、拦截器配置等。 - **struts.properties**:配置web应用的组件属性,例如国际化资源文件的位置等。 下面是一个简单的`web.xml`示例配置: ```xml <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ``` 这段配置指定了Struts2的过滤器,并将其应用于所有URL请求路径。 以上内容涵盖了Struts2框架的基础知识和核心概念,对于初学者来说是非常宝贵的入门指南。通过深入理解和掌握这些知识点,开发者可以更加高效地利用Struts2进行企业级应用的开发。
剩余13页未读,继续阅读
- 粉丝: 19
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Spring MVC、SpringBoot等技术的餐享云项目设计源码
- 基于Plpgsql语言的ForestBlog博客系统设计与Java, JavaScript, CSS源码
- 基于Android平台的Java手机计步器设计源码
- 基于Java语言的LaiXuanZuoClient-for_Android来选座Android客户端设计源码
- 基于SpringBoot和多种语言的物业管理系统设计源码
- 基于Python的边缘云数据质量SAAS应用后端设计源码
- 基于Java与HTML技术的luyuxuan001个人库设计源码
- 基于Python和Shell语言的spider_world爬虫设计源码
- 基于SpringBoot+Vue前后端分离的在线办公系统设计源码
- 基于Java与JavaScript的724便利店CVS店员管理系统设计源码
评论0