SpringMVC简介
简介
SpringMVC是一款基于Servlet API构建的原始Web框架 ,从一开始就包含在Spring Framework中。正式名称"Spring Web MVC"来自其源模块的名称(
spring-webmvc
),但它通常被称为"Spring MVC"。
调用流程
接收数据
接收数据前,肯定是先要找请求的路径的。所以有了@RequestMapping,设置请求路径
请求路径
@RequestMapping("/**") 用来设置请求路径,还有几个进阶的注解
-
param参数接收
1、直接接收:形参名和传递参数名相同,就可以直接传递。
2、@RequestParam注解接收:用@RequestParam注解帮助形参与传递参数进行绑定
接收的数据有:基本数据类型、集合、Java类
-
json参数接收
@RequestBody 注解来将 JSON 数据转换为 Java 对象。 -
接收cookie参数
@CookieValue
注释将 HTTP Cookie 的值绑定到控制器中的方法参数。 -
接收请求头参数
-
原生Api对象操作
共享域对象操作(了解)
就是原生Api直接间接进行数据交互的区域**。**
响应数据
后端开发模式的介绍
后端开发分为:混合开发和前后端分离开发。
- 混合开发:就是后端既要会前端也要后端,最后在返回数据的时候,返回的是一个前端页面。
- 分离开发:后端只需要注重后端的数据开发就行了,最终返回的是一个某种类型的数据。
转发和重定向
- 转发:就是在项目下的资源跳转
- 重定向:相当于超链接。比如进入一个网页中可以随便由后端跳转到某个资源或网页中。
转发是项目下的资源跳转,路径 : 项目下的地址 jsp/index 忽略applicationContext。
重定向项目下的资源可以是项目外的地址 重定向属于二次请求 路径: 项目下的地址 全地址 /springmvc/jsp /index 不忽略applicationContext
redirect是重定向的关键字
forward是转发的关键字
//重定向:
//1、方法返回值写出字符串类型
//2、不能添加responseBody注解
//3、返回字符串 redirect:/重定向地址
@RequestMapping("/redirect-demo")
public String redirectDemo() {
// 重定向到 /demo 路径
return "redirect:/demo";
}
//转发:只能是项目下的资源
//1、方法返回值写出字符串
//2、不能添加responseBody注解
//3、返回字符串forward :/转发地址
@RequestMapping("/forward-demo")
public String forwardDemo() {
// 转发到 /demo 路径
return "forward:/demo";
}
//注意: 转发和重定向到项目下资源路径都是相同,都不需要添加项目根路径!填写项目下路径即可!
返回json数据(重点)
前期需要准备:
导入json依赖
添加json数据转换器 @EnableWebMvc
接下来就是两个注解:
@ResponseBody注解:将返回的对象转换成json数据返回。
@RestController:@ResponseBody注解 + @Controller注解
返回静态资源
就是在配置类中配置
配置类
//这里是一个配置类
@EnableWebMvc //json数据处理,必须使用此注解,因为他会加入json处理器
@Configuration
@ComponentScan(basePackages = "com.atguigu.controller") //TODO: 进行controller扫描
//WebMvcConfigurer springMvc进行组件配置的规范,配置组件,提供各种方法! 前期可以实现
public class SpringMvcConfig implements WebMvcConfigurer {
//配置jsp对应的视图解析器
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
//快速配置jsp模板语言对应的
registry.jsp("/WEB-INF/views/",".jsp");
}
//开启静态资源处理 <mvc:default-servlet-handler/>
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
方法
/**
* 设置静态资源映射
* @param registry
*/
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
log.info("开始静态资源映射");
registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
RESTFul风格设计
操作 | 请求方式 |
---|---|
查询 | GET |
保存 | POST |
删除 | DELETE |
更新 | PUT |
扩展
全局异常处理器
将异常的处理独立处理,通过配置之后统一来应对。
实现流程
-
定义好异常类
-
声明异常处理控制器类(用来统一定义异常处理的handler方法)
-
声明异常处理handler方法
拦截器
- 创建拦截器类
- 修改配置类,添加拦截器
- 配置类中拦截器方法具体配置
- 多个拦截器同时出现情况
SpringMVC总结
核心点 | 掌握目标 |
---|---|
springmvc框架 | 主要作用、核心组件、调用流程 |
简化参数接收 | 路径设计、参数接收、请求头接收、cookie接收 |
简化数据响应 | 模板页面、转发和重定向、JSON数据、静态资源 |
restful风格设计 | 主要作用、具体规范、请求方式和请求参数选择 |
功能扩展 | 全局异常处理、拦截器 |