2、Tomcat 详解
2.1 安装tomcat
tomcat启动和配置
可以配置启动的端口号
-
tomcat的默认端口号为:8080 -
mysql默认端口号:3306 -
http:80 -
https:443
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
可以配置主机的名称
- 默认的主机名为:localhost->127.0.0.1
- 默认网站应用存放的位置为:webapps
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
常见面试题之一:
1.输入一个域名;然后回车
2.检查本机的C:\Windows\System32\drivers\etc\hosts配置文件下有没有这个域名映射;
? ①有:直接返回对应的ip地址,这个地址中,有我们需要访问的web程序,可以直接访问
? ②没有:去DNS服务器找,找到就返回,找不到就返回找不到
3、HTTP讲解
3.1 什么是HTTP
- HTTP(超文本传输协议)是一个简单的请求-响应协议,它通常运行在TCP上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。
3.2 两个时代
- http1.0
- http/1.0:客户端可以与web服务器连接后,只能获得一个web资源,然后短裤连接。
- http2.0
- http/1.1:客户端可以与web服务器连接后,可以获得多个web资源。
3.3 http请求
以百度为例:
Request URL: https://www.baidu.com/ 请求地址
Request Method: GET get方法/post方法
Status Code: 200 OK 状态码:200
Remote Address: 14.215.177.39:443 远程地址
Referrer Policy: strict-origin-when-cross-origin 一个协议
请求头(request header):
Accept: text/html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cache-Control: max-age=0
Connection: keep-alive
Host: www.baidu.com
1、请求行
- 请求行中的请求方式:GET
- 请求方式有get,post
- get:请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示数据内容,不安全,但高效
- post:请求能够携带的参数没有限制,大小没有限制,不会在浏览器的URL地址栏显示数据内容,安全,但不高效
2、消息头
Accept: 告诉浏览器,它所支持的数据类型
Accept-Encoding: 支持哪种编码格式,有GBK UTF-8 GB2312 ISO8859-1
Accept-Language:告诉浏览器,它的语言环境
Cache-Control: 缓存控制
Connection: 告诉浏览器,请求完成是断开还是保持连接
Host: 请求的主机
3.4 http响应
百度:
Cache-Control: private 缓存控制
Connection: keep-alive 连接
Content-Encoding: gzip 编码
Content-Type: text/html 类型
1、响应体
Accept: 告诉浏览器,它所支持的数据类型
Accept-Encoding: 支持哪种编码格式,有GBK UTF-8 GB2312 ISO8859-1
Accept-Language:告诉浏览器,它的语言环境
Cache-Control: 缓存控制
Connection: 告诉浏览器,请求完成是断开还是保持连接
Host: 请求的主机
refresh:告诉客户端,多久刷新一次
location:让网页重新定位
2、响应状态码
200:请求响应成功
3xx:请求重定向
4xx:找不到资源,即资源不存在 ,一般出现404
5xx:服务器代码错误,一般出现 500,出现502:网关错误
常见面试题之一:
- 当你的浏览器中地址栏输入地址并回车的一瞬间到页面能够展示出来,经历了什么?
更多详情内容请参考该博客:https://www.cnblogs.com/wupeixuan/p/8747918.html。
例:当我们在浏览器地址栏输入www.bilibilli.com,然后回车,到看到页面这个过程发生了什么呢?
-
–> 域名解析 首先Chrome浏览器会解析www.bilibilli.com这个域名对应的IP地址。怎么解析到对应的IP地址?
-
Chrome浏览器会首先搜索浏览器的DNS缓存(缓存时间比较短,TTL默认是1000,且只能容纳1000条缓存),看自身的缓存中是否有www.bilibilli.com对应的条目,而且没有过期,如果有且没有过期则解析到此结束。 注:我们怎么查看浏览器的DNS缓存?可以使用 chrome://net-internals/#dns 来进行查看 -
如果浏览器自身的缓存里面没有找到对应的条目,那么Chrome会搜索操作系统的DNS缓存,如果找到且没有过期则停止搜索解析到此结束。 注:怎么查看操作系统的DNS缓存,以Windows系统为例,可以在命令行下使用 ipconfig /displaydns 来进行查看 -
如果在Windows系统的DNS缓存也没有找到,那么尝试读取hosts文件(位于C:\Windows\System32\drivers\etc),看看这里面有没有该域名对应的IP地址,如果有则解析成功。 -
如果在hosts文件中也没有找到对应的条目,浏览器就会发起一个DNS的系统调用,就会向本地配置的首选DNS服务器(一般是电信运营商提供的,也可以使用像Google提供的DNS服务器)发起域名解析请求(通过的是UDP协议向DNS的53端口发起请求,这个请求是递归的请求,也就是运营商的DNS服务器必须得提供给我们该域名的IP地址),运营商的DNS服务器首先查找自身的缓存,找到对应的条目,且没有过期,则解析成功。如果没有找到对应的条目,则有运营商的DNS代我们的浏览器发起迭代DNS解析请求,它首先是会找根域的DNS的IP地址(这个DNS服务器都内置13台根域的DNS的IP地址),找打根域的DNS地址,就会向其发起请求(请问www.bilibilli.com这个域名的IP地址是多少啊?),根域发现这是一个顶级域com域的一个域名,于是就告诉运营商的DNS我不知道这个域名的IP地址,但是我知道com域的IP地址,你去找它去,于是运营商的DNS就得到了com域的IP地址,又向com域的IP地址发起了请求(请问www.bilibilli.com这个域名的IP地址是多少?),com域这台服务器告诉运营商的DNS我不知道www.bilibilli.com这个域名的IP地址,但是我知道www.bilibilli.com这个域的DNS地址,你去找它去,于是运营商的DNS又向www.bilibilli.com这个域名的DNS地址(这个一般就是由域名注册商提供的,像万网,新网等)发起请求(请问www.bilibilli.com这个域名的IP地址是多少?),这个时候cnblogs.com域的DNS服务器一查,果真在我这里,于是就把找到的结果发送给运营商的DNS服务器,这个时候运营商的DNS服务器就拿到了www.bilibilli.com这个域名对应的IP地址,并返回给Windows系统内核,内核又把结果返回给浏览器,终于浏览器拿到了www.bilibilli.com对应的IP地址,该进行一步的动作了。 -
–> 发起TCP的3次握手 -
–> 建立TCP连接后发起http请求 -
–> 服务器响应http请求,浏览器得到html代码 -
–> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) -
–> 浏览器对页面进行渲染呈现给用户 返回给浏览器,终于浏览器拿到了www.bilibilli.com对应的IP地址,该进行一步的动作了。 -
–> 发起TCP的3次握手 -
–> 建立TCP连接后发起http请求 -
–> 服务器响应http请求,浏览器得到html代码 -
–> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) -
–> 浏览器对页面进行渲染呈现给用户
|