Spring MVC

Spring MVC基础

1. 建立连接

@RequestMapping

@RequestMapping 作用范围:

  1. 类(一个类有多个注解时,没有先后顺序)
    如果加在类上,需要类路径 + 方法路径
    在这里插入图片描述
    在这里插入图片描述

  2. 方法上

@RestController
public class UserController {
    @RequestMapping("/hello")
    public String hello() {
        return "hello";
    }
}

在这里插入图片描述

2 请求

2.1 指定请求方式

在这里插入图片描述
注解里,双引号的值会赋给“value”这个属性
对多个属性赋值,需要写上属性名
只有一个属性是,且属性名为 value,可以省略

这个时候 post 就获取不到
在这里插入图片描述


2.2 传递单个参数

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


但是如果是 int,并且为空
在这里插入图片描述

在这里插入图片描述
先观察HTTP 状态码
如果404,先确认url是否存在
如果5XX,先去看后端控制台日志
错误日志: 从下往上看(看不懂的跳过,别死磕)
在这里插入图片描述
这里是要改成包装类
在这里插入图片描述

2.3 传递多个参数

参数请求,不分先后
在这里插入图片描述

在这里插入图片描述

2.4 传递对象

如果需求修改,就可以封装成一个对象
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.5 参数进行重命名

在这里插入图片描述

在这里插入图片描述

2.6 传递数组

第一种传递方式:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


第二种传递方式:

多个名称一样的参数是,会把它变成一个数组
在这里插入图片描述

2.7 传递集合

在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

在这里插入图片描述

2.8 传递 JSON 数据

什么是 JSON?
简单来说:
JSON就是⼀种数据格式,有自己的格式和语法,使用文本表示⼀个对象或数组的信息
因此JSON本质是字符串
主要负责在不同的语⾔中数据传递和交换


postman 发送请求的时候
在这里插入图片描述
左边的小绿点,表示这里有参数传递
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2.9 获取 URL 中的参数

在这里插入图片描述

在这里插入图片描述
对参数进行重命名
在这里插入图片描述

2.10 上传文件

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.11 获取 cookie 和 session

  1. 用户提供账号和密码,服务器进行验证
  2. 服务器验证通过,会把信息存储在 session 中,把 sessionId 返回给客户端(通过 set-cookie 的方式)
  3. 客户端收到响应,把 sessionId 存储在 cookie 中
  4. 后续的请求中,客户端待着 sessionId 去请求(待着 cookie 信息去请求)

request.getSession 就是从 cookie 中获取 sessionId,并且根据 sessionId 获取 session 信息


Cookie 和 Session 的区别:
• Cookie 是客⼾端保存用户信息的⼀种机制,Session 是服务器端保存用户信息的⼀种机制
• Cookie 和 Session之间主要是通过 SessionId 关联起来的,SessionId 是 Cookie 和 Session 之间的桥梁
• Cookie 和 Session 经常会在⼀起配合使用,但是不是必须配合

  • 完全可以⽤ Cookie 来保存⼀些数据在客户端,这些数据不⼀定是用户⾝份信息,也不⼀定是 SessionId
  • Session 中的 sessionId 也不需要非得通过 Cookie/Set-Cookie 传递,比如通过URL传递

共同点:
都是会话机制
cookie 是客户端机制
session 是服务器机制

cookie 存储的信息由程序员而定
session 也不一定必须存在 cookie 中

获取 cookie

传统方式获取 cookie
在这里插入图片描述
这两个是内置对象,如果有需要,就加上,不需要,就不加,需要几个加几个

在这里插入图片描述
这两个是等价的关系
在这里插入图片描述

在这里插入图片描述


简洁获取Cookie

这里获取的 cookie 是单个的值
在这里插入图片描述
在这里插入图片描述

获取 session

传统方法
在这里插入图片描述
这里默认为 true
如果 session 为 null,就创建一个空的 session


方法二:
在这里插入图片描述
内置对象,如果需要,就加上这个参数


方法三:
在这里插入图片描述

2.12 获取Header

传统获取 header
在这里插入图片描述

在这里插入图片描述


简洁获取 Header
在这里插入图片描述
在这里插入图片描述

3. 响应

3.1 返回静态页面

在这里插入图片描述
访问 URL:http://IP.port/index.html
如果 static 下面有其他的目录,需要带上其他的目录

返回静态页面的代码
在这里插入图片描述
在这里插入图片描述
这里可以发现,使用@RestController不可以,但是使用@Controller可以


@RestController 和 @Controller 区别与联系

RestController:
在这里插入图片描述
前三行是元注解,可以解释到 其他注解 的注解
@Target:表示注解的适用范围,Type 表示类型
@Retention:注解的生命周期

@RestController = @Controller + @ResponseBody
@Controller:告诉 spring,帮助我们管理哪些程序
@ResponseBody:返回数据


servlet 路径有项目名,是因为一个tomcat 下面可以部署多个项目,我们需要通过路径进行区分
spring 路径不需要有项目名,是因为 springboot 内置了 tomcat,一个tomcat 线面就部署当前这一个项目
如果部署多个项目,就启动多个 tomcat

  1. 一个项目部署多个服务
    在这里插入图片描述
    在这里插入图片描述
  2. 部署多个项目
    给不同的项目设置不同的端口号
    在这里插入图片描述

3.2 返回数据

随着前后端的分离,后端只处理数据,返回页面显示需要的数据,而不再返回页面
@ResponseBody 即可以修饰类,又可以修饰方法
修饰类:表示该类所有的方法
在这里插入图片描述

在这里插入图片描述

3.3 返回 HTML 片段

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.4 返回 JSON

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
spring 会根据返回结果,进行动态设置

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.5 设置状态码

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
状态码的设置,并不影响 页面展示

3.6 设置 Header

在这里插入图片描述

  1. value: 指定映射的URL
  2. method: 指定请求的method类型, 如GET, POST等
  3. consumes: 指定处理请求(request)的提交内容类型(Content-Type),例如application/json, text/html
  4. produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回
  5. Params: 指定request中必须包含某些参数值时,才让该方法处理
  6. headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求

设置 Content-Type:
在这里插入图片描述

在这里插入图片描述
也可以同步设置编码

在这里插入图片描述

3.7 自定义 Header

在鉴权的时候会使用 自定义 header
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

柒柒要开心

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

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

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

打赏作者

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

抵扣说明:

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

余额充值