SpringBootWeb入门(包含http协议)

Spring

官网:https://spring.io

Spring发展到今天已经形成了一种开发生态圈,Spring提供了若干个子项目,每个子项目用于完成特定的功能。

其子项目是基于Spring Framework,但是Spring Framework配置繁琐,入手难度大,官方就推出了Spring Boot,简化配置,快速开发

Spring Boot 可以帮助我们非常快速的构建应用程序、简化开发、提高效率。

SpringBootWeb入门

需求:使用SpringBoot开发一个web应用,浏览器发起请求/hello后,给浏览器返回字符串“Hello World ~”。

步骤:

1.创建springboot工程,并勾选web开发相关依赖(在idea中创建module选Spring Initializr)

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

3.运行测试:

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

HTTP协议

概念:Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。(响应数据,请求数据之间的协议)

特点:

1.基于TCP协议:面向连接,安全

2.基于请求 -响应模型的:一次请求对应一次响应

3.HTTP 协议是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的。

  • 缺点:多次请求间不能共享数据
  • 有点:速度快

HTTP-请求数据格式

请求行:请求数据第一行(请求方式、资源路径、协议)

请求头:第二行开始,格式key:value

请求体:POST请求特有的,存放请求参数

GET /brand/findAll?name=OPPO&status=1 HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;qj=0.9,image/webp,image/apng,*/*
Aeecpt-Encoding: gzip, deflate,br
Accept-Language: zh-CN,zh;q=0.9
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/...
POST /brand HTTP/1.1
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Content-Length: 161
Content-Type: application/json;charset=UTF-8
Cookie: Idea-8296eb32=841b16f0-0cfe-495a-9cc9-d5aaa71501a6; JSESSIONID=0FDE4E430876BD9C5C955F061207386F
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/...

{"status":1,"brandName":"黑马","companyName":"黑马程序员","id":"","description":"黑马程序员"}
Host 请求的主机名
User-Agent 浏览器版本,例如Chrome浏览器的标识类似Mozilla/5.0...Chome/79,IE浏览器的标识类似Mozilla/5.0(Windows NT ...)like Gecko
Accept 表示浏览器能接收的资源类型,如text/*接收文本,image/*接收图片或者*/*表示接收所有;
Accept-Language 表示浏览器偏好的语言,服务器可以据此返回不同语言的网页;
Accept-Encoding 表示浏览器可以支持的压缩类型,例如gzip,deflate等。
Content-Type 请求主体的数据类型。
Content-Length 请求主体的大小(单位:字节)。

请求方式-GET:请求参数在请求行中,没有请求体,如:/brand/findAll?name=OPPO&status=1。GET请求大小是有限制的。

请求方式-POST:请求参数在请求体中,POST请求大小是没有限制的。

请求响应介绍-HTTP响应格式

相应行:响应数据第一行(协议、状态码、描述)

响应头:第二行开始,格式key:value

响应体:最后一部分,存放响应数据

HTTP/1.1 200 0K
Content-Type: application/json
Transfer-Encoding: chunked
Date: Tue, 10 May 2022 07:51:07 GMT
Keep-Alive: timeout=60
Connection: keep-alive

