3.3 Struts2的核心概念
3.3.1 核心概念
在上面的运行流程图里,看到了很多Struts2的模块。本节将简要描述一下那些与实际开发息息相关的概念。
1:FilterDispatcher
Struts2的前端控制器,也是Struts2的MVC中的控制器部分。在实际开发中,只需要在web.xml中配置一次即可。但是一定要注意,如果还有其他的过滤器,那么FilterDispatcher的配置通常要出现在最后。
2:Action
动作类,作为MVC中的模型部分,既封装业务数据,也负责处理用户的请求,execute方法就是默认的动作处理方法。
3:Result
结果,代表Action运行之后要转向的下一个页面。Struts2本身支持多种结果类型,如jsp、velocity、freemarker、jasperreports等,在同一个web应用中,各种结果类型还能混用。
4:Interceptor
拦截器是Struts2中一个重要的概念。虽然,在做helloworld时,它并没有明显出现在我们视野里,但是每一个Struts2工程都一定使用了拦截器,只是使用了Struts2自带的内建拦截器与默认拦截器配置而已。
Struts2的许多功能都是由拦截器完成的,比如:
- 帮你把request参数设置到Action的属性中。
- 实现上传文件
- 防止重复提交
- 实现验证框架
- 通用错误处理
- 程序国际化
- 等等……
5:ActionContext、值栈与OGNL
虽然ActionContext没在架构图中出现,但是它扮演着至关重要的角色。Struts2在每个Action刚开始运行的时候,都会单独为它建立一个ActionContext,把所有能访问的数据,包括请求参数(request的parameter)、请求的属性(request的Attribute)、会话(session)信息等等,都放到ActionContext中。
这样一来,在以后取值、赋值的时候,就只需要访问ActionContext就可以了,所以说ActionContext可以被认为是每个Action拥有的一个独立的内存数据中心。
对象图导航语言OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(Expression Language,简称为EL)。它通过简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。
值栈可以用来容纳多个对象,主要用来存放一些临时对象。当使用OGNL访问值栈中对象的属性的时候,指定属性的引用会引用更靠近值栈栈顶方向对象,晚进栈的对象会覆盖早进栈的对象。简单点说,Struts2用值栈为我们使用Struts2做了很多引用上的简化,主要是缩短了OGNL表达式的长度。另外,值栈也可以作为一个内存数据中心,来存放一些Struts2标签临时定义的数据。
6:Struts2标签
Struts2的标签库功能强大,使用简单,大大简化了视图开发的工作。而且,它与框架的其他部分也非常自然的结合,如国际化、验证等等。
7:自动类型转换
在Action中可以有多种方式来对应页面的数据,从而自动获取页面的值。但是,从request里面接收的值都是String类型的,而Action的属性可以是各种类型的。这就需要Struts2的类型转换机制来支持,它节省了我们大量的手工进行类型转换的开发时间。
Struts2已经内置了大量的类型转换方式:
- 各种私有类型及其包装类
- 常见的各种数据类型,如String、Date、BigDecimal等等
- 各种集合概念,包括数组、Set、List、Map
- 甚至可以是枚举
Struts2提供的这些就已经够用了,还可以自己实现特殊的类型转换器,以满足特殊的功能需要。
8:国际化
i18n通常作为“国际化”的简称,其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数。
web应用通常应该支持多国语言,可以根据客户端请求所来自的国家和语言显示不同语种的用户界面。这样,当需要在应用程序中添加对一种新语言的支持时,就无需修改应用程序的代码了。
Struts2非常自然的实现了国际化,我们不需要考虑更多的事情,只是按照Struts2的要求,把不同语言的信息,放到对应的位置即可。
9:验证框架
做一个成熟、稳定的web应用,无论如何服务器端验证是少不了的。通常情况下,我们不会完全相信客户端传递过来的数据,应该在真正调用业务逻辑之前对数据进行校验,如果用户提交的数据不符合要求,就不会去调用业务逻辑。
Struts2为我们提供了一套完整、严密,可扩展的验证框架,保证在Action运行之前会判断用户提交的信息是否完整、符合条件。
小结:
好了,到这里应该对Struts2有一个较为系统和完整的了解了,接下来,就来对实际开发中需要的各个部分,进行系统的、全面的、深入的讲解,以帮助大家真正掌握Struts2的开发,成为应用Struts2开发的高手。
相关推荐
首先,让我们深入理解Struts2的核心概念和技术特性: 1. **MVC模式**:Struts2基于Model-View-Controller(MVC)设计模式,将业务逻辑、数据和用户界面分离,提高了代码的可维护性和可复用性。在这个源代码中,你会...
### 知识点一:Struts2入门(MVC HelloWorld) #### 1.1 Struts2简介 ...以上就是关于“研磨Struts2”的主要知识点梳理,通过深入学习这些内容,开发者可以更好地掌握Struts2框架的核心技术和实践技巧。
在第三章,作者详细剖析了Struts2的系统架构和运行流程,这对于理解框架内部机制至关重要。Struts2的核心组件包括拦截器、结果处理(Result)、值栈(ValueStack)等,它们协同工作,确保请求的正确处理和响应的高效...
从给定的文件信息来看,这是一份关于Struts2框架深入解析的系列文章,涵盖了Struts2的基础、架构、核心组件、高级特性等多个方面,旨在帮助读者全面掌握Struts2框架的应用与实践。以下是对该系列文章所涵盖的关键...
《研磨Struts2》这本书是专门针对Struts2框架的学习指南,通过深入浅出的方式讲解了Struts2的核心概念和技术。其配套的PPT和视频旨在帮助读者更直观地理解书中的理论知识,并将其付诸实践。 在研读《研磨Struts2》...
该书深入浅出地讲解了Struts 2框架的核心概念和技术细节,对于初学者来说是一本很好的入门教材;同时,书中也涵盖了一些高级主题,对有经验的开发者来说也有很大的参考价值。 ### 书籍内容概览 1. **基础知识**:...
《研磨Struts2》这本书主要介绍了Struts2的基础知识、实践应用以及其核心概念。 1. **MVC模式**:MVC是一种设计模式,用于分离应用程序的业务逻辑、数据和用户界面。在Struts2中,Action类代表Controller,负责处理...
3. **《程序员编程艺术第一~二十七章集锦与总结(教你如何编程)%28by_July%29定稿版》**:这本书可能是作者July的编程经验总结,包含了编程艺术的多个方面,从基础到进阶,可能涵盖良好的编程习惯、设计模式、算法...
这本书将带你深入了解Struts2的配置、拦截器、动作、结果类型等核心概念,以及如何与Spring、Hibernate等其他框架集成,实现更高效、灵活的开发。 总的来说,这三本书籍覆盖了Java开发的多个关键领域,从底层的JVM...