SpringMVC
1|0SpringMVC
Model:模型 业务逻辑层+数据访问层
View:视图 jsp html
Controller:控制器 servlet
2|0介绍
SpringMVC是一种基于Java实现MVC模型的轻量级Web框架,SpringMVC 已经成为目前最主流的 MVC 框架之一, 从 Spring3.0 的发布, 就已全面超越 Struts2,成为最优秀的 MVC 框架。它通过一套注解,让一个简单的 Java 类成为处理请求的控制器,而无须实现任何接口。同时它还支持RESTful 编程风格的请求。
springmvc 它让一个普通的Java类 上面加点注解 就可以实现和servlet一样的效果
springmvc优化了servlet
普通的Java类 加上注解 就变成了和servlet一样的功能 起了新名字就叫controller
优点
- 使用简单,开发便捷(相比于Servlet)
- 灵活性强
3|0执行流程
SpringMVC流程:
01、用户发送出请求到前端控制器DispatcherServlet。
02、DispatcherServlet收到请求调用HandlerMapping(处理器映射器)。
03、HandlerMapping找到具体的控制器(可查找xml配置或注解配置),生成处理器对象的执行链(如果有),再一起返回给DispatcherServlet。
04、DispatcherServlet调用HandlerAdapter(处理器适配器)。
05、HandlerAdapter经过适配调用具体的处理器(controller)。
06、Controller执行完成返回ModelAndView对象。
07、HandlerAdapter将Controller执行结果ModelAndView返回给DispatcherServlet。
08、DispatcherServlet将ModelAndView传给ViewReslover(视图解析器)。
09、ViewReslover解析后返回具体View(视图)。
10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
11、DispatcherServlet响应用户。
4|0示例
1.导入依赖
2.controller
3.四大组件配置
springmvc.xml
4.在web.xml中配置核心控制器
5.成功页面配置
webapp/pages/success.jsp
5|0spring和springMVC容器关系
controller对象可以访问 业务逻辑层对象
业务逻辑层对象不可以访问controller层对象
原因是:业务罗基层和数据访问层对象都在spring父容器,controller对象在子容器中控,子容器中的对象可以访问父容器中的对象
6|0请求与响应
6|1请求映射路径
名称:@RequestMapping
作用:设置当前控制器方法请求访问路径,如果设置在类上统一设置当前控制器方法请求访问路径前缀
参数:method,params
method规定浏览器发送的请求的类型 ,请求不匹配报405
params规定浏览器发送请求必须携带参数params,不携带报400提示
7|0post请求乱码问题
web.xml中配置(需要配置在servlet之前 )
8|0请求参数与方法入参不同
9|0对象中嵌套数据传值
对象.属性
10|0数组的传值
11|0集合的传值
对象中传值数组或集合,请求参数和实体类中参数一样即可
12|0JSON的传值
如果浏览器发送过来的是json格式的字符串
1.参数添加@RequestBody
2.需要导入依赖(把json格式的字符串转换成java中的对象或者数组)
3.springmvc.xml配置文件中删除原来的处理器映射器和处理器适配器
12|1特殊传参
13|0响应
13|1@ResponseBody
方式:响应为对象和对象集合时,在方法上添加
作用:将controller返回的java对象格式转换为 JSON对象
14|0restFul风格
14|1介绍
作用:简化url的书写格式,同一个url处理不同的请求
优点:
- 隐藏资源的访问行为,无法通过地址得知对资源是何种操作
- 书写简化
- GET用来获取资源
- POST用来新建资源
- PUT用来更新资源
- DELETE用来删除资源
14|2RESTful的实现
- 访问地址是一样的
- 参数是通过/分隔的,如果有多个参数,使用多个/
请求地址(URI) | 请求含义 | 请求方式 |
---|---|---|
/user json | 新增用户 | POST |
/user/1 | 删除编号1的用户 | DELETE |
/user/1/Jack/18 json | 修改编号1的用户 | PUT |
/user/1 | 获取编号1的用户 | GET |
14|3入门案例
做法:在Controller中定义方法时设定"http请求动作(请求方式)"和"设定请求参数(路径变量)"
14|4@PathVariable
- 名称:@PathVariable
- 类型:形参注解
- 位置:SpringMVC控制器方法形参定义前面
- 作用:绑定路径参数与处理器方法形参间的关系,要求路径参数名与形参名一一对应
14|5@RequestBody、@RequestParam、@PathVariable区别和应用
- 区别
@RequestParam用于接收url地址传参或表单传参
@RequestBody用于接收json数据
@PathVariable用于接收路径参数,使用{参数名称}描述路径参数 - 应用
后期开发中,发送请求参数超过1个,以json格式为主,@RequestBody应用较广
如果发送非json格式数据,选用@RequestParam接收请求参数
采用RESTful进行开发,当参数数量较少时,例如1个,可以采用@PathVariable接收请求路径变量,通常用于传递id值
14|6注解合并
__EOF__
作 者:YXH
出 处:https://www.cnblogs.com/YxinHaaa/p/17461683.html
关于博主:编程路上的小学生,热爱技术,喜欢专研。评论和私信会在第一时间回复。或者直接私信我。
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本。
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了