### Struts2.0 学习资料核心知识点详解
#### 一、Struts2简介与特点
Struts2是基于Struts1发展而来的一个MVC(Model-View-Controller)框架,它继承了Struts1的优点,并在此基础上进行了大量的改进和优化。Struts2框架在设计上更加灵活和强大,其主要特性包括但不限于以下几点:
1. **统一性**:Struts2结合了Struts1和WebWork的优点,实现了两者的完美融合。
2. **灵活性**:相较于Struts1,Struts2在处理Action的方式上更为灵活。Struts1中的Action类必须继承自特定的基类,而Struts2则允许使用普通的Java对象(POJO)作为Action。
3. **依赖注入**:Struts2支持依赖注入,这使得开发者可以更容易地管理应用程序的组件之间的依赖关系。
4. **拦截器机制**:Struts2提供了一种强大的拦截器机制,它可以对请求进行预处理和后处理,从而实现如权限控制、数据校验等功能。
5. **国际化支持**:Struts2提供了很好的国际化支持,可以轻松实现多语言的应用程序。
#### 二、Struts2与Struts1的主要区别
1. **Action处理方式**:
- **Struts1**:Action类必须继承自特定的基类,如`Action`或`DispatchAction`,并且需要实现特定的方法(如`execute`)来处理请求。
- **Struts2**:Action可以是任意的Java对象(即POJO),这极大地简化了开发过程,提高了代码的可读性和可维护性。
2. **表单处理**:
- **Struts1**:使用`ActionForm`对象来封装表单数据,需要为每个表单创建对应的`ActionForm`。
- **Struts2**:虽然也支持类似`ActionForm`的功能(通过`ModelDriven`接口),但更推荐直接使用POJO来处理表单数据,这样更加灵活且易于管理。
3. **依赖注入**:
- **Struts1**:依赖注入的支持较弱。
- **Struts2**:内置了依赖注入机制,可以通过配置文件或注解的方式方便地实现依赖注入。
4. **拦截器**:
- **Struts1**:没有内置的拦截器机制。
- **Struts2**:提供了强大的拦截器机制,可以对请求进行预处理和后处理。
5. **视图技术**:
- **Struts1**:主要使用JSP作为视图技术。
- **Struts2**:除了支持JSP外,还支持FreeMarker、Velocity等多种视图技术。
#### 三、Struts2的关键组件和技术
1. **Action**:Struts2中的Action可以是普通的Java对象,它通常负责接收请求参数、处理业务逻辑并返回相应的结果。
2. **配置文件**:Struts2使用XML配置文件来定义Action及其相关的拦截器、结果等。
3. **拦截器**:拦截器是Struts2中非常重要的概念,它们可以在请求到达Action之前或之后执行,用于实现各种跨切关注点的功能,如日志记录、事务管理等。
4. **OGNL(Object-Graph Navigation Language)**:这是一种强大的表达式语言,用于获取或设置对象属性,Struts2利用OGNL来解析请求参数并与Action中的字段进行映射。
5. **标签库**:Struts2提供了一系列自定义标签,这些标签可以简化前端页面的编写,提高开发效率。
6. **国际化**:Struts2提供了丰富的国际化支持,可以轻松实现多语言应用。
Struts2不仅在功能上进行了全面升级,在设计理念上也更加符合现代软件开发的需求。对于那些希望构建高性能、可扩展的Web应用的开发者来说,Struts2无疑是一个值得深入学习的强大工具。