springmvc复习
1.入门
Spirngmvc-Servlet
Controller->Springmvc 产物
1.SpringMVC是一种表现层框架技术--
SpringMVC用于进行表现层功能开发
使用SpringMVC技术需要先导入SpringMVC坐标与Servlet坐标
创建Springfmvc控制器类


springmvc0需要设定springmcv加载对应Bean
创建Tomcat的Servlet容器配置类
//4.定义servlet容器的配置类
///AbstractDispatcherServletInitializer类是SpringMVC提供的快速初始化Web3.0容器的抽象类 AbstractDispatcherServletInitializer提供三个接口方法供用户实现
public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {
//加载springMVC配置 -第一个接口 创建Servlet容器时,加载SpringMVC对应的bean并放入
protected WebApplicationContext createServletApplicationContext() {
//初始化WebApplicationContext对象
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
//加载指定配置类
ctx.register(SpringMvcConfig.class);
return ctx;
}
//设置Tomcat接收的请求哪些归SpringMVC处理
//getServletMappings()方法,设定SpringMVC对应的请求映射路径,设置为/表示拦截所有请求,任意请求都将转入到SpringMVC进行处理
protected String[] getServletMappings() {
return new String[]{"/"};
}
//设置spring相关配置 如果创建Servlet容器时需要加载非SpringMVC对应的bean,使用当前方法进行,
protected WebApplicationContext createRootApplicationContext() {
return null;
}
注解
Controller 设定SpringMVC的核心控制器bean
@RequestMapping 设置当前控制器方法请求访问路径
@ResponseBody 设置当前控制器方法响应内容为当前返回值,无需解析
综上-我们要导入spirngmvc容器
1.导入springmvc坐标 2.创建springmvc核心控制器bean 3.再配置类中进行指定加载4.配置tocat的路径哪些被springmvc管理

2.bean加载控制
springmvc-controller --业务层的service--注册为spirngbean的bean
1.因为功能不同,如何避免Spring错误的加载到SpringMVC的bean——加载Spring控制的bean的时候排除掉SpringMVC控制的bean

非常麻烦 --还需要分开加载
案例、

这里就排除加载了springmvc的bean- 我们需要在写一个配置类来导入spirngmvc的bena
@Configuration
@ComponentScan("com.itheima.controller")---自动扫描
public class SpringMvcConfig {
}
3.springmvc容器的简化开发

4.请求响应
1.请求映射路径
@RequestMapping
l设置当前控制器方法请求访问路径,如果设置在类上统一设置当前控制器方法请求访问路径前缀
2.请求传参


2.请求传参
1.普通参数
1.url地址传参,地址参数名与形参变量名相同,定义形参即可接收参数
2.请求参数名与形参变量名不同,使用@RequestParam绑定参数关系
@RequestParam("name")String userName
2.pojo类型参数
POJO参数:请求参数名与形参对象属性名相同,定义POJO类型形参即可接收参数
3.嵌套pojo参数
请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套POJO属性参数
4.数组类型
数组参数:请求参数名与形参对象属性名相同且请求参数为多个,定义数组类型形参即可接收参数 String[] likes
l
5.集合类型 RequestParam
l集合保存普通参数:请求参数名与形参集合对象名相同且请求参数为多个,@RequestParam绑定参数关系
@RequestParam List
2.JSON
添加json数据转换相关坐标
开启自动转换json数据的支持
@Configuration
@ComponentScan("com.itheima.controller")
@EnableWebMvc@EnableWebMvc注解功能强大,该注解整合了多个功能,此处仅使用其中一部分功能,即json数据进行自动类型转换
public class SpringMvcConfig {
}
1.json数组 @RequestBody
将请求中请求体所包含的数据传递给请求参数,此注解一个处理器方法只能使用一次
@RequestBody List
2.json对象
json数据与形参对象属性名相同,定义POJO类型形参即可接收参数
@RequestBody User user
3.json对象数组
json数组数据与集合泛型属性名相同,定义List类型形参即可接收参数
@RequestBody List
区别

3.日期传参


3.响应传递
1.文本返回
@ResponseBody -不仅仅可以将JSON对应类-还能告诉编译器转的是文本,而不是文件
2.json返回
返回值为实体类对象,设置返回值为实体类类型,即可实现返回对应对象的json数据,需要依赖@ResponseBody注解和@EnableWebMvc注解
3.响应pojo集合
开对象-然后存进list集合中-返回list集合 默认返回的就是集合
List
userList.add(user1);
userList.add(user2);
@ResponseBody
名称 | @ResponseBody |
---|---|
类型 | 方法\类注解 |
位置 | SpringMVC控制器方法定义上方和控制类上 |
作用 | 设置当前控制器返回值作为响应体, 写在类上,该类的所有方法都有该注解功能 |
相关属性 | pattern:指定日期时间格式字符串 |
说明:
- 该注解可以写在类上或者方法上
- 写在类上就是该类下的所有方法都有@ReponseBody功能
- 当方法上有@ReponseBody注解后
- 方法的返回值为字符串,会将其作为文本内容直接响应给前端
- 方法的返回值为对象,会将对象转换成JSON响应给前端
此处又使用到了类型转换,内部还是通过Converter接口的实现类完成的,所以Converter除了前面所说的功能外,它还可以实现:
- 对象转Json数据(POJO -> json)
- 集合转Json数据(Collection -> json)
Rest风格
1.rest风格介绍
传统风格
http://localhost/user/getById?id=1
查询id为1的用户信息http://localhost/user/saveUser
保存用户信息
REST
http://localhost/user/1
http://localhost/user
- 根据路径 无法看出对应功能--具有隐私保护性
请求的方式比较多,但是比较常用的就4种,分别是GET
,POST
,PUT
,DELETE
。
按照不同的请求方式代表不同的操作类型。
- 发送GET请求是用来做查询
- 发送POST请求是用来做新增
- 发送PUT请求是用来做修改
- 发送DELETE请求是用来做删除
上述行为是约定方式,约定不是规范,可以打破,所以称REST风格,而不是REST规范
2.路径传参 @PathVariable
//设置当前请求方法为DELETE,表示REST风格中的删除操作
@RequestMapping(value = "/users/{id}/{name}",method = RequestMethod.DELETE)
@ResponseBody
public String delete(@PathVariable Integer id,@PathVariable String name)
名称 | @PathVariable |
---|---|
类型 | 形参注解 |
位置 | SpringMVC控制器方法形参定义前面 |
作用 | 绑定路径参数与处理器方法形参间的关系,要求路径参数名与形参名一一对应 |
关于接收参数,我们学过三个注解@RequestBody
、@RequestParam
、@PathVariable
,这三个注解之间的区别和应用分别是什么?
- 区别
- @RequestParam用于接收url地址传参或表单传参
- @RequestBody用于接收json数据
- @PathVariable用于接收路径参数,使用{参数名称}描述路径参数
- 应用
- 后期开发中,发送请求参数超过1个时,以json格式为主,@RequestBody应用较广
- 如果发送非json格式数据,选用@RequestParam接收请求参数
- 采用RESTful进行开发,当参数数量较少时,例如1个,可以采用@PathVariable接收请求路径变量,通常用于传递id值
springmvc开发特性
1.知识点1:@RestController
名称 | @RestController |
---|---|
类型 | 类注解 |
位置 | 基于SpringMVC的RESTful开发控制器类定义上方 |
作用 | 设置当前控制器类为RESTful风格, 等同于@Controller与@ResponseBody两个注解组合功能 |
知识点2:@GetMapping @PostMapping @PutMapping @DeleteMapping
名称 | @GetMapping @PostMapping @PutMapping @DeleteMapping |
---|---|
类型 | 方法注解 |
位置 | 基于SpringMVC的RESTful开发控制器方法定义上方 |
作用 | 设置当前控制器方法请求访问路径与请求动作,每种对应一个请求动作, 例如@GetMapping对应GET请求 |
相关属性 | value(默认):请求访问路径 |
Spring mvc 异常处理机制


--增强类上指定-异常拦截器处理--基于AOP切面编程实现
案例处理-如题



自写异常-根据异常严重程度来进行对应的出来

抛出异常
拦截处理异常

Springmvc -拦截器
1.拦截器案例
1.声明拦截器

实现HandlerInt接口
--
定义配置类--将拦截器加入--同时定义哪些路径经过拦截器

添加拦截器指定路径

将拦截器加入配置

2.拦截器流程




3.多拦截器


pdf-下载地址
链接:https://pan.baidu.com/s/1yrzjYOGgbCbPtg09BlfgEQ?pwd=95xp
提取码:95xp
本文来自博客园,作者:逆向狗,转载请注明原文链接:https://www.cnblogs.com/Agtw/p/18106556