目录
1.什么是Spring Web MVC?
1.1 MVC定义
1.2 Spring MVC与MVC关系
2.为什么要学习Spring MVC
3.项目创建
4.Spring MVC连接
4.1 @RequestMapping
4.2 @PostMapping和@GetMapping
5.Spring MVC参数获取
5.1 获取单个参数
5.2 获取多个参数
5.3 获取普通对象
5.4 接收JSON对象
5.5 获取URL中参数
5.6 获取文件
5.7 获取Cookie/Session
5.8 获取Header
6.返回数据(响应)
6.1 返回静态页面
6.2 返回数据
6.3 返回HTML代码片段
6.4 返回JSON
1.什么是Spring Web MVC?
Spring Web MVC is the original web framework built on the Servlet API and has been included in the Spring Framework from the very beginning. The formal name, "Spring Web MVC",comes from the name of its source module (spring-webmvc)
引至:Spring Web MVC :: Spring Framework
那么什么是Servet呢?为什么不直接使用Servet?
Servlet 是 Java 语言编写的服务器端程序,用于处理客户端发送的请求并生成响应。Servlet 运行在支持 Java Servlet 规范的 Web 服务器中,如 Apache Tomcat、Jetty 等。Servlet 提供了一种在 Web 服务器上动态生成 Web 内容的方式,可以处理各种类型的请求,如 HTTP 请求。
尽管 Servlet 可以实现 Web 应用程序的各种功能,但它们通常是在较低级别上操作 HTTP 请求和响应的。使用 Servlet 编写应用程序需要处理很多底层细节,例如解析请求参数、处理会话管理、管理状态等。这些工作可以在开发 Web 应用程序时变得繁琐和重复。
也就是说Servet开发Web还是太麻烦了,现在这个追求效率的时代,再去使用Servet已经是out了。
用一句话总结Spring Web MCV:Spring Web MVC 是⼀个 Web 框架.,下面简称为Spring MVC。然⽽要真正的理解什么是 Spring MVC?我们⾸先要搞清楚什么是 MVC?
1.1 MVC定义
1.2 Spring MVC与MVC关系
所以, Spring MVC主要关注有两个点:
1.MVC
2.Web架构。
2.为什么要学习Spring MVC
3.项目创建
创建方式1:Spring MVC 使⽤ Spring Boot 的⽅式创建创建方式2:Spring MVC更早期的创建⽅式:通过maven添加所需要的各种依赖,这种方式中的过程较复杂,故在2018年以后基本都是使用Spring Boot来进行创建Spring MVC项目。
通过Spring Boot创建Spring MVC项目:
4.Spring MVC连接
前面提到了学习Spring MVC的第一个点:
路由映射是将用户发起的请求(通常是 URL 请求)与服务器端程序中的特定处理逻辑进行关联的过程。在 Web 开发中,当用户在浏览器地址栏输入一个 URL 或点击页面中的链接时,浏览器会向服务器发送一个请求。路由映射的作用是将这个请求映射到后端服务器中的某个处理器(例如控制器方法)上,以执行相应的业务逻辑。
Spring MVC项目实现连接的操作就与路由映射密切相关,实现路由映射可以使用注解。
用来实现注册接口的路由映射的常见注解有@RequestMapping
,@PostMapping
,@GetMapping
。
4.1 @RequestMapping
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@RestController
public class UserController {
// 路由器规则注册
@RequestMapping("/sayHi")
public String sayHi(){
return "hello,Spring MVC";
}
}
@RequestMapping注解的基本用法说明:
- @RequestMapping注解可以修饰类,也可以修饰方法,当修饰类和方法时,访问的地址是类+方法。
- @RequestMapping注解可以处理任何HTTP方法的请求,包括GET、POST、PUT、DELETE等。
- @RequestMapping注解可以使用method属性来进行限定处理请求的HTTP方法。
-
@RequestMapping 的URL 路径最前⾯加不加 / (斜杠)都可以, Spring程序启动时, 会进⾏判断, 如果前⾯没有加 / , Spring会拼接上⼀个 /
4.2 @PostMapping和@GetMapping
(1)@PostMapping基本使用
@RestController
public class UserController {
// 路由器规则注册
@PostMapping("/sayHi")
public String sayHi(){
return "hello,Spring MVC";
}
}
@PostMapping注解的基本用法说明:
- @PostMapping注解通常用于修饰控制器类中的方法,而不是类本身。
- @PostMapping注解只可以处理HTTP POST请求映射到处理方法上。
(2)@GetMapping基本使用
@RestController
public class UserController {
// 路由器规则注册
@GetMapping("/sayHi")
public String sayHi(){
return "hello,Spring MVC";
}
}
@GetMapping注解的基本用法说明:
- @GetMapping注解通常用于修饰控制器类中的方法,而不是类本身。
- @GetMapping注解只可以处理HTTP GET请求映射到处理方法上
(3)get请求在Spring MVC中的3种写法
// 写法1
@RequestMapping("/index")
// 写法2
@RequestMapping(value = "/index",method = RequestMethod.GET)
// 写法3
@GetMapping("/index")
(4)post的2种写法
// 写法1
@RequestMapping(value = "/index",method = RequestMethod.POST)
// 写法2
@PostMapping("/index")
5.Spring MVC参数获取
5.1 获取单个参数
(1)代码
(2)Postman发送请求验证
注意:
- 代码中声明的参数名与请求地址栏中的参数名要完全一致
- 否则,必须要在后端对变量进行重命名
注意: 此时我们的前端就必须传递被重命名后的变量了,也就是前端的变量名必须是userName,否则就会报错。
5.2 获取多个参数
(1)代码:
(2)Postman验证
获取多个参数注意说明:
1)进行参数匹配时,后端代码的参数名称要与地址栏中的参数名称要保证完全一致。
2)前后端进行参数匹配时,是以参数的名称进行匹配的,因此地址栏中的参数位置是不影响后端获取参数的结果。
5.3 获取普通对象
实体类:
(1)代码:
(2)postman验证
获取普通对象注意说明:
1)Spring MVC 会根据地址栏中输入的参数列表自动实现参数对象的赋值操作。
5.4 接收JSON对象
5.5 获取URL中参数
使用@PathVariable注解
注意:
5.6 获取文件
使用@RequestPart
(1)代码:
(3)观察硬盘F:/Download下是否成功写入后端接收的前端传来的文件:
5.7 获取Cookie/Session
(1)什么是Cookie
HTTP 协议⾃⾝是属于 "⽆状态" 协议. 也就是说:默认情况下 HTTP 协议的客⼾端和服务器之间的这次通信, 和下次通信之间没有直接的联系.
上述图中的 "令牌" 通常就存储在 Cookie 字段中。
(4)Session的存储与获取
- HttpSession getSession(boolean create);
- HttpSession getSession();
5.8 获取Header
传统方式获取Header
获取Header也是从 HttpServletRequest 中获取
也可以通过@RequestHeader注解来实现:
6.返回数据(响应)
获取到前端传来的参数后,我们可以在后端进行业务编排和处理。当处理完业务后,需要再将数据响应给前端,响应结果可以是数据, 也可以是静态⻚⾯,也可 以针对响应设置状态码, Header信息等。
6.1 返回静态页面
创建前端⻚⾯ index.html(注意路径)
后端代码:
执行结果:
@RestController = @Controller + @ResponseBody
6.2 返回数据
@Controller
public class IndexController {
@RequestMapping("/index")
public Object index(){
return "/index.html";
}
@RequestMapping("/returnData")
@ResponseBody
public String returnData(){
return "该⽅法返回数据";
}
}
6.3 返回HTML代码片段
6.4 返回JSON
结 语
这就是本期总结的全部关于Spring MVC的知识点,希望这篇博客能够帮助大家更好地掌握SpringMVC,并在实际项目中应用这些知识,构建出高效、稳定的Web应用。如果你有任何疑问或需要进一步的探讨,欢迎在评论区留言,我们一起交流学习。感谢你的阅读!