目录
一、Spring
二、SpringBootWeb快速入门
三、HTTP协议
1. 概述
2. 请求协议
3. 响应协议
四、Web服务器 - Tomcat
1. 介绍
2. 基本使用
3. 入门程序解析
一、Spring
① 官网:http://spring.io
② Spring 发展到今天已经形成了一种开发生态圈,Spring提供了若干个子项目,每个项目用于完成特定的功能。
③ Spring全家桶:
而我们直接基于 Spring Framework 框架的开发会存在配置繁琐、入门难度大两大缺点。
因此,又推出 Spring Boot 来简化配置、快速开发,但是其底层仍是Spring 。
Spring Boot 可以帮助我们非常快速的构建应用程序、简化开发、提高效率。
如何快速构建一个Spring应用:https://spring.io/quickstart
二、SpringBootWeb快速入门
① 需求:使用 SpringBoot 开发一个web应用,浏览器发起请求 /hello 后,给浏览器返回字符串 "Hello World ~"。
基于 Spring Boot 开发一个Web应用并启动,再打开浏览器并在地址栏访问Web应用(http:协议、localhost:当前本机服务、8080:端口号、/hello:访问的资源),发送请求会被Web程序处理,最终返回字符串给浏览器并展示。
② 开发步骤:
- 创建 springboot 工程,并勾选web开发相关依赖。
- 定义 Hellocontroller 类,添加方法 hello,并添加注解。
- 运行测试。
//请求处理类
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello(){
System.out.println("hello world");
return "hello world";
}
}
//启动类:启动Springboot工程
@SpringBootApplication
public class SpringbootWebPro01Application {
public static void main(String[] args) {
SpringApplication.run(SpringbootWebPro01Application.class, args);
}
}
三、HTTP协议
1. 概述
① 概念:Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。
- 客户端浏览器请求服务器获取数据,因此浏览器就需要向服务器端发送请求,服务器端进而向浏览器响应对应数据。
- 而浏览器向服务器发送请求就需要携带请求数据,服务器接收这些数据后就解析这些数据,而服务器要想成功解析这些数据,就需要知道浏览器发送过来的数据的具体信息。
- 因此,浏览器和服务器之间要建议一定的协议,浏览器发送数据按照该格式发送,服务器端也按照该格式进行解析。
例如上述 /hello 案例:
② 特点:
- 基于TCP协议:面向连接,安全
- 基于请求-响应模型的:一次请求对应一次响应
- HTTP协议是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的。缺点:多次请求间不能共享数据。优点:速度快
2. 请求协议
常见请求头:
Host | 请求的主机名 |
User - Agent | 浏览器版本,例如Chrome浏览器的标识类似MOzilla/5.0 ... Chrome/79,IE浏览器的标识类似Mozilla/5.0 (WindowsNT ....) 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请求大小是没有限制的。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="" method="get">
姓名:<input type="text" name = "name">
密码:<input type="password" name="password">
<input type="submit" value="提交表单Get">
</form>
<br><br><br>
<form action="" method="post">
姓名:<input type="text" name = "name">
密码:<input type="password" name="password">
<input type="submit" value="提交表单Get">
</form>
</body>
</html>
3. 响应协议
① 响应状态码:
1xx | 响应中-临时状态码,表示请求已经接收,告诉客户端应该继续请求或者如果它已经完成则忽略它。 |
2xx | 成功-表示请求已经被成功接收,处理已完成。 |
3xx | 重定向-重定向到其他地方,让客户端再发起一次请求以完成整个处理。 |
4xx | 客户端错误-处理发生错误,责任在客户端。如:请求了不存在的资源、客户端未被授权、禁止访问等。 |
5xx | 服务器错误-处理发生错误,责任在服务端。如:程序抛出异常等。 |
② 常见的响应状态码:
状态码 | 英文描述 | 解释 |
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 | 服务器尚未准备好处理请求。服务器刚刚启动,还未初始化好。 |
状态码大全:http://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。 |
四、Web服务器 - Tomcat
Web服务器是一个软件程序,对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作,让web开发更加便捷。主要功能是"提供网上信息浏览服务”。
我们只要在服务器端安装一个Web服务器,比如Apache Tomcat,我们就可以将我们开发好的应用部署在Tomcat服务器上,启动服务器后就可以打开浏览器直接访问到部署在Tomcat服务器上的应用程序。
1. 介绍
① 概念:Tomcat是Apache软件基金会一个核心项目,是一个开源免费的轻量级Web服务器,支持Servlet/JSP少量JavaEE规范 。
② JavaEE:Java Enterprise Edition,Java企业版。指Java企业级开发的技术规范总和。包含13项技术规范:JDBC、JNDI、EJBRMI、JSP、Servlet、XML、JMS、Java lDL、JTS、JTA、JavaMail、JAF。
③ Tomcat 也被称为Web容器、Servlet容器。Servlet程序需要依赖于Tomcat才能运行。
④ 官网:https://tomcat.apache.org/
2. 基本使用
① 下载:官网下载,地址 https://tomcat.apache.org/download-90.cgi
② 安装:绿色版,直接解压即可
③ 卸载:直接删除目录即可
④ 启动:双击:bin\startup.bat
- 控制台中文乱码:修改 conf / logging.properties
-
java.util.logging.ConsoleHandler.level = FINE java.util.logging.ConsoleHtandler.formatter = org.apache.juli.OneLineFormatter java.util.logging.ConsoleHandler.encoding = GBK
⑤ 关闭:
- 直接x掉运行窗口:强制关闭
- bin\shutdown.bat:正常关闭
- Ctrl+C:正常关闭
常见问题:
① 启动窗口一闪而过:检查JAVA_HOME环境变量是否正确配置。
② 端口号冲突:找到对应程序,将其关闭掉。
- 可以通过任务管理器-详细信息,结束掉java.exe进程
- 也可以重新配置Tomcat端口号(conf/server.xml)
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>
注意事项:HTTP协议默认端口号为80,如果将Tomcat端口号改为80,则将来访问Tomcat时,将不用输入端口号。
⑥ Tomcat 部署项目:将项目放置到webapps目录下,即部署完成
3. 入门程序解析
① 起步依赖:
- 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
② 内嵌Tomcat:
- 在SpringBoot Web开发当中,已经将Tomcat集成进来。
- 所以在我们运行启动类在启动SpringBoot项目时,会自动将内部的Tomcat服务器启动起来,并且占用Tomcat默认端口号8080。
- 而这个端口号并不是之前安装的Web的Tomcat,而是SpringBoot外部环境内置的Tomcat,也叫内嵌Tomcat。