SpringMvc与Struts2

news/2025/3/6 12:11:58/

一、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.ppmy.cn/news/1577062.html

相关文章

valgrind 检测多线程 bug,检测 并发 bug concurrent bug parallel bug

valgrind --toolhelgrind ./your_program 如果检测的对象是大型程序&#xff0c;可以设定仅在某些函数中开启 valgrind 的检测&#xff1a; Valgrind 提供了一些客户请求&#xff08;client requests&#xff09;&#xff0c;可以在代码中插入特定的宏来控制 Valgrind 的行为。…

Windows 图形显示驱动开发-WDDM 3.2-本机 GPU 围栏对象(一)

本文介绍 GPU 围栏同步对象&#xff0c;该对象可用于 GPU 硬件计划阶段 2 中真正的 GPU 到 GPU 同步。 从 Windows 11 版本 24H2 (WDDM 3.2) 开始支持此功能。 图形驱动程序开发人员应熟悉 WDDM 2.0 和 GPU 硬件计划阶段 1。 WDDM 2.x 的受监视围栏同步对象 WDDM 2.x 的受监视…

2025最新Transformer模型及深度学习前沿技术应用

第一章、注意力&#xff08;Attention&#xff09;机制 1、注意力机制的背景和动机&#xff08;为什么需要注意力机制&#xff1f;注意力机制的起源和发展里程碑&#xff09;。 2、注意力机制的基本原理&#xff08;什么是注意力机制&#xff1f;注意力机制的数学表达与基本公…

鬼泣:项目前置设置杂项

能帮到你的话&#xff0c;就给个赞吧 &#x1f618; 文章目录 插件niagara ui render&#xff1a;在 UI 中渲染 Niagara 特效skeletal editor&#xff1a;编辑骨骼&#xff0c;调整骨骼动画motion warping&#xff1a;根据目标自动调整角色动画。animation warping&#xff1a;…

2024华为OD机试真题-整数编码算法实现(C++)-E卷-100分

2024华为OD机试题库-(E卷+D卷)-(JAVA、Python、C++) 目录 题目描述 输入描述 输出描述 用例1 用例2 用例3 考点 题目解析 代码 c++ 题目描述 实现一种整数编码方法,使得待编码的数字越小,编码后所占用的字节数越小。 编码规则如下: 编码时7位一组,每个字节的低…

LLM 模型 Prompt 工程

目录 1、Prompt 基础概念 2、Prompt 主要构成 3、Prompt 相关技术 3.1、思维链 3.2、自洽性 3.3、思维树 1、Prompt 基础概念 Prompt 工程是通过设计和优化自然语言提示&#xff08;Prompt&#xff09;&#xff0c;引导LLM生成符合特定任务需求的输出的技术。其核心目标是…

基于Android平台的SOME/IP测试模块 EPT-ETS

在汽车产业智能化、网联化的时代浪潮中&#xff0c;汽车电子系统正经历着前所未有的变革。SOME/IP&#xff08;Scalable service-Oriented MiddlewarE over IP&#xff09;协议作为汽车电子通信领域的关键技术&#xff0c;其稳定性、可靠性与高效性对于整车性能的提升起着至关重…

Qt常用控件之滑动条QSlider

滑动条QSlider QSlider 是一个滑动条控件&#xff0c;可以用鼠标拖动。QSlider 有水平滑动条&#xff08;horizontalSlider&#xff09;和垂直滑动条&#xff08;verticalSlider&#xff09;两种。 1. QSlider属性 属性说明value当前数值。minimum最小值。maximum最大值。si…