Struts2笔记
Struts2是基于Java的开源Web应用框架,它在MVC(Model-View-Controller)架构模式的实现上是对经典Struts1的升级和改进。Struts1曾经是Java Web开发中的主流框架,尤其是Model1(JSP+JavaBean)和Model2(JSP+Servlet+JavaBean)模式的代表,后者采用的是MVC架构的实践形式。
学习Struts2首先需要熟悉Web开发的基本模式和Struts1的工作原理。Struts1的核心是ActionServlet,它负责处理用户的请求并将结果转发给相应的Action。Action是控制器的角色,通过execute方法处理业务逻辑,同时使用Servlet API(如HttpServletRequest和HttpServletResponse)进行数据交互。然而,Struts1存在一些问题:
1. **过度依赖Servlet API**:Action类中的execute方法直接使用了Servlet API,这使得Action无法脱离服务器环境进行独立测试,因为没有实际的请求和响应对象。
2. **项目组件高度依赖Struts API**:Action类如SaveUserAction继承自Action或者其派生类,这导致项目对Struts框架的依赖过于紧密,增加了维护和扩展的难度。
Struts2相对于Struts1的改进主要包括:
- **减轻对Servlet API的依赖**:Struts2引入了拦截器(Interceptor)机制,这些拦截器可以在Action执行前后执行自定义操作,从而减少了对底层API的直接依赖。这样,Action可以更加模块化和可测试。
- **更好的解耦**:Struts2采用了声明式编程,通过XML配置文件定义组件之间的关系,而不是像Struts1那样依赖代码逻辑,这有助于降低组件间的耦合度。
- **提高开发效率和学习曲线**:Struts2使用更灵活的标签库(Tiles、Freemarker等)和注解(@Action、@Result等),简化了页面和业务逻辑的编写,使得开发过程更为直观和高效。
- **更好的测试性和扩展性**:由于Struts2的拦截器机制和组件分离,使得测试更容易进行,同时也为未来的功能扩展提供了更大的灵活性。
Struts2的工作原理相比Struts1有了显著的进步,它的核心是DispatcherServlet,它负责接收请求并根据配置决定哪个Action或拦截器应该处理。此外,Struts2还支持Action的分层和模块化,以及国际化、缓存、文件上传等功能,使其成为现代Web开发中广泛应用的首选框架之一。
总结来说,Struts2笔记强调了Struts2作为Struts1的进化版本,是如何通过减少对底层API的依赖、提高模块化和灵活性,以及优化开发体验来适应现代Web开发需求的。