作者
:学Java的冬瓜
博客主页
:?冬瓜的主页🌙
专栏
:【Framework】
主要内容
:SpringMVC项目的创建,关于使用SpringMVC框架前端传参和后端获取参数。关于SpringMVC框架后端返回数据的实战,如返回静态页面,返回文本(字符串),返回一个地址进行转发或者重定向。
1> Spring MVC的作用: 为了实现HTTP响应。
2> 什么是Spring MVC?
Spring MVC 名称由 Spring Web MVC 简化得到,它是在Spring中的一个Web框架。
Spring MVC基于Servlet API构建。
3> 什么是MVC?
MVC是Model,View,Controller的缩写。这是软件工程中的一种软件架构模式,它把软件系统分为 模型,视图,控制器三个部分。
注意:MVC模式的HTTP请求的响应结果是一个视图而不是数据(前后端不分离)。
4>MVC和Spring MVC的关系?
Spring MVC 是一个实现了MVC模式,并继承了Servlet API的Web框架。
5>扩展:
我们平常总说项目是由什么技术实现的?如Servlet+JSP实现,SSM实现,那么这SSM是啥?
SSM:Spring + Spring MVC + MyBatis
=>Spring Boot + Spring Web(Spring MVC) + MyBatis
SM:Spring Boot(Spring Web) + Mybatis
学习Spring MVC需要掌握以下三个内容:连接的功能,获取参数的功能,输出数据的功能。
1> 如何方便的创建Spring MVC项目?
2018年前,使用Maven添加 Spring MVC框架方式创建
现在,使用SpringBoot来创建Spring MVC项目(简单得多)
使用SpringBoot创建Spring MVC项目:参考这篇创建SpringBoot项目的过程:【Spring Boot项目的创建】
只需在创建SpringBoot项目的最后添加 Spring Web的依赖即可。
2> 实现连接
法一:@RequestMapping注解进行连接
要实现连接,需要知道
@RequestMapping
这个注解,以下是这个注解的关键理解:
a.这个注解用于注册接口的路由映射,可以使用多级路由,也可以多个路由对应同一个方法。
b.这个注解既可修饰类也可修饰方法
c.既可支持get请求,又可支持post请求。若要指定只能使用某种请求,可以传参,如:@RequestMapping(value = {"/fuc", "/func"}, method = RequestMethod.POST)
,或者使用法二进行连接。
代码:
// 法一:@RequestMapping注解实现连接
@RequestMapping(value = {"/fuc", "/func"}, method = RequestMethod.POST)
public String func(){
return "<h1>Hello, Spring MVC<h1>";
}
法二:@PostMapping or GetMapping注解进行连接
代码:
// 法二:@GetMapping注解实现连接
@GetMapping(value = {"/getMap"})
public String getFunc(){
return "<h1>GetMapping<h1>";
}
由于获取参数的内容过多,我单独写了一篇博客:
【SpringMVC如何传递并获取参数?】
返回静态页面后端代码:
注意:
如果后端接收前端请求的Controller类,注解只有@Controller,那么return的信息会被默认为一个静态页面,如果没有相应的页面,就会出现404。
下图中我在resources的static下添加了html页面,因此启动项目后在浏览器端访问时不是404,而是一个html页面:
理解:要想返回文本文件或者浏览器自动渲染的html语句,有两种设置方法:在接收前端请求的Controller上添加
1>@RestController 2>@Controller+@ResponseBody
返回text/html后端代码:
注意:我的项目里虽然还存在index.html这个文件,但是使用@Controller+@ResponseBody这两个注解(或组合注解@RestController)后,返回的结果就不再是页面,而是数据(此处是字符串)。如果在后端代码中写的是html语句,浏览器可以将它渲染显示。
请求转发和请求重定向的区别:
1> 请求方不同:请求转发是服务器端转发;而请求重定向是请求重新从浏览器发送给后端服务器要获取资源。
2> 最终的URL不同:请求转发URL不会发生改变;但是请求重定向URL变成新的请求的URL。
3> 数据共享不同:请求转发是服务器端实现,整个过程中都只有一个request和一个response,转发前后共享资源;而请求重定向是重新从浏览器发送一次新的请求,原来的request和response就相当于作废了,无法再共享。
请求转发后端代码:
请求重定向后端代码: