SpringBootWeb最新相关技术(上接maven):IDEA2023-Spring环境,http协议复习概览,web服务器Tomcat,请求响应java服务器项目编写(BS模型,IOC,DI等)

Spring

官网HTTPs://spring.io
spring生态(全家桶)基于Spring Framework基础框架。但如果我们基于该基础框架开发,会面临配置繁琐,入门难度大的问题,SpringBoot则可以快速开发(简化配置,快速开发)。

1.SpringBootWeb入门

使用SpringBoot开发一个Web应用,浏览器发起请求/hello之后,给浏览器返回字符串"hello world~"

步骤:

  1. 创建SpringBoot工程,并勾选web开发相关依赖(New Project/Module的时候Spring Initializer)。
    在这里插入图片描述

    在这里插入图片描述

  2. 定义HelloController类,添加方法hello,并添加注解

    @RestController
    public class HelloController {
         
        @RequestMapping("/hello")
        public String hello(){
         
            System.out.println("Hello World~");
            return "Hello World~";
        }
    }
    
  3. 运行测试

在这里插入图片描述

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

2.HTTP协议

2.1HTTP概述(简略)

规定了浏览器与服务器之间数据传输的规则
基于tcp面向连接;

基于请求响应模型:一次请求一次响应;

http是无状态的协议:对事物处理没有记忆能力。每一次请求响应都是独立的(优点:速度快;缺点:多次请求之间不能共享数据)——可以通过web会话技术解决记忆问题(比如用户是否处于登录状态)。

2.2HTTP请求协议

GET /hello HTTP/1.1  请求行:方式,路径,协议
以下为请求头
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 浏览器接受的资源类型:text/*表示文本,image/*表示图片,*/*表示所有
Accept-Encoding: gzip, deflate, br 浏览器支持的压缩类型
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6 浏览器偏好的语言
Cache-Control: max-age=0
Connection: keep-alive
Host: localhost:8080 主机名
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0 浏览器类型
sec-ch-ua: "Chromium";v="122", "Not(A:Brand";v="24", "Microsoft Edge";v="122"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"

常见的请求头还包括:content-length请求主体大小,content-type请求主题数据类型,例如json

请求体是post请求特有的部分,post分为请求行,请求头,请求体;而get只有前两个部分?k=v&k=v

2.3HTTP响应协议

HTTP/1.1 200 相应行,响应状态码
Content-Type: text/html;charset=UTF-8
Content-Length: 12
Date: Mon, 25 Mar 2024 06:48:18 GMT
Keep-Alive: timeout=60
Connection: keep-alive

2.4HTTP协议解析

协议解析(浏览器作为客户端是不需用我们去解析协议的,而服务端则需要按照请求格式对http协议进行解析,并按照响应格式,对http协议进行响应)

服务端开发工程师用serverSocket接收请求,按照字符串组成规则进行解析。手写解析http的代码IO加socket是可以实现的,但很复杂。由于格式固定,就可以用jetty,weblogic以及tomcat等写好的软件进行解析。

3.Web服务器-Tomcat

web服务器是一个软件程序,对http协议的操作进行封装,使程序员不必直接对协议进行操作,使web开发更搞笑。主要功能是提供网上信息浏览服务

springboot已经内置了tomcat

3.1 tomcat简介

apache
支持少量javaEE规范servlet/jsp
也被成为web容器,servlet容器

3.2 基本使用

官网安装绿色版本之后改成gbk编码(conf/logging)
startup.bat双击就可以运行脚本文件/停止的话shutdown.bat

想要改端口号(conf/server.xml)端口号改为80(http默认端口的话,输入url就不用输入端口号了)
将项目放在webapps目录下

不用安装了,因为SpringBoot已经内置了

3.3 入门程序解析

maven有许多起步依赖starter,比如spring-boot-starter-aop,spring-boot-starter-web等(其余许多被依赖传递,而web就依赖了内嵌的tomcat)

本来只是自己编写一个Controller类,tomcat不识别;但是tomcat识别servlet(一项javaEE规范里的技术)DispatcherServlet(SpringBoot底层支持的一个核心的Servlet接口的实现类,称之为核心控制器或者前端控制器)

请求响应都会先经过Dispatcher:tomcat将接受到的协议信息进行解析,并将结果封装在一个httpServletRequest对象中,应用程序就可通过该对象获取请求数据了,然后对于该数据进行处理,处理完了之后再响应httpServletResponse。

BS架构(broswer-server)用户只要一个browser
CS架构,需要安装客户端。

4.请求响应

4.1请求

controller中获取请求数据(参数)


接口测试工具,postman。前后端分离之后,后端接口测试需求,浏览器直接地址测试只能get,又得单独去写前端post。
postman是一款功能强大的网页调试与发送网页http请求的chrome插件;作用:常用于进行接口测试(有一些apipost以及apifox的衍生大差不差)
可以下载vscode同名插件,可以用网页版(注意网页版访问本地地址需要下载代理),也可以下载到本地。


简单参数:

原始方式接收

@RestController
public class RequestController {
   
    @RequestMapping("/simpleParam")
    public String simpleParameter
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值