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

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析DNS,个人版 1个月
全局流量管理 GTM,标准版 1个月
简介: 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 服务器发生不可预期的错误
目录
相关文章
|
4天前
|
开发框架 前端开发 Java
【前端学java】SpringBootWeb极速入门-实现一个简单的web页面01
【8月更文挑战第12天】SpringBootWeb极速入门-实现一个简单的web页面01
15 3
【前端学java】SpringBootWeb极速入门-实现一个简单的web页面01
|
8天前
|
前端开发 测试技术 数据库
使用Ruby on Rails进行快速Web开发的技术探索
【8月更文挑战第12天】Ruby on Rails以其高效、灵活和易于维护的特点,成为了快速Web开发领域的佼佼者。通过遵循Rails的约定和最佳实践,开发者可以更加专注于业务逻辑的实现,快速构建出高质量的Web应用。当然,正如任何技术框架一样,Rails也有其适用场景和局限性,开发者需要根据项目需求和个人偏好做出合适的选择。
|
5天前
|
Java
Java BasePooledObjectFactory 对象池化技术
Java BasePooledObjectFactory 对象池化技术
9 1
|
6天前
|
Java
java.lang.ClassNotFoundException: org.springframework.web.filter.CharacterEncodingFilter 增样将jar包导入
文章记录了解决Java项目中遇到的`java.lang.ClassNotFoundException: org.springframework.web.filter.CharacterEncodingFilter`异常的方法,即通过在项目的`WEB-INF`文件夹下创建与`classes`平级的`lib`文件夹并添加所需的jar包来解决。
java.lang.ClassNotFoundException: org.springframework.web.filter.CharacterEncodingFilter 增样将jar包导入
|
6天前
|
安全 前端开发 Java
Web端系统开发解决跨域问题——以Java SpringBoot框架配置Cors为例
在Web安全上下文中,源(Origin)是指一个URL的协议、域名和端口号的组合。这三个部分共同定义了资源的来源,浏览器会根据这些信息来判断两个资源是否属于同一源。例如,https://www.example.com:443和http://www.example.com虽然域名相同,但由于协议和端口号不同,它们被视为不同的源。同源(Same-Origin)是指两个URL的协议、域名和端口号完全相同。只有当这些条件都满足时,浏览器才认为这两个资源来自同一源,从而允许它们之间的交互操作。
Web端系统开发解决跨域问题——以Java SpringBoot框架配置Cors为例
|
8天前
|
分布式计算 安全 Java
Java帝国的无限魅力:揭秘这门万能编程语言如何征服科技世界,从Web到太空探索,Java的触角无处不在!
【8月更文挑战第12天】随着信息技术的发展,编程语言成为科技核心。Java以其成熟与广泛应用,在众多语言中脱颖而出。它支持跨平台运行,实现“一次编写,处处运行”。Java的面向对象特性促进代码复用与维护,内置的安全机制保障系统安全。Java应用于Web开发、大数据处理、移动应用等多个领域,展现了其不可替代的价值。
20 1
|
4天前
|
移动开发 小程序 前端开发
跨端技术演进问题之Web容器方案在跨端开发中的优势和不足如何解决
跨端技术演进问题之Web容器方案在跨端开发中的优势和不足如何解决
|
5天前
|
存储 设计模式 安全
Java GenericObjectPool 对象池化技术--SpringBoot sftp 连接池工具类
Java GenericObjectPool 对象池化技术--SpringBoot sftp 连接池工具类
5 0
|
8天前
|
Java Maven Windows
java -jar 启动 boot 程序 no main manifest attribute, in .\vipsoft-model-web-0.0.1-SNAPSHOT.jar
java -jar 启动 boot 程序 no main manifest attribute, in .\vipsoft-model-web-0.0.1-SNAPSHOT.jar
28 0
|
2月前
|
安全 Java 数据库连接
Java Web应用
Java Web应用
17 0