原
2020-03-06 16:17:26
部分测试源码点击查看
RequestMapping的参数和用法
基本概念
三层架构
:软件设计架构
MVC模型
- jsp演变历史
1
2
31. 早期只有servlet,只能使用response输出标签数据,非常麻烦
2. 后来又jsp,简化了Servlet的开发。如果过度使用jsp,在jsp中即写大量的Java代码与HTML,造成难于维护,难于分工协作
3. 再后来,java的web开发,借鉴mvc开发模式,使得程序的设计更加合理性 - MVC介绍:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
161. M:Model,模型。JavaBean
* 完成具体的业务操作,如:查询数据库,封装对象
2. V:View,视图。JSP
* 展示数据
3. C:Controller,控制器。Servlet
* 获取用户的输入
* 调用模型
* 将数据交给视图进行展示
* 优缺点:
1. 优点:
1. 耦合性低,方便维护,可以利于分工协作
2. 重用性高
2. 缺点:
1. 使得项目架构变得复杂,对开发人员要求高
SpringMVC概述
- SpringMVC在三层架构的位置
- SpringMVC 的优势
简单入门
演示
- 事后说明:
这里可以声明spring-web 和 spring-context,因为这两个都在spring-webmvc中包含了
组件
- DispatcherServlet:前端控制器
1
2
3
4用户请求到达前端控制器,它就相当于 mvc 模式中的 c,dispatcherServlet 是整个流程控制的中心,
由它调用其它组件处理用户的请求,dispatcherServlet 的存在降低了组件之间的耦合性。
在web.xml中配置了,并且拦截路径是/全路径 - HandlerMapping:处理器映射器
1
2HandlerMapping 负责根据用户请求找到 Handler 即处理器,SpringMVC 提供了不同的映射器实现不同的映射方式,
例如:配置文件方式,实现接口方式,注解方式等。 - Handler:处理器
1
2它就是我们开发中要编写的具体业务控制器(HelloController)。由 DispatcherServlet 把用户请求转发到 Handler。
由Handler 对具体的用户请求进行处理。 - HandlAdapter:处理器适配器
1
2通过 HandlerAdapter 对处理器进行执行,这是适配器模式的应用,
通过扩展适配器可以对更多类型的处理器进行执行。(可以执行UserController,OrderController) - View Resolver:视图解析器
1
2View Resolver 负责将处理结果生成 View 视图,View Resolver 首先根据逻辑视图名解析成物理视图名
即具体的页面地址,再生成 View 视图对象,最后对 View 进行渲染将处理结果通过页面展示给用户。 - View:视图
1
2SpringMVC 框架提供了很多的 View 视图类型的支持,包括:jstlView、freemarkerView、pdfView等。我们最常用的视图就是 jsp。
一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面
mvc:annotation-driven标签
1 | 在 SpringMVC 的各个组件中,处理器映射器、处理器适配器、视图解析器称为 SpringMVC 的三大组件。 |
doDispatch方法源码
1、SpringMVC运行流程 — processon
2、适配器模式(使用案例、自定义SpringMVC适配器) — 设计模式
1 | //org.springframework.web.servlet.DispatcherServlet#doDispatch |
参数绑定
简单类型
,根据名称自动绑定,区分大小写。
复杂类型
【Object,List,Map】
解决POST请求乱码&自定义参数类型转换
ServletAPI对象
使用 ServletAPI 对象作为方法参数
注解
RequestMapping
2020-07-02 13:54:55
consumes:指定处理请求的 提交内容类型 (Content-Type),例如 application/json, text/html
1 | //方法仅处理request Content-Type为“application/json”类型的请求 |
produces:指定 返回的内容类型 ,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
1 | "/list" , method = RequestMethod.POST,produces="application/json") (value = |
RequestParam
RequestBody
- 获取的是请求体的数据,而不是请求参数。
- 绑定对象&解决静态资源的过滤【注意:配置静态资源过滤&导入依赖&请求格式&响应格式&数据格式】
- 绑定对象》》》postman
ResponseBody
- 同上。【注意:配置静态资源过滤&导入依赖&请求格式&响应格式&数据格式】
PathVariable
RequestHeader
CookieValue
ModelAttribute
SessionAttributes
返回值问题
上传文件
传统方式
MVC方式
跨服务器上传
异常处理
拦截器
概述
1 | Spring MVC 的处理器拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理。 |
SSM整合案例
- 案例1:SSM整合案例1_Account
本地对应地址:D:\Everything\IDEA\Project\movie\ssm
在线代码分享:代码分享 - 案例2:SSM整合案例2_Items
启动方式:①可使用Tomcat部署 ②使用Maven插件启动
本地对应地址:D:\Everything\IDEA\Project\movie\maven_day02_1
在线代码分享:代码分享