Struts2笔记复习
Struts2是Apache Struts框架的第二代版本,它是在WebWork社区和Struts社区合并后形成的,旨在改进和扩展其前一代Struts1的功能。以下将详细介绍Struts2的一些关键特性及其与Struts1的主要区别:
1. **Action类设计**:
- Struts1中的Action类继承自`Action`类,而Struts2更为灵活,Action类可以是普通Java类,只要包含`execute`方法即可,甚至可以实现`Action`接口或继承自`ActionSupport`类,这样增加了代码的灵活性。
2. **线程模型**:
- Struts1采用单例模式,这可能导致线程安全问题,而Struts2采取多例模式,避免了这些问题,提供了更好的并发处理能力。
3. **Servlet依赖**:
- Struts1依赖Servlet API,而在Struts2中,虽然仍然支持Servlet,但不再强制依赖,提高了框架的灵活性。
4. **可测试性**:
- Struts1的测试需要在完整的Web服务器环境中进行,而Struts2支持离线单元测试,允许开发者在独立环境中验证Action的行为。
5. **输入处理**:
- Struts1通过`ActionForm`来管理用户输入,与Vo类存在重复代码;Struts2则可以直接使用Vo类或属性来获取输入,简化了代码结构。
6. **表达式语言**:
- Struts1主要使用EL(Elvis Language),而Struts2不仅支持EL,还引入了更强大的OGNL(Object-Graph Navigation Language),提供了更丰富的表达能力。
7. **类型转换**:
- Struts1依赖`BeanUtil`库进行类型转换,而Struts2内建了转换器,简化了类型映射过程。
8. **文件上传支持**:
- Struts2的文件上传功能强大,需要依赖`commons-fileupload.jar`和`commons-io.jar`等库。开发者可以使用 `<s:file>`组件定义文件上传表单,对应领域对象(如`FileInfo`)会包含File类型的属性,方便处理上传的文件。
Struts2在设计上更加现代化和模块化,注重性能、可测试性和用户体验,是企业级Web应用开发的流行选择。通过对比Struts1,Struts2在许多方面都实现了显著的提升,使得开发流程更加高效和易于维护。