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

SpringMVC相关知识集锦----1

一、springMVC框架的了解

springMVC是一个基于java的实现了MVC设计模式的请求驱动类型的轻量级web框架,通过把model,view,controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发.

二、springMVC主要组件

1.前端控制器(dispatcherservlet):接收请求,响应结果,相当于转发器,有了dispatcherservlet就减少了其他组件之间的耦合度
2.处理器映射器(handlermapping):根据请求的url来查找handler
3.处理器适配器(handleradapter):负责执行handler
4.处理器(handler):处理业务逻辑的java类
5.视图解析器(viewresolver):进行视图解析,根据视图逻辑名将modelandview解析成真正的视图
6.视图(view):view是一个接口,支持不同的视图类型

三、springMVC支持的转发和重定向写法

1)转发:
    forward:在返回值前面加"forward";
2)重定向:
   redirect:在返回值前面加"redirect"

四、springMVC常用注解

1.@RequestMapping:用于处理请求URL映射的注解,可用于类或方法上.用于类上,则表示类中所有响应请求的方法都是以该地址作为父路径
2.@RequestBody:注解实现接收http请求的json数据,将json转化为java对象
3.@ResponseBody:注解实现将controller方法返回对象转化为json对象响应给客户
4.@PathVariable:用户从url路径上获取指定参数,标注在参数前
5.@RequestParam:标注在方法参数前,用于对传入的参数做一些限制支持三个属性(value;required;defaultvalue)
6.@ControllerAdvice:标注在一个类上,表示该类是一个全局异常处理的类
7.@ExceptionHandler:标注在异常处理类的方法上,表示该方法可以处理的异常类型

五、springMVC统一异常处理的思想和实现方式

使用springMVC之后,代码调用者是springMVC框架,也就是说最终的异常会抛到框架中,然后由框架指定异常处理类进行统一处理
*方式一:创建一个自定义异常处理器,并实现里面的异常处理方法,然后将这个类交给spring容器管理
*方式二:在类上加注解表明这是一个全局异常处理类
             在方法上加注解,在ExceptionHandler中有一个value属性,可以指定可以处理的异常类型

六、后端怎么接收前端请求体的请求?

1.在springMVC中,可以使用各种注解来处理HTTP请求,并从请求体中提取数据。常见的注解包括@RequestBody/@RequestParam/@PathVariable等。
使用@RequestBody处理请求体:@RequestBody注解可以将请求体直接映射到一个java对象上。
使用@RequestParam处理请求参数:如果前端发送的是查询参数,可以使用@RequestParam注解
底层实现原理:
1.接收请求:DispatherServlet:(springMVC的核心,它负责将请求分发给适当的处理器)
接收请求:DispatherServlet接收前端发送的http请求
查找处理器:使用handlermapping找到合适的处理器
调用处理器:使用handleradapter调用处理器,并传递请求和响应对象
处理返回值:处理器返回modeland
2.handlermapping:负责根据请求找到合适的处理器
   handleradapter:负责调用处理器方法

相关文章:

  • Oracle数据库中的Freelist解析
  • R实验 非参数性检验(二)
  • Nginx - 健康检查终极指南:探索Upstream Check模块
  • 前后端编程语言和运行环境的理解
  • Python中别再用 ‘+‘ 拼接字符串了!
  • C++面试题记录(Qt上位机方向)
  • SpringBoot【1】集成 Druid
  • 近邻算法模型
  • 企业内网开源OA服务器(办公自动化系统),搭建O2OA基于Linux(openEuler、CentOS8)
  • 未授权访问:Hadoop 未授权访问漏洞
  • 【无标题】yoloV8目标检测与实例分割--目标检测onnx模型部署
  • matlab 使用Otsu方法计算图像全局阈值
  • 线上研讨会 | 探索非标自动化产线行业的数转智改之路
  • 中国企业出海,哪些业务需要负载均衡?
  • 《Ai学习笔记》自然语言处理 (Natural Language Processing):机器阅读理解-基础概念解析01
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • ES6--对象的扩展
  • github指令
  • Java 23种设计模式 之单例模式 7种实现方式
  • Less 日常用法
  • Solarized Scheme
  • SpringBoot几种定时任务的实现方式
  • tab.js分享及浏览器兼容性问题汇总
  • XForms - 更强大的Form
  • 代理模式
  • 关于extract.autodesk.io的一些说明
  • 记一次和乔布斯合作最难忘的经历
  • 浅谈web中前端模板引擎的使用
  • 如何胜任知名企业的商业数据分析师?
  • 为什么要用IPython/Jupyter?
  • 为视图添加丝滑的水波纹
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • Spring Batch JSON 支持
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​探讨元宇宙和VR虚拟现实之间的区别​
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • ‌‌雅诗兰黛、‌‌兰蔻等美妆大品牌的营销策略是什么?
  • ‌前端列表展示1000条大量数据时,后端通常需要进行一定的处理。‌
  • #stm32驱动外设模块总结w5500模块
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • ${ }的特别功能
  • (9)目标检测_SSD的原理
  • (二)斐波那契Fabonacci函数
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (一)80c52学习之旅-起始篇
  • (状压dp)uva 10817 Headmaster's Headache
  • ./configure,make,make install的作用(转)
  • .gitignore
  • .Net CF下精确的计时器
  • .net core 6 集成和使用 mongodb
  • .net core 管理用户机密
  • .net framework4与其client profile版本的区别
  • .NET 发展历程