- 浏览: 62989 次
- 性别:
- 来自: 广州
-
文章分类
最新评论
1.4 Struts 2概述
从字面上看,Struts 2好像是Struts 1的升级版本,其实Struts 2更像是WebWork,Apache之所以命名为Struts 2,笔者认为有如下原因:
Struts 1.X是目前应用最早的一种MVC架构,经过了多年的考验,被广大Java开发者所接受,大量的Java Web应用中使用了Struts 1.X,证明了Struts 1出色的稳定性和可用性。Struts 1成为Apache成功的产品之一。
WebWork兴起时间比较短,尽管展示了其更加先进的技术优势,但是被开发者接受需要时间的验证,至少国内目前使用WebWork架构开发案例比较少,更多使用WebWork架构搭建的系统一般都是出于学习和测试的目的。
Apache接手WebWork项目后,有意于借助Struts 1.X在业界的成功来推广Struts 2。Struts 2非常类似于WebWork框架,而不是Struts 1.X框架,是以WebWork为核心来实现的。
从Struts 1.X过渡到Struts 2所改变的东西比较多,但是只要领会了MVC设计思想和Java Web开发的理念,读者会发现,Struts 2将比Struts 1.X更加简单,更加灵活。如果读者熟悉WebWork框架,那么学习Struts 2是一件比较容易的事情。
1.4.1 Struts 2框架
Struts 2相对于Struts 1.X,将实现用户业务逻辑(Action)同Servlet API分离开,这种分离机制,是采用了拦截器或者拦截器栈(拦截器链)。拦截器是Struts 2的核心内容之一。
Struts 2内建了多个拦截器和拦截器栈(由多个拦截器形成的拦截器链),将用户的Web请求进行拦截处理,从而提供了更加丰富的功能,例如数据类型转换、国际化、文件上传等。图1.9所示是Struts 2框架结构图,Struts 2框架中的处理大概分为以下几个步骤:
客户端初始化一个指向Servlet容器(例如Tomcat)的请求。
这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts 2和其他框架的集成很有帮助,例如SiteMesh Plugin)。
接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action。
如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy。
ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类。
ActionProxy创建一个ActionInvocation实例。
ActionInvocation实例使用命名模式来调用,回调Action的execute方法,该execute方法先获取用户请求参数,然后它会调用业务逻辑组件来处理用户的请求。在调用Action的过程前后,涉及到相关拦截器(Interceptor)的调用。
一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模板。在表示的过程中可以使用Struts 2框架中继承的标签。
由于印刷原因,读者不能够根据图上的不同颜色来区分结构。下面使用文字进行介绍。
Servlet Filter:包括ActionContextCleanUp、Other Filters和FilterDispatcher。
Struts Core:Struts核心模块,包含ActionMapper、标签库、ActionProxy、ActionInvocation、Result。
拦截器(Interceptor)。
用户创建代码:这部分包含struts.xml、Action、视图(JSP等)。
从上面的描述读者可以看到,实现一个Struts应用,只需要配置struts.xml文件、编写Action代码和相关视图资源文件即可。图1.10所示是Struts 2架构图,从图中可以看到,从用户请求到Action执行,过程中间布满了拦截器,这些拦截器可以在Action执行之前或者执行之后来运行。拦截器是Struts 2核心内容之一,后面将会详细介绍。
★ 说明 ★
Struts 2框架流程图和WebWork框架流程图相互比较,读者会发现两者极其相似,进一步说明了Struts 2框架是WebWork的升级版本。、
图1.10 Struts 2架构图
1.4.2 Struts 2配置文件
Struts 2配置文件是用户请求(View)和业务逻辑模块(Model)Action之间联系的桥梁,开发者可以通过修改Struts 2的配置文件,来快速适应业务需求,它是整个Struts 2的精髓之一。当然,熟悉Struts 1和WebWork框架的读者对配置文件一定不会陌生。Struts 2框架配置文件一般可以分为两类:struts.xml文件和属性资源文件。
1.配置Action的struts.xml文件
配置Action的struts.xml文件,也包括用户自己定义的*.xml文件,然后通过include指令包含到struts.xml文件中。struts.xml文件包含了Action的定义,同时定义了Action返回值对应的视图资源(result),还有命名空间信息等。
★ 说明 ★
struts.xml文件是Struts 2框架的核心配置文件,开发者可以建立独立的配置文件,在struts.xml中使用include指令包含进来,后面章节将会做详细介绍。
(1)代码1.5就是一个struts.xml的例子。
代码1.5 配置文件struts.xml示例







































