Spring MVC

文章目录

  • Spring MVC基础
    • 1. 建立连接
    • 2 请求
      • 2.1 指定请求方式
      • 2.2 传递单个参数
      • 2.3 传递多个参数
      • 2.4 传递对象
      • 2.5 参数进行重命名
      • 2.6 传递数组
      • 2.7 传递集合
      • 2.8 传递 JSON 数据
      • 2.9 获取 URL 中的参数
      • 2.10 上传文件
      • 2.11 获取 cookie 和 session
        • 获取 cookie
        • 获取 session
      • 2.12 获取Header
    • 3. 响应
      • 3.1 返回静态页面
      • 3.2 返回数据
      • 3.3 返回 HTML 片段
      • 3.4 返回 JSON
      • 3.5 设置状态码
      • 3.6 设置 Header
      • 3.7 自定义 Header

Spring MVC基础

1. 建立连接

@RequestMapping

@RequestMapping 作用范围:

  1. 类(一个类有多个注解时,没有先后顺序)
    如果加在类上,需要类路径 + 方法路径
    Spring MVC_第1张图片
    Spring MVC_第2张图片

  2. 方法上

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

Spring MVC_第3张图片

2 请求

2.1 指定请求方式

Spring MVC_第4张图片
注解里,双引号的值会赋给“value”这个属性
对多个属性赋值,需要写上属性名
只有一个属性是,且属性名为 value,可以省略

这个时候 post 就获取不到
Spring MVC_第5张图片


2.2 传递单个参数

Spring MVC_第6张图片

Spring MVC_第7张图片
Spring MVC_第8张图片


但是如果是 int,并且为空
Spring MVC_第9张图片

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

2.3 传递多个参数

参数请求,不分先后
Spring MVC_第12张图片

Spring MVC_第13张图片

2.4 传递对象

如果需求修改,就可以封装成一个对象
Spring MVC_第14张图片

Spring MVC_第15张图片

Spring MVC_第16张图片

2.5 参数进行重命名

Spring MVC_第17张图片

Spring MVC_第18张图片

2.6 传递数组

第一种传递方式:
Spring MVC_第19张图片

Spring MVC_第20张图片

Spring MVC_第21张图片

Spring MVC_第22张图片


第二种传递方式:

多个名称一样的参数是,会把它变成一个数组
Spring MVC_第23张图片

2.7 传递集合

Spring MVC_第24张图片

Spring MVC_第25张图片


Spring MVC_第26张图片

Spring MVC_第27张图片

2.8 传递 JSON 数据

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


postman 发送请求的时候
Spring MVC_第28张图片
左边的小绿点,表示这里有参数传递
Spring MVC_第29张图片
Spring MVC_第30张图片

在这里插入图片描述

2.9 获取 URL 中的参数

Spring MVC_第31张图片

Spring MVC_第32张图片
对参数进行重命名
Spring MVC_第33张图片

2.10 上传文件

Spring MVC_第34张图片

Spring MVC_第35张图片

Spring MVC_第36张图片

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
在这里插入图片描述
这两个是内置对象,如果有需要,就加上,不需要,就不加,需要几个加几个

Spring MVC_第37张图片
这两个是等价的关系
Spring MVC_第38张图片

Spring MVC_第39张图片


简洁获取Cookie

这里获取的 cookie 是单个的值
Spring MVC_第40张图片
Spring MVC_第41张图片

获取 session

传统方法
Spring MVC_第42张图片
这里默认为 true
如果 session 为 null,就创建一个空的 session


方法二:
Spring MVC_第43张图片
内置对象,如果需要,就加上这个参数


方法三:
Spring MVC_第44张图片

2.12 获取Header

传统获取 header
Spring MVC_第45张图片

在这里插入图片描述


简洁获取 Header
Spring MVC_第46张图片
Spring MVC_第47张图片

3. 响应

3.1 返回静态页面

Spring MVC_第48张图片
访问 URL:http://IP.port/index.html
如果 static 下面有其他的目录,需要带上其他的目录

返回静态页面的代码
Spring MVC_第49张图片
Spring MVC_第50张图片
这里可以发现,使用@RestController不可以,但是使用@Controller可以


@RestController 和 @Controller 区别与联系

RestController:
Spring MVC_第51张图片
前三行是元注解,可以解释到 其他注解 的注解
@Target:表示注解的适用范围,Type 表示类型
@Retention:注解的生命周期

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


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

  1. 一个项目部署多个服务
    Spring MVC_第52张图片
    Spring MVC_第53张图片
  2. 部署多个项目
    给不同的项目设置不同的端口号
    Spring MVC_第54张图片

3.2 返回数据

随着前后端的分离,后端只处理数据,返回页面显示需要的数据,而不再返回页面
@ResponseBody 即可以修饰类,又可以修饰方法
修饰类:表示该类所有的方法
Spring MVC_第55张图片

Spring MVC_第56张图片

3.3 返回 HTML 片段

Spring MVC_第57张图片
在这里插入图片描述

Spring MVC_第58张图片

3.4 返回 JSON

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

Spring MVC_第61张图片
在这里插入图片描述

Spring MVC_第62张图片
在这里插入图片描述
Spring MVC_第63张图片
在这里插入图片描述

3.5 设置状态码

Spring MVC_第64张图片

Spring MVC_第65张图片

Spring MVC_第66张图片
状态码的设置,并不影响 页面展示

3.6 设置 Header

Spring MVC_第67张图片

  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:
Spring MVC_第68张图片

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

Spring MVC_第69张图片

3.7 自定义 Header

在鉴权的时候会使用 自定义 header
Spring MVC_第70张图片

Spring MVC_第71张图片

Spring MVC_第72张图片

你可能感兴趣的:(Spring,spring,mvc,java)