当前位置: 首页 > article >正文

SpringMvc与Struts2

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

http://www.kler.cn/a/573171.html

相关文章:

  • Switch开关的防抖监听器
  • libcoap在Ubuntu下的编译(基于CMake)
  • Kafka、RabbitMQ、RocketMQ的区别
  • vscode user settings.json分享
  • 数据守护:备份文件的重要性及自动化实践
  • Linux磁盘情况查询
  • Linux下的shell指令(一)
  • Linux基础IO
  • vLLM代码推理Qwen2-VL多模态大模型(远程服务器解决方案,无需UI)
  • 国内支持Stable Diffusion模型的平台
  • ASP .NET Core 学习(.NET9)Serilog日志整合
  • 什么是XSS
  • 【每日学点HarmonyOS Next知识】web滚动、事件回调、selectable属性、监听H5内部router、Grid嵌套时高度设置
  • valgrind 检测多线程 bug,检测 并发 bug concurrent bug parallel bug
  • 算法比赛中处理输入和输出
  • docker:配置 Docker 镜像加速器
  • Mybatis中的设计模式
  • linux如何在某个文件夹下查看所有文件(层级只到当前文件夹的两层)并找到‘XXXX’ 这个单词
  • 基于 Next.js(前端)和 FastAPI(后端)使用 WebSocket(满血版DeepSeek-R1回答)
  • 大模型核心要素完全解析:从数字神经元到智能对话的奥秘