深入分析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 服务器发生不可预期的错误
目录
相关文章
|
9天前
|
缓存 JavaScript Java
常见java OOM异常分析排查思路分析
Java虚拟机(JVM)遇到内存不足时会抛出OutOfMemoryError(OOM)异常。常见OOM情况包括:1) **Java堆空间不足**:大量对象未被及时回收或内存泄漏;2) **线程栈空间不足**:递归过深或大量线程创建;3) **方法区溢出**:类信息过多,如CGLib代理类生成过多;4) **本机内存不足**:JNI调用消耗大量内存;5) **GC造成的内存不足**:频繁GC但效果不佳。解决方法包括调整JVM参数(如-Xmx、-Xss)、优化代码及使用高效垃圾回收器。
75 15
常见java OOM异常分析排查思路分析
|
2天前
|
SQL 缓存 搜索推荐
后端技术在现代Web开发中的应用与挑战
本文将深入探讨后端技术在现代Web开发中的重要性,涵盖从基础架构到性能优化的多个方面。通过分析当前主流后端技术的优缺点,并提供一些实用的解决方案和建议,帮助开发者更好地应对日常开发中的挑战。
15 1
|
15天前
|
缓存 JavaScript Java
常见java OOM异常分析排查思路分析
Java虚拟机(JVM)遇到 OutOfMemoryError(OOM)表示内存资源不足。常见OOM情况包括:1) **Java堆空间不足**:内存被大量对象占用且未及时回收,或内存泄漏;解决方法包括调整JVM堆内存大小、优化代码及修复内存泄漏。2) **线程栈空间不足**:单线程栈帧过大或频繁创建线程;可通过优化代码或调整-Xss参数解决。3) **方法区溢出**:运行时生成大量类导致方法区满载;需调整元空间大小或优化类加载机制。4) **本机内存不足**:JNI调用或内存泄漏引起;需检查并优化本机代码。5) **GC造成的内存不足**:频繁GC但效果不佳;需优化JVM参数、代码及垃圾回收器
常见java OOM异常分析排查思路分析
|
8天前
|
安全 JavaScript Java
后端技术在现代Web开发中的实践与挑战
本文旨在探讨后端技术在现代Web开发中的关键作用,分析其在数据处理、业务逻辑实现和系统安全等方面的重要性。通过阐述常见的后端技术和框架,如Node.js、Django和Spring Boot,展示它们在实际项目中的应用。同时,文章将讨论后端开发所面临的主要挑战,包括性能优化、扩展性和维护性问题,以及如何应对这些挑战。最终,通过对实际案例的分析,总结出一套行之有效的后端开发最佳实践,为开发者提供参考。
31 5
|
8天前
|
存储 负载均衡 Java
Jetty技术深度解析及其在Java中的实战应用
【9月更文挑战第3天】Jetty,作为一款开源的、轻量级、高性能的Java Web服务器和Servlet容器,自1995年问世以来,凭借其卓越的性能、灵活的配置和丰富的扩展功能,在Java Web应用开发中占据了举足轻重的地位。本文将详细介绍Jetty的背景、核心功能点以及在Java中的实战应用,帮助开发者更好地理解和利用Jetty构建高效、可靠的Web服务。
22 2
|
8天前
|
人工智能 关系型数据库 数据安全/隐私保护
后端技术在现代Web开发中的应用与挑战
本文将深入探讨后端技术在现代Web开发中的重要性,通过分析其在数据处理、业务逻辑实现和安全性保障方面的应用,揭示后端技术的核心价值。同时,本文还将讨论当前后端开发面临的主要挑战,如高并发处理、数据安全、微服务架构的复杂性等,并给出相应的解决方案。无论是后端开发者还是对后端技术感兴趣的读者,都可以通过这篇文章获得启发和指导。
|
12天前
|
Java 程序员 编译器
Java的反射技术reflect
Java的反射技术允许程序在运行时动态加载和操作类,基于字节码文件构建中间语言代码,进而生成机器码在JVM上执行,实现了“一次编译,到处运行”。此技术虽需更多运行时间,但广泛应用于Spring框架的持续集成、动态配置及三大特性(IOC、DI、AOP)中,支持企业级应用的迭代升级和灵活配置管理,适用于集群部署与数据同步场景。
|
11天前
|
算法 Oracle Java
Java字符串拼接技术演进及阿里巴巴的贡献
本文主要讲述了Java字符串拼接技术的演进历程,以及阿里巴巴贡献的最新实现 PR 20273。
|
2天前
|
Kubernetes Cloud Native Java
探索未来编程新纪元:Quarkus带你秒建高性能Kubernetes原生Java应用,云原生时代的技术狂欢!
Quarkus 是专为 Kubernetes 设计的全栈云原生 Java 框架,凭借其轻量级、快速启动及高效执行特性,在 Java 社区脱颖而出。通过编译时优化与原生镜像支持,Quarkus 提升了应用性能,同时保持了 Java 的熟悉度与灵活性。本文将指导你从创建项目、编写 REST 控制器到构建与部署 Kubernetes 原生镜像的全过程,让你快速上手 Quarkus,体验高效开发与部署的乐趣。
9 0
|
7天前
|
数据处理 Python
Django视图:构建动态Web页面的核心技术
Django视图:构建动态Web页面的核心技术