Spring Web MVC入门(1)

目录

[1.什么是Spring Web MVC?](#1.什么是Spring Web MVC?)

1.首先我们先来看一下什么是web服务器?

2.什么是Tomcat?

3.什么是Servlet?

4.Tomcat与Servlet的关系(为什么说Tomcat是servlet的容器?)

[2.MVC(Model View Controller)](#2.MVC(Model View Controller))

3.比较

4.建立连接

1.类注解、方法注解

2.@RequestMapping:路径映射

1.资源路径=类路径+方法路径

3.@RestController

1.如果把@RestController注释掉,会出现什么情况?

[4.模糊映射(Ambiguous mapping)](#4.模糊映射(Ambiguous mapping))

5.@RequestMapping是GET还是POST请求?

6.认识postman

7.如何让@RequestMapping只接收GET请求?

支持多种请求类型:

单个设置请求类型还可写为:

8.请求

1.服务器接收前端发来的参数

1.请求参数名必须和后端接收参数名一致,否则后端接收不到参数

2.如果接受的请求参数类型错误:

2.Spring自动做类型转换

3.服务器接收多个参数

4.服务器接收boolean型参数

[5.服务器接收Integer 与 int的区别](#5.服务器接收Integer 与 int的区别)

6.服务器接收参数是对象

7.在后端重命名前端的参数

8.传递数组

9.传递list


1.什么是Spring Web MVC?

1.首先我们先来看一下什么是web服务器?

web服务器就是对http协议进行封装,专门接受浏览器发来的http请求,返回网页/接口数据的服务器。

常见的web服务器:Apache、Tomcat、Nginx、Jboss.

idea集成了Tomcat,所以不用手动安装。

2.什么是Tomcat?

tomcat默认端口号是8080

Tomcat:servlet容器。负责通信,管理生命周期,接收http请求

3.什么是Servlet?

Servlet本质是一个接口,定义了一套Java Web开发的规范,或者说是一套Java Web开发的技术标准

Servlet:Java接口,实现servlet,用来处理请求、生成响应

4.Tomcat与Servlet的关系(为什么说Tomcat是servlet的容器?)

Tomcat实现了Servlet的这套规范。

Tomcat自带Servlet接口,并且内置了接口的实现;

当浏览器发来请求------>Tomcat接收,创建对象,调用service()方法,执行我们写的Servlet代码。

spring boot内置了Tomcat,Tomcat是servlet的容器,用来装、运行servlet;servlet负责处理请求。

浏览器访问Tomcat------》Tomcat把请求交给servlet------》servlet处理业务,生成响应------》把响应返回给Tomcat------》Tomcat把响应返回给浏览器。

spring web MVC是一个实现了MVC模式的 web框架。

复制代码
Spring Web MVC is the original web framework 
built on the Servlet API and has been included
in the Spring Framework from the very beginning. 
The formal name, "Spring Web MVC", comes from 
the name of its source module (spring-webmvc)

以下简称spring web MVC为Spring MVC!

什么是MVC?

2.MVC(Model View Controller)

MVC是一种软件架构设计模式

可以简单理解为:

view:可视化页面

Controller:根据请求类型选择对应模型Model,并决定处理之后跳转到哪里

Model:处理Controller发送的业务(Model可以理解为业务代码)。

spring web MVC是一个实现了MVC模式的 web框架

学习spring MVC主要是学习如何通过浏览器和用户程序进行交互。

可以理解为后端提供方法接口,前端调用接口。

3.比较

spring:底层核心

spring boot:自动装配,内置服务器,简化搭建和配置

spring web MVC:spring的web模块,负责处理http请求。

Spring Boot添加Spring Web MVC框架,来实现web功能。

idea内置了maven

spring boot内置了Tomcat

4.建立连接

1.类注解、方法注解

类注解:作用在整个类上面,对这个类里的所有方法都生效

方法注解:作用于某个方法,只对这一个方法生效

2.@RequestMapping:路径映射

作用:建立【浏览器请求地址URL】和【Java代码】之间的映射关系。

可以理解为:告诉Spring,当浏览器访问这个路径,就执行这段代码。

映射=绑定、挂钩,路径映射=把URL地址和后端方法绑定在一起。

1.资源路径=类路径+方法路径

3.@RestController

@RestController是类注解,作用是将当前类标识为控制器。

@RestController=@ResponseBody+@Controller

1.如果把@RestController注释掉,会出现什么情况?

为什么注释掉之后会报错?

因为注释掉之后,这个类不再是控制器,路径映射全部失效,访问报404

类路径可以不写,但是大多情况下都写类路径,是为了提高可读性;

路径必须唯一

路径不唯一会映射错误

4.模糊映射(Ambiguous mapping)

同一个请求(URL+请求方法),找到了2个及以上的Controller方法可以匹配,Spring MVC不知道该调用哪一个,直接报错

注意同一个请求指的是:【URL+请求方法】,如果请求方法不同,不会报错:

但是这样的写法尽量避免!!!

5.@RequestMapping是GET还是POST请求?

@RequestMapping支持HTTP所有请求方式

写form表单提交post请求

点击提交按钮后,浏览器向服务端发送POST请求,action是访问地址

"/test0/test1":"/"代表 从网站的根路径开始找地址,即"http://127.0.0.1:8080",写"action="/test0/test1"",拼接后的地址是:"http://127.0.0.1:8080/test0/test1"。只当前web服务的虚拟根路径。

6.认识postman

后端开发用postman的作用:

无postman:后端写的接口需要前端页面来测试(写html页面,写输入框,提交按钮,运行页面,填数据点提交,才能看测试结果)

有postman:填写地址,填写参数,点击send,postman直接向后端发送post请求,后端执行代码,返回文本。不用写html网页,方便高效

后端写接口,postman测试

7.如何让@RequestMapping只接收GET请求?

405:方法不被允许

支持多种请求类型:

单个设置请求类型还可写为:

表示只支持GET请求

8.请求

1.服务器接收前端发来的参数

1.请求参数名必须和后端接收参数名一致,否则后端接收不到参数

2.如果接受的请求参数类型错误:

2.Spring自动做类型转换

spring已经做了类型转换:spring把客户端发来的请求的参数,同一先当作"String"类型,也就是请求参数的int、boolean、Srting等都先看作String,然后根据需要的参数类型进行转换。

3.服务器接收多个参数

URL?后的查询参数"QueryString",格式为key=value&key=value.

服务器接收到请求后,Spring MVC会自动把&作为分隔符,自动拆分成一组一组的【key和value】;

然后根据方法的参数名,把key和Java方法参数名对比,名字一样就自动把值类型转换、赋值

字符串格式化拼接:

4.服务器接收boolean型参数

5.服务器接收Integer 与 int的区别

请求的参数名必须与服务器接收的参数名一致,顺序不影响

6.服务器接收参数是对象

7.在后端重命名前端的参数

8.传递数组

9.传递list

相关推荐
java_nnnn3 小时前
Spring Web MVC 入门:从一个 URL 到 Java 后端完整处理请求
java·前端·spring boot·spring
SL_staff15 小时前
为什么业务总在等BI报表?JVS-BI的可视化ELT实践解析
spring·数据分析·数据可视化
badhope16 小时前
Spring AI Alibaba停更:Java程序员的信任,还能被辜负几次?
java·spring
hudd66816 小时前
JavaEE 初阶 - 多线程(进阶)
java·开发语言·java-ee
葵花日记18 小时前
VS2022 美化指南:用 ClaudiaIDE 设置自定义编辑器背景
ide·visualstudio·编辑器
解道Jdon19 小时前
FigCraft把Figma用Rust从零重写了一遍
ide·windows·git·svn·eclipse·github·visual studio
凤山老林20 小时前
Spring Boot 集成 Spring Modulith:搭一个能拆微服务的模块化单体
spring boot·spring·微服务
小陈phd1 天前
深入理解agent学习笔记(五)——KV Cache友好的上下文设计
笔记·学习·spring
萧瑟余晖1 天前
Spring Web综合实战与性能调优详解
java·spring