Web入门
文章目录
- Web入门
- Spring
- SpringBootWeb入门
- HTTP协议
- HTTP-概述
- HTTP
- 特点
- HTTP-请求协议
- HTTP-请求数据格式
- HTTP-响应协议
- 响应状态码
- HTTP-协议解析
- Web服务器-Tomcat
- Web服务器
- 简介
- 基本使用Tomcat
- 文件夹目录解析
- 常见问题
- Tomcat部署项目
- 入门程序解析
- **内嵌的Tomcat服务器**:
Spring
Spring发展到今天已经形成了一种开发生态圈,Spring提供了若干个子项目,每个项目用于完成特定的功能。
SpringBoot可以帮助我们非常快速的构建应用程序、简化开发、提高效率。
SpringBootWeb入门
需求:使用SpringBoot 开发一个web应用,浏览器发起请求/hello后,给浏览器返回字符串"Hello world"
- 创建Spring Boot 工程,并勾选web开发相关依赖
- 定义HelloController类,添加方法hello,并添加注解
//请求处理类
@RestController
public class HelloController {@RequestMapping("/hello")public String hello() {System.out.println("Hello World");return "Hello World";}
}
- 运行测试
打开浏览器:localhost:8080/hello
(默认占用8080端口)
HTTP协议
HTTP-概述
HTTP
- 概念:Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。
特点
- 基于TCP协议 : 面向连接,安全
- 基于请求-响应模型的:一次请求对应一次响应
- HTTP协议是无状态的协议:对于事物处理没有记忆能力。每次请求-响应都是独立的
- 缺点:多次请求间不能共享数据
- 优点:速度快
HTTP-请求协议
HTTP-请求数据格式
请求名 | 含义 |
---|---|
Host | 请求的主机名 |
User-Agent | 浏览器版本 |
Accept | 表示浏览器能接收的资源类型,如text/* image/*或者*/* 表示所有 |
Accept-Language | 表示浏览器偏好的语言,服务器可以据此返回不同语言的网页 |
Accept-Encoding | 表示浏览器可以支持的压缩类型,例如gzip,deflate等 |
Content-Type | 请求主题的数据类型 |
Content-Length | 请求主体的大小(单位:字节) |
请求行:请求数据第一行(请求方式、资源路径、协议)请求头:第二行开始,格式:key:value请求体:POST请求,存放请求参数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
Accept-Encoding: gzip, deflate, br, zstd
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
Cookie: Webstorm-e8df1f74=7f802f55-3128-445b-b96d-a8e14fe2c819
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/131.0.0.0 Safari/537.36 Edg/131.0.0.0
sec-ch-ua: "Microsoft Edge";v="131", "Chromium";v="131", "Not_A Brand";v="24"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows
请求方式-GET:请求参数在请求行中,没有请求体,如:
/brand/findAll?name=oppo&status=1
GET的请求大小是有限制的请求方式-POST:请求参数在请求体中,POST请求大小是没有限制的
HTTP-响应协议
HTTP/1.1 200 //响应行:响应数据第一行(协议、状态码、描述)
//响应头:从第二行开始,格式key:value
Content-Type: text/html;charset=UTF-8
Content-Length: 11
Date: Sun, 24 Nov 2024 08:25:29 GMT
Keep-Alive: timeout=60
Connection: keep-alive
//响应体:最后一部分,存放响应数据
响应状态码
状态码 | 含义 |
---|---|
1xx | 响应中-临时状态码,表示请求已经接收,告诉客户端应该继续请求或者如果它已经完成则忽略它 |
2xx | 成功-表示请求已经被接收,处理已经完成 |
3xx | 重定向-重定向到其他地方;让客户端再发起一次请求以完成整个处理 |
4xx | 客户端错误-处理发生错误,责任在客户端,如:请求了不存在的资源、客户端未被授权、禁止访问等 |
5xx | 服务器错误-处理发生错误,责任在服务端,如:程序抛出异常 |
响应头 | 含义 |
---|---|
Content-Type | 表示该响应内容的类型,例如text/html,application/json |
Content-Length | 表示该响应内容的长度(字节数) |
Content-Encoding | 表示该响应压缩算法,例如gzip |
Cache-Control | 指示客户端应如何缓存,例如max-age=300表示最多可以缓存300秒 |
Set-Cookie | 告诉浏览器为当前页面所在的域设置cookie |
HTTP-协议解析
服务端,解析请求,对浏览器进行响应
Web服务器-Tomcat
Web服务器
Web服务器是一个软件程序,对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作,让Web开发更加便捷。主要功能是"提供网上信息浏览服务"
主流的Web服务器:
- Apache Tomcat
- jetty
- WebLogic
- WebSphere
简介
- 概念:Tomcat 是 Apache 软件及机会一个核心项目,是一个开源免费的轻量级Web服务器,支持Servlet/JSP少量规范。
- JavaEE:Java Enterprise Edition,Java企业版。指Java企业级开发的技术规范综合。包含13项技术规范:JDBC、JNDI、EJB、RMI、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAF
- Tomcat 也称为Web容器、Servlet 容器。Servlet 程序需要依赖于Tomcat才能运行
JavaSE java标准版
JavaME java小型版 开发与嵌入式程序
JavaEE Java企业版
基本使用Tomcat
文件夹目录解析
- bin 可执行文件
- conf 配置文件
- lib Tomcat依赖的jar包
- logs 日志文件
- temp 临时文件
- webapps 应用发布目录
- work 工作目录
启动: 双击bin\startup.bat
- 控制台中文乱码:修改conf/logging.properties
关闭:
- 直接关掉运行窗口
- bin\shutdown.bat
- Ctrl+C
常见问题
- 启动窗口一闪而过:检查JAVA_HOME路径
- 端口号冲突:找到并关闭(在任务管理器中找到8080端口)
- 配置Tomcat端口号(conf\server.xml)
<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />
HTTP协议默认端口号为80,如果将Tomcat端口号改为80,将来访问Tomcat时,将不用输入端口号
Tomcat部署项目
将项目文件放置到webapps目录下,即可部署完成
入门程序解析
起步依赖:
- spring-boot-starter-web 包含了web应用开发所需要的常见依赖
- spring-boot-starter-test 包含了单元测试所需要的常见依赖
内嵌的Tomcat服务器:
基于Springboot开发的web应用程序,内置了tomcat服务器,当启动类运行时,会自动启动内嵌的tomcat服务器。