Spring MVC

文章目录

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

Spring MVC基础

1. 建立连接

@RequestMapping

@RequestMapping 作用范围:

  1. 类(一个类有多个注解时,没有先后顺序)

    如果加在类上,需要类路径 + 方法路径

  2. 方法上

java 复制代码
@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 上传文件

  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 是单个的值

获取 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

相关推荐
一颗花生米。18 分钟前
深入理解JavaScript 的原型继承
java·开发语言·javascript·原型模式
问道飞鱼18 分钟前
Java基础-单例模式的实现
java·开发语言·单例模式
ok!ko4 小时前
设计模式之原型模式(通俗易懂--代码辅助理解【Java版】)
java·设计模式·原型模式
2402_857589364 小时前
“衣依”服装销售平台:Spring Boot框架的设计与实现
java·spring boot·后端
吾爱星辰5 小时前
Kotlin 处理字符串和正则表达式(二十一)
java·开发语言·jvm·正则表达式·kotlin
哎呦没6 小时前
大学生就业招聘:Spring Boot系统的架构分析
java·spring boot·后端
编程、小哥哥6 小时前
netty之Netty与SpringBoot整合
java·spring boot·spring
IT学长编程7 小时前
计算机毕业设计 玩具租赁系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·spring boot·毕业设计·课程设计·毕业论文·计算机毕业设计选题·玩具租赁系统
莹雨潇潇7 小时前
Docker 快速入门(Ubuntu版)
java·前端·docker·容器
杨哥带你写代码7 小时前
足球青训俱乐部管理:Spring Boot技术驱动
java·spring boot·后端