Struts 2 是一个强大的Java Web应用程序框架,它基于Model-View-Controller(MVC)设计模式,提供了灵活的架构来构建可维护性和扩展性良好的Web应用。在深入讲解Struts 2之前,我们先来了解一下MVC模式的基本概念。
**MVC模式**:
Model代表业务逻辑层,处理数据和业务规则;View是用户界面,负责展示数据;Controller作为桥梁,处理用户请求并调用Model更新数据,然后通知View进行视图更新。
**Struts 2的核心组件**:
1. **Action类**:它是业务逻辑的载体,实现了`com.opensymphony.xwork2.Action`接口或其子接口,处理用户的请求,并返回一个表示结果的字符串。
2. **ActionContext**:它持有当前请求的上下文信息,如参数、session、request、response等。
3. **配置管理器**:通过XML配置文件或注解来定义Action的映射、拦截器链以及结果视图。
4. **Interceptor(拦截器)**:类似于AOP(面向切面编程),提供预处理和后处理功能,例如日志、权限验证、事务控制等。
5. **Result**:负责将Action执行的结果转发到相应的视图,可以是JSP、Freemarker、Velocity等模板引擎。
6. **ValueStack**:用于存储Action上下文中的对象,方便在JSP中通过OGNL(Object-Graph Navigation Language)表达式访问。
**Struts 2与WebWork的结合**:
Struts 2 的核心技术基础是WebWork,它在Struts 1的基础上进行了许多改进,如更强大的表达式语言(OGNL)、拦截器机制、更简单的配置等。WebWork的这些特性被集成到Struts 2中,使得Struts 2成为了一个高效且易用的MVC框架。
**Struts 2的生命周期**:
1. 用户发起HTTP请求。
2. Struts 2 框架接收到请求,解析请求参数。
3. 拦截器链开始执行,按照配置顺序逐个调用拦截器。
4. 当拦截器链执行完毕,Action被实例化并执行对应的execute方法。
5. execute方法返回结果字符串,根据该结果字符串决定转发到哪个视图。
6. 视图渲染,显示结果给用户。
**文件结构与目录**:
在提供的文件列表中,我们看到有`WEB-INF`、章节目录(如`ch20`、`ch9`等)和`pages`目录。这可能表示书中包含了Web应用的实际部署结构,`WEB-INF`通常包含`web.xml`配置文件,章节目录可能包含各章节讲解的源代码示例,而`pages`目录可能是存放JSP或其他视图文件的地方。
学习Struts 2,你需要理解它的核心概念,熟悉Action、Interceptor、Result和配置管理。同时,掌握如何创建和配置Action,编写拦截器,以及如何利用OGNL在视图中动态展示数据。通过实际项目的练习,你可以更好地掌握Struts 2框架,并提升Java Web开发能力。