JavaWeb
1.基本概念
web开发:
- web,网页的意思
- 静态web
- html,css
- 提供的数据始终不会变化
- 动态web
- 提供的信息会改变
- 技术栈:Servlet/JSP ,ASP ,PHP
在Java中,动态web资源开发的技术统称JavaWeb
1.2web应用程序
web应用程序:可以提供浏览器访问的程序
- 可以访问到的任何页面和资源,都存在于某一个计算机上
- URL,通过URL访问
- 统一的web资源会被放在同一个文件夹下
- 一个web应用由多部分组成(静态web,动态web)
- html,css,js
- jsp,servlet
- java程序
- jar包
- 配置文件(Properties)
web应用程序编写完毕后,想提供给外界访问,需要一个服务器统一管理。
1.3静态网页
*.htm, *.html都是网页后缀,如果服务器上存在就可以直接进行读取。
- 静态web存在的缺点
- web页面无法动态更新,所有用户看到的是同一个页面
- 轮播图,点击特效:伪动态
- JavaScript[实际开发用的多]
- 它无法与数据库交互(数据无法持久化,无法交互)
- web页面无法动态更新,所有用户看到的是同一个页面
1.4动态网页
页面动态展示:"web页面会改变"
缺点:
- 假如服务器的动态web资源出现错误,我们需要重新编写后台程序
- 停机维护
优点:
- 可以动态更新
- 可以和数据库交互(数据持久化)
2.web服务器
JSP/Servlet
- sun公司主推的B/S架构
- 基于Java语言的
- 可以承载三高问题带来的影响(高并发,高可用,高性能)
2.2web服务器
服务器是一种被动的操作,用来处理用户的一些请求和用户的一些响应信息
IIS,微软,windows自带
Tomcat
将自己写的网站,放到服务器(Tomcat)中指定的web应用的文件夹(webapps)下,就可以访问网站应该有的结构
-- webapps : Tomcat服务器的web目录-ROOT-XiaoShuai :网站的目录名-classes:Java程序-lib:web应用所依赖的jar包-web.xml:网站配置文件-index.html 默认首页-static -css-js-img
HTTP
HTTP(超文本传输协议)是一个简单的请求-响应协议,通常运行在TCP之上。
- 文本:html,字符串
- 超文本:图片,音乐,视频,定位,地图……
- 80
HTTPS:安全的
- 443
两个时代
- http1.0
- HTTP1.0:客户端可以与web服务器连接后,只能获得一个web资源,断开连接
- http2.0
- HTTP1.2:客户端可以与web服务器连接后,可以获得多个web资源
Http请求
- 客户端…发请求…服务器
百度:
Request URL: https://www.baidu.com/ //请求地址
Request Method:GET //请求方法,GET/POST
Status Code:200 OK //状态码 200 OK
Remote(远程) Address:[2408:873d:22:1a91:0:ff:b013:cf81]:443
Accept-Encoding gzip, deflate, br, zstd
Accept-Languagezh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Connectionkeep-alive
1.请求行
- 请求行中的请求方式:GET
- 请求方式:GET/POST HEAD,DELETE,PUT
- get:请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示数据内容,不安全但高效
- post:请求能够携带的参数较大,大小没有限制,不会在浏览器的URL地址栏显示数据内容,安全但不高效
2.消息头
Accept:所支持的数据类型
Accept-Encoding:支持的编码格式
Accept-Language:支持的语言
Cache-Control:缓存控制
Connection:告诉浏览器,请求完成后是断开还是保持连接
Http响应
- 服务器…响应…客户端
connection:keep-alive 连接
content-encoding:gzip 编码
content-type:text/html; charset=utf-8 类型
1.响应体
Accept:所支持的数据类型
Accept-Encoding:支持的编码格式
Accept-Language:支持的语言
Cache-Control:缓存控制
Connection:告诉浏览器,请求完成后是断开还是保持连接
Refresh:告诉客户端,多久刷新一次
Location:让网页重新定位
2.响应状态码
200:请求响应成功
3**:请求重定向
- 重定向:重新到新位置
404:找不到资源
5**:服务器代码错误
当你的浏览器地址栏输入地址并回车的一瞬间到页面能够展示回来,经历了什么?
1.URL解析:把"地址"翻译成"可执行指令"
- 判断输入类型:区分URL还是关键词
- 拆分URL结构:
- 协议
- 域名
- 端口
- 路径
- 查询参数
- 处理特殊情况:自动补全http://或者https://
2.缓存检查:先查本地,再找远程(为了减少网络请求,提升速度,会先检查本地缓存)
- 检查缓存层级
- 第一层,内存缓存
- 第二层,磁盘缓存
- 缓存命中/未命中
- 命中,直接本地读取,跳过后续网络请求,快速渲染页面
- 未命中,进入下一步——通过DNS解析获取服务器IP
3.DNS解析,把域名解析成服务器IP
- DNS查询顺序(从近到远,减少延迟)
- 浏览器DNS缓存
- 操作系统DNS缓存
- 本地DNS服务器
- 根DNS服务器
- 顶级域名服务器
- 权威DNS服务器
- 优化:DNS缓存与预解析
4.TCP连接:建立"浏览器与服务器"的通信通道(核心:三次握手)
- 三次握手流程:
- 第一次握手(客户端->服务器):客户端(浏览器)向服务器发送SYN包(同步请求)
- 第二次握手(服务器->客户端):服务器收到SYN包后,回复SYN+ACK包(同步+确认)
- 第三次握手(客户端->服务器):浏览器收到SYN+ACK包后,回复ACK包(确认)
- 三次握手的意义:
- 避免无效连接请求,确保连接是双向可达的
- 特殊情况:
- HTTPS的TLS握手:若协议是HTTPS,TCP连接建立后,会额外进行TLS握手(加密通信协商)
- 服务器向浏览器发送"数字证书"
- 浏览器验证证书有效性
- 双方协商"对称加密密钥"
- HTTPS的TLS握手:若协议是HTTPS,TCP连接建立后,会额外进行TLS握手(加密通信协商)
5.发送HTTP请求:向服务器要资源
连接建立后,浏览器会构建HTTP请求,向服务器传递需要什么资源的指令
- HTTP请求结构("请求行+请求头+请求体"):
- 请求行:包含请求方法、URL路径、HTTP版本
- 请求方法:GET、POST
- 请求头:传递额外信息
- 请求体:仅POST等方法需要,用于传递数据,GET方法的参数通过URL查询串传递
- 请求行:包含请求方法、URL路径、HTTP版本
- 请求发送:浏览器将HTTP请求通过已建立的TCP连接发送给服务器
6.服务器处理请求:"解析请求-返回资源"
服务器接收到HTTP请求后,按流程处理
- 1.请求解析:
- web服务器软件,解析请求行、请求头,确定所需资源
- 动态内容:web服务器会将请求转发给应用服务器,应用服务器执行代码生成动态内容
- 静态内容:web直接从服务器硬盘读取资源
- 构建HTTP响应,将结果封装成HTTP响应
- 响应行:HTTP版本、状态码、状态描述
- 状态码:表示请求处理结果
- 响应头:传递资源信息
- 响应体:实际资源
- 响应行:HTTP版本、状态码、状态描述
- 发送响应
7.浏览器解析响应:理解服务器返回的内容
浏览器接收到HTTP响应后,先检查响应状态码
- 若为3XX,浏览器根据响应头的Location字段,重新发送请求,重复上述DNS、TCP、请求流程
- 若为4XX或5XX,浏览器会显示对应错误界面
- 若为200,则根据响应头的Content-Type解析响应体内容
8.页面渲染:把代码变成可视化界面
- HTML解析:
- CSS解析
- 生成渲染树
- 布局
- 绘制
- 合成
9.资源加载:加载页面依赖的其他资源
- 外部CSS
- 图片
- 外部JS
总结:核心流程简化
从输入地址到页面展示,本质是 “请求→处理→响应→渲染” 的闭环,可简化为:
URL解析 → 缓存检查 → DNS解析 → TCP三次握手(+TLS握手) → 发送HTTP请求 → 服务器处理 → 接收HTTP响应 → 页面渲染(DOM+CSSOM→渲染树→布局→绘制→合成) → 加载依赖资源
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/906954.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!