上面配置文件struts.xml中定义了一个Action:
<action name="login" class="pla.LoginAction">
发表评论
-
OGNL表达式 用法详解
2012-04-19 11:44 9045表达式通常用来访问页面中的各种变量,进行结果输出. s ... -
struts2.2.3最小jar
2011-07-18 11:32 1809struts2-core-2.2.3.jar :Struts ... -
转: struts2 标签 2
2011-07-05 11:41 1559一、概要:1、JSP标签技术始于JSP1.12、作用: ... -
转:struts2 标签
2011-07-05 11:39 944struts标签的继承 BodyTagSuppor ... -
struts.xml文件属性配置
2011-06-24 16:32 1230开发中发现struts还有co ... -
FilterDispatcher配置
2011-06-24 16:30 1362配置Struts 2的FilterDispatcher类时,可 ... -
struts.xml配置详解
2011-06-24 16:29 786地址:http://www.cnblogs.com/fmric ... -
struts.properties配置详解
2011-06-24 16:14 974在Struts2的核心包中org\apache\strut ... -
转:Struts 2 下载文件(12)下
2011-06-22 18:54 893(2)同时修改配置文件,增加一个input逻辑视图,修 ... -
转:Struts 2 下载文件(12)中
2011-06-22 18:53 78511.3.2 在Action中指定下载资源 前面的 ... -
转:Struts 2 下载文件(12)上
2011-06-22 18:52 109011.3 Struts 2控制文件下载 文件下载相对于 ... -
转: Struts 2多文件上传(11)下
2011-06-22 18:51 852(3)在配置文件中增加如下配置: ... -
转: Struts 2多文件上传(11) 上
2011-06-22 18:50 88311.2 多个文件上传 很多应用都要求在一个界面中可以 ... -
转: struts 2专用表达式(10)下
2011-06-22 18:49 9148.2 Struts 2的OGNL OGN ... -
转: struts 2专用表达式(10)上
2011-06-22 18:47 817OGNL是Object Graphic Navigat ... -
转: 数据校验功能-AJAX输入校验(9)下
2011-06-22 18:45 12197.4.4 建立JSP视图 建立一个reg-aja ... -
转: 数据校验功能-AJAX输入校验(9)中
2011-06-22 18:43 8967.4.2 建立业务控制器 建立一个简单的业务 ... -
转: 数据校验功能-AJAX输入校验(9)上
2011-06-22 18:41 9357.4 AJAX输入校验 Struts 2框架在使用客 ... -
转: Struts 2的拦截器(8)下
2011-06-22 18:39 870(3)在ch5包内建立一个业务控制器Reg,如代码5. ... -
转: Struts 2的拦截器(8)上
2011-06-22 18:39 764拦截器(Interceptor)是Struts 2的核 ...
相关推荐
使用Struts2核心jar包时,需要正确配置web.xml以启用Struts2框架,并在项目中引入相应的依赖。开发过程中,还需要理解并掌握Action、拦截器、结果类型等核心概念,以及如何利用配置文件进行定制化设置。同时,合理...
SSH框架是Java Web开发中的一种经典组合,由Spring、Struts2和Hibernate三个开源框架组成。这个框架集合提供了模型-视图-控制器(MVC)的完整解决方案,用于构建高效、可扩展的企业级应用程序。在SSH框架整合中,每...
Struts2的配置文件通常包括`struts-default.xml`、`struts-plugin.xml`和自定义的`struts.xml`。这些文件定义了Action、Interceptor、Result类型等,为应用提供配置信息。 4. **动态方法调用**: Struts2支持动态...
在本压缩包中,你可能会找到关于Struts2框架配置和使用的一些关键文件,这将帮助你在未来回顾或重新学习Struts2时快速上手。 首先,让我们深入了解一下Struts2的核心概念: 1. **Action类**:在Struts2中,业务...
通过学习和实践这个Struts2框架程序示例,开发者可以深入理解Struts2的工作原理,掌握如何创建Action、编写Interceptor、配置Action与Result的映射,以及如何利用Struts2的其他特性来提高开发效率和代码质量。...
Struts2通过整合多种优秀框架,如Tiles、FreeMarker、OGNL等,提供了一种强大的解决方案来构建和维护复杂的Web应用。 在描述中提到的"Structs相关实例"是为了帮助开发者更好地理解和掌握Struts2框架的实际应用。...
这个"struts2框架2016版资料day01"涵盖了Struts2的基础知识,包括框架的基本架构、核心概念和初步配置。传智播客作为知名的IT教育机构,其课程内容通常严谨且实用,适合初学者快速入门。 1. **Struts2框架概述**:...
综上所述,Struts 2框架相比于Struts 1,在设计理念、架构组成、技术实现等方面都有了较大的进步,更加适应现代Web应用的开发需求。无论是从技术的角度还是从社区支持的角度来看,Struts 2都是一款值得学习和使用的...
3. **配置文件**:Struts2的配置通常包括struts.xml,用于定义Action、结果类型、拦截器等。这些配置可以实现URL映射,指定Action执行的条件,以及设定全局规则。 4. **拦截器**:拦截器是Struts2的一大特色,它们...
实际上,Struts2并非脱胎于Struts1,而是源自另一款著名的框架——WebWork,并在其基础上进行了大量的改进和发展。 **1.1 Struts1简介及存在的问题** Struts1是由Craig McClanahan在2001年推出的第一个MVC框架。自...
3. **依赖库**:Struts2框架还依赖于其他开源库,如OGNL(Object-Graph Navigation Language)表达式语言库`ognl.jar`,用于在Action和视图之间传递数据;Freemarker或Velocity等模板引擎库,如`freemarker.jar`,...
Struts2是Java Web开发中的一款广泛应用的开源MVC框架,它构建在Apache Struts 1的基础上,提供了更为强大的功能和更好的灵活性。Struts2旨在简化Web应用开发,通过将表现层与业务逻辑层解耦,提高了代码的可维护性...
2. **配置文件**:Struts2使用XML配置文件(struts.xml)来定义Action及其相关属性,如Action的映射路径、结果类型和结果视图。此外,还可以使用注解来简化配置。 3. **拦截器(Interceptor)**:拦截器是Struts2的...
在本“Struts2框架模板”中,我们将探讨Struts2的基础知识、核心组件、配置文件、拦截器以及如何快速搭建一个基本的Struts2项目。 1. **Struts2基础** - **MVC模式**:Struts2遵循MVC模式,使得业务逻辑、数据模型...
在你提供的压缩包中,可能包含了Struts2框架的所有核心组件、依赖库和必要的配置文件,这些都是构建基于Struts2的应用所必需的。 首先,我们来看一下Struts2的核心组件: 1. **Action类**:这是业务逻辑的载体,...
3. Struts2框架的使用:在使用Struts2框架进行Web开发时,需要定义Action类来处理用户的请求,然后在struts.xml配置文件中配置Action类的映射关系。Struts2提供了丰富的类型转换器和数据校验器,可以方便的进行数据...
#### 二、Struts2框架搭建与配置 ##### 2.1 导入Jar包 - **下载Struts2的Jar包**:首先需要下载Struts2的库文件,通常包含多个必需的Jar包,如`struts2-core-2.3.24.jar`等。 - **添加必要的第三方库**:注意避免...
在"struts2框架空白模板.rar"中,我们可以预见到这将是一个包含了基本配置和结构的Struts2项目模板,使得开发者能够快速启动一个新的Struts2应用。以下是对这个模板中可能包含的内容的详细解释: 1. **核心组件与...
对于Struts2框架来说,这些jar包包含了所有必要的类和资源,使得开发者能够利用Struts2的功能来构建动态Web应用。 下载并将其放置在`WebContent/WEB-INF/lib`目录下的原因在于,这是Java Web应用的标准结构,`WEB-...
综上所述,Struts2框架的学习涉及诸多方面,包括基本架构理解、配置文件编写、拦截器和Action的使用、OGNL表达式、结果类型选择、安全注意事项以及实际开发中的问题解决。通过这份2016版的资料,开发者能够全面系统...