Struts2 Action中代码详解与架构对比

需积分: 3 7 下载量 102 浏览量 更新于2024-08-17 收藏 924KB PPT 举报
Struts2 是一个由 Craig R. McClanahan 开发并捐献给 Apache 软件基金会的 MVC (Model-View-Controller) 框架,于 2005 年发布,旨在解决 Web 应用程序开发中的常见问题,如页面导航管理、数据验证、国际化支持等。相较于 Struts1,Struts2 有以下显著特点: 1. **松耦合设计**:Struts2 不再依赖 Servlet API 和 Struts API,采用了无侵入式设计,使得应用更加灵活,易于维护。 在 Action 类的 `execute` 方法中,Struts1 的示例代码: ```java public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {} ``` 在 Struts2 中,这样的控制逻辑更为简洁。 2. **拦截器机制**:Struts2 引入了拦截器,支持面向切面编程(AOP),可以实现如权限控制等高级功能,增强了应用程序的灵活性。 3. **类型转换器**:Struts2 内置类型转换功能,无需像 Struts1 那样手动注册,简化了数据处理过程。 4. **多表现层支持**:Struts2 支持 JSP、FreeMarker、Velocity 等多种视图技术,提高了开发者的灵活性和选择性。 5. **输入校验优化**:Struts2 允许针对特定方法进行输入校验,解决了 Struts1 中全局校验的不足,使得错误处理更加精确。 6. **国际化资源管理**:Struts2 提供了全局、包级别和 Action 级别的国际化资源文件管理,便于不同环境下的本地化需求。 升级从 Struts1.2 到 Struts2 的关键变化包括控制器模式的转变,Struts1 使用的是 ActionServlet,而 Struts2 则引入了一个过滤器来实现类似的功能。这不仅简化了架构,还引入了拦截器链,允许在请求处理的不同阶段执行定制操作。 在 JSP 页面中,Struts2 使用 OGNL 表达式语言(#号语法)来访问这些范围内的变量,如 `request.username`、`session.username` 等,方便数据的显示和绑定。这使得页面模板与业务逻辑分离,更符合 MVC 设计原则。 总结来说,Struts2 的主要优势在于其模块化设计、增强的功能性和更好的用户体验,对于现代 Web 开发者来说,它是一个高效且易于扩展的工具。通过深入理解这些核心概念,开发者可以更好地利用 Struts2 构建高性能、可维护的 Web 应用程序。