Java Web跟着狂神学习总结(二)
目录
- 2、Tomcat 详解
- 2.1 安装tomcat
- tomcat启动和配置
- 常见面试题之一:
- 3、HTTP讲解
- 3.1 什么是HTTP
- 3.2 两个时代
- 3.3 http请求
- 1、请求行
- 2、消息头
- 3.4 http响应
- 1、响应体
- 2、响应状态码
- 常见面试题之一:
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、图片等)
–> 浏览器对页面进行渲染呈现给用户
Java Web跟着狂神学习总结(二)相关推荐
- Python Web框架Django学习(二)
python web框架Django学习(二) 目录: 三.Django创建APP 四.创建登录页面,实现用户交互,后台管理用户(非数据库方式) ========================= ...
- java web开发需要学习哪些知识_java web开发需要学习哪些知识?
现在世界已经进入一个以web为核心的阶段,掌握一门相关技术是非常有用的,那么java web开发需要学习哪些知识呢?下面小编就来给大家分享一下java web开发的知识. 1.面向对象分析设计思想 J ...
- Java Web 前端高性能优化(二)
2019独角兽企业重金招聘Python工程师标准>>> ######一.上文回顾 上回我们主要从图片的合并.压缩等方面介绍前端性能优化问题(详见Java Web 前端高性能优化(一) ...
- 初学Java Web(4)——Servlet学习总结
经过一段时间的学习,对于Servlet有了新的不一样的见解,在这里做一下总结,将近来学习到的知识总结一下. Servlet 的请求流程 浏览器发出请求:http://localhost:80/xxx1 ...
- Java Web 前端高性能优化(二) 1
一.上文回顾 上回我们主要从图片的合并.压缩等方面介绍前端性能优化问题(详见Java Web 前端高性能优化(一)) 本次我们主要从图像BASE64 编码.GZIP压缩.懒加载与预加载以及 OneAP ...
- java web开发(学习路线)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] java语言天生就是为计算机网络开发而存在的.之前,学习java的时候,总觉得奇怪,为什么jav ...
- Java Web技术经验总结(二)
该系列的第一篇在此:Java Web技术经验总结一,主要包含我在日常工作中的经验和心得体会(如有不足之处欢迎指出). Maven的使用经验 依赖的scope有test.provided.compile ...
- Java I/O系统学习系列二:输入和输出
编程语言的I/O类库中常使用流这个抽象概念,它代表任何有能力产出数据的数据源对象或者是有能力接收数据的接收端对象."流"屏蔽了实际的I/O设备中处理数据的细节. 在这个系列的第一篇 ...
- Java WEB之Servlet学习之路(一)一个最简单的Servlet应用
好久没有更新博客了,有点冷清,主要是最近忙着看Java WEb前段时间都是基础,一些http理论和WEB容器理论,没有什么实践性代码,所以没写代码,现在终于正式开始Servlet编程了,下面就得好好的 ...
最新文章
- 如何做一场高质量的分享
- 云原生 DevOps,模型化应用交付能力很重要
- 题解 luogu P2568 GCD
- uri=/struts-tags 出错
- jQuery动态五星评分
- Git:git pull 的使用
- 关于python下的mysql数据库查询存储操作
- VoxelNet:End-to-End Learning for Point Cloud Based 3D Object Detection阅读笔记
- 3.13、@InitBinder 和 WebDataBinder
- office, pdf, cad 等在线预览
- 社交网络分析:中国与国际媒体互引的社会网络分析
- ubuntu安装uTorrent种子下载器
- Azure上的物联网产品介绍
- 一鸣心所向:想成功?变身蝙蝠侠吧
- python账号_基于Python打造账号共享浏览器功能
- matlab封装的模块,matlab模块封装
- mac字体或windows字体安装到linux,解决linux服务器word文档生成pdf文档出现乱码
- manjaro ssh免密登录
- Mac必备软件推荐:Photoshop 2022(ps2022)中文
- python爬取微博数据存入数据库_python爬取微博并且存入数据库
热门文章
- 【笔记】4. 离散傅里叶变换及其性质
- 均值滤波opencv-python
- SpringCloud微服务架构
- 升讯威微信营销系统开发实践:(4)源代码结构说明 与 安装部署说明( 完整开源于 Github)...
- Verilog数字系统设计教程[第4版]夏宇闻——第三部分练习十二
- 概率论与数理统计(3.2)边缘分布
- 家装行业怎么做网络品牌推广?
- CDH 版 Hadoop 下载
- 我的世界哪个服务器有无限手套,我的世界:MC独有的六大源石代表生物,玩家:就差无限手套了...
- rxJava源码解析系列五之Disposable