[{id: 1, brandName::“阿里巴巴",companyName:"腾讯计算机系统有限公司",description:"玩玩玩"}]
状态码分类 说明
1xx 响应中——临时状态码,表示请求已经接受,告诉客户端应该继续请求或者如果它已经完成则忽略它
2xx 成功——表示请求已经被成功接收,处理已完成
3xx 重定向——重定向到其它地方:它让客户端再发起一个请求以完成整个处理。
4xx 客户端错误——处理发生错误,责任在客户端,如:客户端的请求一个不存在的资源,客户端未被授权,禁止访问等
5xx 服务器端错误——处理发生错误,责任在服务端,如:服务端抛出异常,路由出错,HTTP版本不支持等

常见的响应状态码

状态码 英文描述 解释
200 OK 客户端请求成功,即处理成功,这是我们最想看到的状态码
302 Found 指示所请求的资源已移动到由Location响应头给定的 URL,浏览器会自动重新访问到这个页面
304 Not Modified 告诉客户端,你请求的资源至上次取得后,服务端并未更改,你直接用你本地缓存吧。隐式重定向
400 Bad Request 客户端请求有语法错误,不能被服务器所理解
403 Forbidden 服务器收到请求,但是拒绝提供服务,比如:没有权限访问相关资源
404 Not Found 请求资源不存在,一般是URL输入有误,或者网站资源被删除了
405 Method Not Allowed 请求方式有误,比如应该用GET请求方式的资源,用了POST
428 Precondition Required 服务器要求有条件的请求,告诉客户端要想访问该资源,必须携带特定的请求头
429 Too Many Requests 指示用户在给定时间内发送了太多请求(“限速”),配合 Retry-After(多长时间后可以请求)响应头一起使用
431 Request Header Fields Too Large 请求头太大,服务器不愿意处理请求,因为它的头部字段太大。请求可以在减少请求头域的大小后重新提交。
500 Internal Server Error 服务器发生不可预期的错误。服务器出异常了,赶紧看日志去吧
503 Service Unavailable 服务器尚未准备好处理请求,服务器刚刚启动,还未初始化好

状态码大全:https://cloud.tencent.com/developer/chapter/13553

Content-Type 表示该响应内容的类型,例如text/html,application/json。
Content-Length 表示该响应内容的长度(字节数)。
Content-Encoding 表示该响应压缩算法,例如gzip。
Cache-Control 指示客户端应如何缓存,例如max-age=300表示可以最多缓存300秒。
Set-Cookie 告诉浏览器为当前页面所在的域设置cookie。

HTTP-协议解析

概念:Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。(响应数据,请求数据之间的协议)

Web服务器

Web服务器是一个软件程序,对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作,让Web开发更加便捷。主要功能是“提供网上信息浏览服务”。

Web服务器-Tomcat

概念:Tomcat是Apache软件基金会一个核心项目,是一个开源免费的轻量级Web服务器,支持Srvlet/JSP少量JavaEE规范。

JavaEE:Java Enterprise Edition,Java企业版。指Java企业级开发的技术规范总和。包含13项技术规范:JDBC、JNDI、EJB、RMI、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、Java Mail、JAF

Tomcat也被称为Web容器、Servlet容器。Servlet程序需要依赖于Tomcat才能运行

官网:https://tomcat.apache.org/

Web服务器

  • 对HTTP协议操作进行封装,简化web程序开发。
  • 部署web项目,对外提供网上信息浏览服务。

Tomcat

  • 一个轻量级的web服务端,支持servlet、就是怕、等少量JavaEE规范。
  • 也被称为web容器、servlet容器。

Tomcat-基本使用

(注意:SpringBoot已经内置Tomcat)

1.下载:官网下载,地址:https://tomcat.apache.org/download-90.cgi

2.安装:绿色版,直接解压即可

3.卸载:直接删除目录即可

4.启动:双击:bin\startup.bat

​ 控制台中文乱码:修改conf/logging.properties

java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
java.util.logging.ConsoleHandler.encoding = UTF-8(改成GBK)

5.关闭:

  • 直接x掉运行窗口:强制关闭
  • bin\shutdown.bat:正常关闭
  • Ctrl+C:正常关闭
目录结构 说明
bin 可执行文件
conf 配置文件
lib Tomcat依赖的jar包
logs 日志文件
temp 临时文件
webapps 应用发布目录
work 工作目录

常见问题:

  • 启动窗口一闪而过:检查JAVA_HOME环境变量是否正确配置
  • 端口号冲突:找到对应程序,将其关闭掉

cmd查看端口号:netstat -ano | findstr 8080

mac查看端口号:lsof -I :8080

6.配置Tomecat端口号(conf/server.xml)

<Connector port="8080" protocol="HTTP/1.1"//修改8080即可
		   connectionTimeout="20000"
		   redirectPort="8443" />

注意事项:HTTP协议默认端口号为80,如果将Tomcat端口号改为80,则将来访问Tomcat时,将不用输入端口号。

7.Tomcat部署项目:将项目放置到webapps目录下,即部署完成

SpringBootWeb-入门程序解析

posted @   JenckMin  阅读(61)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示