SpringMvc与Struts2

发布于:2025-03-06 ⋅ 阅读:(127) ⋅ 点赞:(0)

一、Spring MVC

1.1 概述

Spring MVC 是 Spring 框架的一部分,是一个基于 MVC 设计模式的轻量级 Web 框架。它提供了灵活的配置和强大的扩展能力,适合构建复杂的 Web 应用程序。

1.2 特点
  1. 轻量级:与 Spring 框架无缝集成,依赖注入和面向切面编程(AOP)支持良好。
  2. 灵活性:支持多种视图技术(JSP、Thymeleaf、Freemarker 等)。
  3. 注解驱动:通过注解(如 @Controller、@RequestMapping)简化配置。
  4. REST 支持:原生支持 RESTful 风格的 Web 服务。
  5. 测试友好:易于单元测试和集成测试。
1.3 核心组件
  1. DispatcherServlet:前端控制器,负责接收所有请求并将其分发给相应的处理器。
  2. HandlerMapping:映射请求 URL 到具体的处理器(Controller)。
  3. Controller:处理请求并返回模型和视图。
  4. ModelAndView:封装模型数据和视图信息。
  5. ViewResolver:解析视图名称并返回具体的视图对象(如 JSP、Thymeleaf 等)。
1.4 工作流程

在这里插入图片描述

  1. 客户端发送请求到 DispatcherServlet。
  2. DispatcherServlet 通过 HandlerMapping 找到对应的 Controller。
  3. Controller 处理请求并返回 ModelAndView。
  4. DispatcherServlet 通过 ViewResolver 解析视图。
  5. 视图渲染并返回响应给客户端。
1.5 示例代码
@Controller
public class HelloController {
    @RequestMapping("/hello")
    public ModelAndView hello() {
        ModelAndView modelAndView = new ModelAndView("hello");
        modelAndView.addObject("message", "Hello, Spring MVC!");
        return modelAndView;
    }
}

二、Struts2

2.1 概述

Struts2 是 Apache Struts 项目的第二代框架,是一个基于 MVC 设计模式的 Web 框架。它继承了 Struts1 的优点,并引入了 WebWork 的设计理念,提供了更强大的功能和更灵活的配置。

2.2 特点
  1. 强大的拦截器机制:通过拦截器实现 AOP 功能(如日志、权限检查等)。
  2. 配置文件驱动:通过 XML 文件配置 Action 和拦截器。
  3. OGNL 表达式:支持强大的数据绑定和表达式语言。
  4. 插件机制:通过插件扩展框架功能。
  5. 社区支持:拥有活跃的社区和丰富的插件。
2.3 核心组件
  1. FilterDispatcher:前端控制器,负责接收所有请求并将其分发给相应的 Action。
  2. Action:处理请求并返回结果(如 SUCCESS、ERROR 等)。
  3. Interceptor:拦截器,用于在 Action 执行前后进行处理(如日志、权限检查等)。
  4. Result:根据 Action 的返回结果选择相应的视图(如 JSP、Freemarker 等)。
  5. ValueStack:用于在视图和 Action 之间传递数据。
2.4 工作流程

在这里插入图片描述

  1. 客户端发送请求到 FilterDispatcher。
  2. FilterDispatcher 通过配置文件找到对应的 Action。
  3. Interceptor 在 Action 执行前后进行处理。
  4. Action 处理请求并返回结果。
  5. Result 根据结果选择视图并渲染响应。
2.5 示例代码

(1)Action 类

public class HelloAction extends ActionSupport {
    private String message;

    public String execute() {
        message = "Hello, Struts2!";
        return SUCCESS;
    }

    public String getMessage() {
        return message;
    }
}

(2)配置文件(struts.xml)

<struts>
    <package name="default" extends="struts-default">
        <action name="hello" class="com.example.HelloAction">
            <result name="success">/hello.jsp</result>
        </action>
    </package>
</struts>

三、Spring MVC 与 Struts2 的对比

特性 Spring MVC Struts2
设计理念 轻量级,与 Spring 框架无缝集成 基于拦截器的 MVC 框架
配置方式 注解驱动,支持 XML 配置 配置文件驱动(struts.xml)
拦截器机制 通过 AOP 实现 内置强大的拦截器机制
数据绑定 支持多种数据绑定方式 使用 OGNL 表达式进行数据绑定
视图技术 支持多种视图技术(JSP、Thymeleaf 等) 支持多种视图技术(JSP、Freemarker 等)
REST 支持 原生支持 RESTful 风格 需要插件支持 RESTful 风格
测试友好性 易于单元测试和集成测试 测试相对复杂
社区支持 社区活跃,文档丰富 社区活跃,但逐渐被 Spring MVC 取代

网站公告

今日签到

点亮在社区的每一天
去签到