spring web 学习
黑马springweb资料链接: link
SpringBoot中文文档: link
Maven仓库地址: link
对AI感兴趣的: 百度AI学习
spring简单介绍
-
Spring Boot
基于springboot可以快速构建出一个spring程序。 -
Spring Framework
spring最为底层,最为基础的框架 -
Spring Data
封装了一系列访问数据库的技术 -
Spring Cloud
用来构建微服务项目 -
Sping Security
安全框架
Spring官网: link
SpringBootWeb快速入门
使用 SpringBoot 开发一个web应用,浏览器发起请求 /hello后,给浏览器返回字符串 "Hello World ~
在Spring中@RestController的作用等同于@Controller + @ResponseBody
下面内容参考:链接: 博客园
@Controller
- 1.在一个类上添加@Controller注解,表明了这个类是一个控制器类。但想要让这个类成为一个处理请求的处理器光有@Controller注解是不够的,他还需要进一步修炼才能成为一个处理器。
- 2.将@Controller注解的类注入Spring容器中,只是该类成为处理器的第一步,想要修炼大成,还需要在该类中添加注解@RequestMapping。
- @RequestMapping注解是用来映射请求的,即指明处理器可以处理哪些URL请求,该注解既可以用在类上,也可以用在方法上。
- 当使用@RequestMapping标记控制器类时,方法的请求地址是相对类的请求地址而言的;当没有使用@RequestMapping标记类时,方法的请求地址是绝对路径。
- @RequestMapping的地址可以是uri变量,并且通过@PathVariable注解获取作为方法的参数。也可以是通配符来筛选请求地址。
@ResponseBody注解
- @ResponseBody表示方法的返回值直接以指定的格式写入Http response body中,而不是解析为跳转路径。
- 格式的转换是通过HttpMessageConverter中的方法实现的,因为它是一个接口,因此由其实现类完成转换。
- 如果要求方法返回的是json格式数据,而不是跳转页面,可以直接在类上标注@RestController,而不用在每个方法中标注@ResponseBody,简化了开发过程。
HTTP 协议
概念:Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。
特点:
- 基于TCP协议:面向连接,安全
- 基于请求-响应模型的:一次请求对应一次响应
- HTTP协议是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的。
- 缺点:多次请求间不能共享数据。
- 优点:速度快
HTTP请求格式
- 请求方式-GET:
请求参数在请求行中,没有请求体,如:/brand/findAll?name=OPPO&status=1。GET请求大小是有限制的。 - 请求方式-POST: 请求参数在请求体中,POST请求大小是没有限制的。
HTTP响应格式
状态码和响应头
状态码大全: link
- TCP编程
web服务器
nginx的使用场景是分发服务(代理),tomcat的使用场景是服务部署。
web服务器-Tomcat
跳转:
Tomcat-基本使用
Tomcat 部署项目:
将项目放置到 webapps 目录下, 即部署完成
SpringBootWeb-入门程序解析
起步依赖:
- spring-boot-starter-web:包含了web应用开发所需要的常见依赖。
- spring-boot-starter-test:包含了单元测试所需要的常见依赖。
- 官方提供的starter:https://docs.spring.io/spring-boot/docs/2.7.4/reference/htmlsingle/#using.build-systems.starters
请求响应
Postman工具使用
Get请求:请求参数在Postman中Params中
Post请求:请求参数在请求体中携带,即Postman中Body中
//required = false 参数不是必须传递 (默认required = true)
@RequestParam(name="name",required = false)
实体参数
数组集合参数
数组
集合
数组:请求参数名与形参中数组变量名相同,可以直接使用数组封装
集合:请求参数名与形参中集合变量名相同,通过@RequestParam绑定参数关系
日期参数
日期参数:使用 @DateTimeFormat 注解完成日期参数格式转换
JSON 参数
JSON参数:JSON数据键名与形参对象属性名相同,定义POJO类型形参即可接收参数,需要使用 @RequestBody 标识
路径参数
路径参数:通过请求URL直接传递参数,使用{…}来标识该路径参数,需要使用 @PathVariable 获取路径参数
总结
响应
分层解耦
三层架构
controller:控制层,接收前端发送的请求,对请求进行处理,并响应数据。
service:业务逻辑层,处理具体的业务逻辑。
dao:数据访问层(Data Access Object)(持久层),负责数据访问操作,包括数据的增、删、改、查。
分层解耦
控制反转: Inversion Of Control,简称IOC。对象的创建控制权由程序自身转移到外部(容器),这种思想称为控制反转。
依赖注入: Dependency Injection,简称DI。容器为应用程序提供运行时,所依赖的资源,称之为依赖注入。
Bean对象:IOC容器中创建、管理的对象,称之为bean。
@Autowired //运行时,IOC容器会提供该类型的bean对象,并赋值给该变量 - 依赖注入
注:resouce注解是以名字自动注入,autowired是以类型自动注入
@Component //将当前类交给IOC容器管理,成为IOC容器中的bean
bean
@Autowired注解,默认是按照类型进行,如果存在多个相同类型的bean,将会报出如下错误:
小结: