深入分析Java Web技术内幕(一)

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: B/S架构优点: 1. 客户端使用统一的浏览器。浏览器的交互特性使得用户使用它非常便捷 2. 服务器端基于统一的HTTP。

B/S架构

优点:
1. 客户端使用统一的浏览器。浏览器的交互特性使得用户使用它非常便捷
2. 服务器端基于统一的HTTP。使得服务器开发者可以采用相对规范的开发模式

发生请求

HTTP采用无状态的短连接的通信方式。即一次请求就算完成了一次数据交互,通常也对应一个业务逻辑,然后这次通信连接就断开了。

在浏览器输入一个网址后:
1. 浏览器分析链接指向的URL(统一资源定位符)
2. 浏览器请求DNS(域名系统)把这个域名解析成对应的IP地址
3. 根据IP地址在互联网上找到对应的服务器
4. 浏览器与服务器建立TCP连接
5. 向服务器发起一个get请求
6. 由服务器决定返回默认的数据资源给访问的用户
7. 释放TCP连接

在服务器端实际上还有很复杂的业务逻辑:多台服务器,需要一个负载均衡设备来平均分配所有用户的请求;请求的数据是存储在分布式缓存里还是一个静态文件中,或者是数据库里;数据返回浏览器时,浏览器解析数据发现一些静态资源时又发起另外的HTTP请求。

固定不变的原则:
1. 互联网上所有资源都要用一个URL来表示。
2. 必须基于HTTP与服务器端交互
3. 数据展示必须在浏览器中进行。

如何发起一个请求

发起一个HTTP请求的过程就是建立一个Socket通信的过程

HTTP解析

常见的HTTP请求头

请求头 说明
Accept-Charset 用于指定客户端接收的字符集
Accept-Encoding 用于指定的可接受的内容编码
Accept-Language 用于指定一种自然语言
Host 用于指定被请求资源的Internet主机和端口号
User-Agent 客户端将它的操作系统、浏览器和其他属性告诉服务器
Connection 当前连接是否保存


常见的HTTP相应头

响应头 说明
Server 使用的服务器名称
Content-Type 用来指明发送给接收者的实体正文的媒体类型
Content-Encoding 与请求报头Accept-Encoding对应,告诉浏览器服务端采用的是什么压缩编码
Content-Language 描述了资源所用的自然语言,与请求对应
Content-Length 指明实体正文的长度,用以字节方式存储的十进制数字来表示
Keep-Alive 保持连接的时间


常见的HTTP状态码

状态码 说明
200 客户端请求成功
302 临时跳转,跳转的地址通过Location指定
400 服务器收到请求有语法错误,不能被服务器识别
403 服务器收到请求,但是拒绝提供服务
500 服务器发生不可预期的错误
目录
相关文章
|
8天前
|
存储 Java
【编程基础知识】 分析学生成绩:用Java二维数组存储与输出
本文介绍如何使用Java二维数组存储和处理多个学生的各科成绩,包括成绩的输入、存储及格式化输出,适合初学者实践Java基础知识。
37 1
|
12天前
|
存储 安全 关系型数据库
后端技术:构建高效稳定的现代Web应用
【10月更文挑战第5天】后端技术:构建高效稳定的现代Web应用
40 1
|
2天前
|
人工智能 前端开发
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
|
4天前
|
存储 安全 数据库
后端技术在现代Web开发中的实践与创新
【10月更文挑战第13天】 本文将深入探讨后端技术在现代Web开发中的重要性,通过实际案例分析展示如何利用先进的后端技术提升用户体验和系统性能。我们将从基础架构设计、数据库优化、安全性保障等方面展开讨论,为读者提供清晰的指导和实用的技巧。无论是新手开发者还是经验丰富的技术人员,都能从中获得启发和帮助。
18 2
|
6天前
|
自然语言处理 Cloud Native 数据安全/隐私保护
后端技术在现代Web开发中的实践与创新
本文探讨了后端技术在现代Web开发中的重要性及其应用。通过分析当前流行的后端框架和开发模式,揭示了如何利用这些技术来构建高效、可扩展的Web应用程序。同时,文章也讨论了未来后端技术的发展趋势,为开发者提供了一些启示。
|
8天前
|
Java
让星星⭐月亮告诉你,Java synchronized(*.class) synchronized 方法 synchronized(this)分析
本文通过Java代码示例,介绍了`synchronized`关键字在类和实例方法上的使用。总结了三种情况:1) 类级别的锁,多个实例对象在同一时刻只能有一个获取锁;2) 实例方法级别的锁,多个实例对象可以同时执行;3) 同一实例对象的多个线程,同一时刻只能有一个线程执行同步方法。
9 1
|
8天前
|
前端开发 JavaScript 开发者
探索现代Web前端技术:React框架入门
【10月更文挑战第9天】 探索现代Web前端技术:React框架入门
|
8天前
|
小程序 Oracle Java
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
这篇文章是关于JVM基础知识的介绍,包括JVM的跨平台和跨语言特性、Class文件格式的详细解析,以及如何使用javap和jclasslib工具来分析Class文件。
21 0
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
|
11天前
|
Java
如何从Java字节码角度分析问题|8月更文挑战
如何从Java字节码角度分析问题|8月更文挑战
|
5天前
|
机器学习/深度学习 移动开发 JavaScript
Web实时通信的学习之旅:SSE(Server-Sent Events)的技术详解及简单示例演示
Web实时通信的学习之旅:SSE(Server-Sent Events)的技术详解及简单示例演示
35 0