【SpringBoot】-Spring MVC详解

作者:学Java的冬瓜
博客主页:☀冬瓜的主页🌙
专栏【Framework】
主要内容:SpringMVC项目的创建,关于使用SpringMVC框架前端传参和后端获取参数。关于SpringMVC框架后端返回数据的实战,如返回静态页面,返回文本(字符串),返回一个地址进行转发或者重定向。

一、什么是Spring MVC?

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的使用

学习Spring MVC需要掌握以下三个内容:连接的功能,获取参数的功能,输出数据的功能。

1、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>";
    }

2、获取参数

由于获取参数的内容过多,我单独写了一篇博客:
【SpringMVC如何传递并获取参数?】

3、返回数据

3.1、返回静态页面

返回静态页面后端代码:
在这里插入图片描述

注意:
如果后端接收前端请求的Controller类,注解只有@Controller,那么return的信息会被默认为一个静态页面,如果没有相应的页面,就会出现404。
下图中我在resources的static下添加了html页面,因此启动项目后在浏览器端访问时不是404,而是一个html页面:
在这里插入图片描述
在这里插入图片描述

3.2、返回text/html

理解:要想返回文本文件或者浏览器自动渲染的html语句,有两种设置方法:在接收前端请求的Controller上添加 1>@RestController 2>@Controller+@ResponseBody

返回text/html后端代码:
在这里插入图片描述

注意:我的项目里虽然还存在index.html这个文件,但是使用@Controller+@ResponseBody这两个注解(或组合注解@RestController)后,返回的结果就不再是页面,而是数据(此处是字符串)。如果在后端代码中写的是html语句,浏览器可以将它渲染显示。
在这里插入图片描述

3.3、请求转发或请求重定向

请求转发和请求重定向的区别:
1> 请求方不同:请求转发是服务器端转发;而请求重定向是请求重新从浏览器发送给后端服务器要获取资源。
2> 最终的URL不同:请求转发URL不会发生改变;但是请求重定向URL变成新的请求的URL。
3> 数据共享不同:请求转发是服务器端实现,整个过程中都只有一个request和一个response,转发前后共享资源;而请求重定向是重新从浏览器发送一次新的请求,原来的request和response就相当于作废了,无法再共享。

请求转发后端代码:
在这里插入图片描述

在这里插入图片描述

请求重定向后端代码:
在这里插入图片描述

在这里插入图片描述

  • 26
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学Java的冬瓜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值