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

springMvc 快速体验

SpringMVC处理请求流程


SpringMVC涉及组件理解:

  1. DispatcherServlet : SpringMVC提供,我们需要使用web.xml配置使其生效,它是整个流程处理的核心,所有请求都经过它的处理和分发![ CEO ]
  2. HandlerMapping : SpringMVC提供,我们需要进行IoC配置使其加入IoC容器方可生效,它内部缓存handler(controller方法)和handler访问路径数据,被DispatcherServlet调用,用于查找路径对应的handler![秘书]
  3. HandlerAdapter : SpringMVC提供,我们需要进行IoC配置使其加入IoC容器方可生效,它可以处理请求参数和处理响应数据数据,每次DispatcherServlet都是通过handlerAdapter间接调用handler,他是handler和DispatcherServlet之间的适配器![经理]
  4. Handler : handler又称处理器,他是Controller类内部的方法简称,是由我们自己定义,用来接收参数,向后调用业务,最终返回响应结果![打工人]
  5. ViewResovler : SpringMVC提供,我们需要进行IoC配置使其加入IoC容器方可生效!视图解析器主要作用简化模版视图页面查找的,但是需要注意,前后端分离项目,后端只返回JSON数据,不返回页面,那就不需要视图解析器!所以,视图解析器,相对其他的组件不是必须的![财务]


用到了 tomcat


用到了 JBLJavaToWeb

运行效果



pom.xml

<?xml version="1.0" encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.cool</groupId><artifactId>ssm-springmvc-part</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><modules><module>springmvc-base-quick</module><module>springmvc-study-one</module></modules><properties><spring.version>6.0.6</spring.version><servlet.api>9.1.0</servlet.api><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><!-- springwebmvc web - servlet ioc - spring-context mvc - spring-webmvc --><dependencies><!-- springioc相关依赖 --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><!-- web相关依赖 --><!-- 在 pom.xml 中引入 Jakarta EE Web API 的依赖 --><!-- 在 Spring Web MVC 6 中,Servlet API 迁移到了 Jakarta EE API,因此在配置 DispatcherServlet 时需要使用 Jakarta EE 提供的相应类库和命名空间。错误信息 “‘org.springframework.web.servlet.DispatcherServlet’ is not assignable to ‘javax.servlet.Servlet,jakarta.servlet.Servlet’” 表明你使用了旧版本的 Servlet API,没有更新到 Jakarta EE 规范。 --><dependency><groupId>jakarta.platform</groupId><artifactId>jakarta.jakartaee-web-api</artifactId><version>${servlet.api}</version><scope>provided</scope></dependency><!-- springwebmvc相关依赖 --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><!-- lombok插件: 可以使用 @Data 给 实体类自动添加setter、getter、toString方法 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.28</version></dependency><!-- post请求,接收json格式的参数,的时候 会报一个 415的错误,因为,java原生api识别不了json,只支持 param、path参数 解决办法: 这个依赖 + 在配置类上使用@EnableWebMvc(给springmvc的handlerAdpater配置json转化器) --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.15.0</version></dependency></dependencies></project>

HelloController

packagecom.cool.controller;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.ResponseBody;@ControllerpublicclassHelloController{@RequestMapping("springmvc/hello")// 对外访问的地址【到handlerMapping注册的注解】@ResponseBody// 直接返回字符串给前端,不要找视图解析器publicStringhello(){System.out.println("HelloController.hello");// 返回给前端return"hello springmvc!";}}

MvcConfig

packagecom.cool.config;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.ComponentScan;importorg.springframework.context.annotation.Configuration;importorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;importorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;/** * 要做2件事情 * 1、controller 配置ioc容器 * 2、hanglerMapping、handlerAdapter 加入到ioc容器 */@Configuration@ComponentScan("com.cool.controller")publicclassMvcConfig{@BeanpublicRequestMappingHandlerMappinghandlerMapping(){returnnewRequestMappingHandlerMapping();}@BeanpublicRequestMappingHandlerAdapterhandlerAdapter(){returnnewRequestMappingHandlerAdapter();}}

SpringMvcInit 需要继承 AbstractAnnotationConfigDispatcherServletInitializer

packagecom.cool.config;importorg.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;/** * 可以被web项目加载,会初始化ioc容器,会设置dispatcherServlet的地址 */publicclassSpringMvcInitextendsAbstractAnnotationConfigDispatcherServletInitializer{@OverrideprotectedClass<?>[]getRootConfigClasses(){returnnewClass[0];}// 设置我们项目对应的配置@OverrideprotectedClass<?>[]getServletConfigClasses(){returnnewClass[]{MvcConfig.class};}// 配置springmvc内部自带servlet的访问地址@OverrideprotectedString[]getServletMappings(){returnnewString[]{"/"};}}
http://www.cnnetsun.cn/news/703884.html

相关文章:

  • 电力线路器材行业LIMS系统应用全解析
  • Inteva DELJIT 报文解析:从 EDI 到 JSON 的结构化转换与字段说明
  • 计算机毕业设计springboot大学目标规划与落地平台的设计与实现 基于SpringBoot的大学生成长目标追踪与激励系统 融合SpringBoot+微信小程序的在校生涯规划与执行平台
  • Python系列Bug修复|如何解决 pip install 安装报错 ModuleNotFoundError: No module named ‘rich’ 问题
  • 【图像去噪】基于均值+中值+软硬阙值小波变换图像去噪附Matlab代码
  • 降本增效的终极实践:企业级智能体开发平台在人力资源数字化中的场景落地
  • 供应商该不该换?只需要看清这 4 个指标:交付、质量、成本、协同
  • 【专辑】AI大模型应用开发入门-拥抱Hugging Face与Transformers生态 - 使用Transformers加载预训练模型 - 使用AutoModel自动模型方式调用Bert预训练模型
  • 模型量化在边缘计算AI应用中的关键作用
  • 持续强化学习(Continual Reinforcement Learning, CRL)和边缘智能(Edge Intelligence, EI)
  • 电子信息毕设 stm32 wifi远程可视化与农业灌溉系统(源码+硬件+论文)
  • 5 款 AI 写论文哪个好?实测宏智树 AI:毕业论文的智能通关天花板
  • 全网最细,电商平台项目测试常遇bug+测试点(汇总)
  • SSM学生综合考评系统b8vlm(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
  • 2026年SRM采购系统排名:全场景适配+生态集成,鲸采云成标杆
  • 基于分时电价和蓄电池控制策略用电优化研究Matlab代码
  • 【性能测试】11_JMeter _JMeter逻辑控制器
  • 计算机毕业设计springboot疫情期间高校员工管理系统 基于Springboot框架的高校教职工疫情管理信息化系统 疫情防控期间高校人员管理系统的Springboot实现
  • POF|西工大廖晖、刘溢浪等:数据驱动的湍流建模:基于符号回归与数据同化的双向耦合框架
  • 【工具变量】国家数据知识产权试点DID(2000-2025年)
  • select chain_id,num_waiters,in_wait_sesc,osid,blocker_osid,substr(wait_event_text,1,30) from v$wait_
  • 查重降 AIGC 双保险!宏智树 AI 教你告别学术不端风险
  • 创客匠人赋能下的知识变现:AI 驱动的组织重构,创始人 IP 的规模化增长新引擎
  • 退休族“玩学”新潮:红松小课如何引爆知行合一研学热?
  • 当红松小课“开”进风景里,银发文旅的“学游融合”新样本
  • 【滤波跟踪】基于卡尔曼滤波实现分布式传感器采集目标的位置或信号强度(RSSI)数据目标运动轨迹进行实时预测与校正,输出跟踪误差(如平均距离误差、RMSE)并可视化跟踪结果matlab代码
  • 【图像隐藏】基于DCT算法实现彩色图像数字水印嵌入+攻击+提取(含PSNR、NCC、MSSIM)附Matlab代码
  • 收藏!Java程序员转行大模型开发:从入门到落地的全指南
  • 合作品牌|方格光年:未来感自助KTV
  • 钵施然播种机,让农作效率更高!