JavaWeb核心①(概述、HTTP)

网友投稿 249 2022-09-05

JavaWeb核心①(概述、HTTP)

文章目录

​​前置知识:Web概述​​

​​Web和JavaWeb的概念​​​​JavaWeb技术栈​​

​​B/S架构​​​​静态资源​​​​动态资源​​​​数据库​​

​​HTTP​​

​​请求数据格式​​​​响应数据格式​​

​​附:响应状态码​​

​​状态码大类​​​​常见的响应状态码​​

前置知识:Web概述

Web和JavaWeb的概念

Web是全球广域网,也称为万维网(架构​​:Browser/Server,浏览器/服务器 架构模式,它的特点是,客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器,获取Web资源,服务器把Web资源发送给浏览器即可。大家可以通过下面这张图来回想下我们平常的上网过程:

在服务端将来会放很多资源,都有哪些资源呢?

静态资源

静态资源主要包含HTML、CSS、JavaScript、图片等,主要负责页面的展示。我们之前已经学过前端网页制作​​三剑客​​(HTML+CSS+JavaScript),使用这些技术我们就可以制作出效果比较丰富的网页,将来展现给用户。但是由于做出来的这些内容都是静态的,这就会导致所有的人看到的内容将是一模一样。在日常上网的过程中,我们除了看到这些好看的页面以外,还会碰到很多动态内容,比如我们常见的百度登录效果:​​​张三​​​登录以后在网页的右上角看到的是 ​​张三​​,而​​李四​​登录以后看到的则是​​李四​​。所以不同的用户访问相同的资源看到的内容大多数是不一样的,要想实现这样的效果,光靠静态资源是无法实现的。

动态资源

动态资源主要包含Servlet、JSP等,主要用来负责逻辑处理。动态资源处理完逻辑后会把得到的结果交给静态资源来进行展示,动态资源和静态资源要结合一起使用。动态资源虽然可以处理逻辑,但是当用户来登录百度的时候,就需要输入​​用户名​​​和​​密码​​,这个时候我们就又需要解决的一个问题是:用户在注册的时候填入的用户名和密码、以及我们经常会访问到一些数据列表的内容展示,这些数据都存储在哪里?我们需要的时候又是从哪里来取呢?

数据库

(1)浏览器发送一个请求到服务端,去请求所需要的相关资源; (2)资源分为动态资源和静态资源,动态资源可以是使用Java代码按照Servlet和JSP的规范编写的内容; (3)在Java代码可以进行业务处理也可以从数据库中读取数据; (4)拿到数据后,把数据交给HTML页面进行展示,再结合CSS和JavaScript使展示效果更好; (5)服务端将静态资源响应给浏览器; (6)浏览器将这些资源进行解析; (7)解析后将效果展示在浏览器,用户就可以看到最终的结果。

HTTP

HyperText Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。

HTTP协议特点

HTTP协议有它自己的一些特点,分别是:

基于TCP协议: 面向连接,安全TCP是一种面向连接的(建立连接之前是需要经过三次握手)、可靠的、基于字节流的传输层通信协议,在数据传输方面更安全。基于请求-响应模型的:一次请求对应一次响应请求和响应是一一对应关系HTTP协议是无状态协议:对于事物处理没有记忆能力。每次请求-响应都是独立的无状态指的是客户端发送HTTP请求给服务端之后,服务端根据请求响应数据,响应完后,不会记录任何信息。这种特性有优点也有缺点,

缺点:多次请求间不能共享数据优点:速度快

请求数据格式

请求数据总共分为三部分内容,分别是请求行、请求头、请求体

请求行: HTTP请求中的第一行数据,请求行包含三块内容,分别是 GET[请求方式] /[请求URL路径] HTTP/1.1[HTTP协议及版本]请求方式有七种,最常用的是GET和POST请求头: 第二行开始,格式为key: value形式请求头中会包含若干个属性,常见的HTTP请求头有:

Host: 表示请求的主机名User-Agent: 浏览器版本,例如Chrome浏览器的标识类似Mozilla/5.0 ...Chrome/79,IE浏览器的标识类似Mozilla/5.0 (Windows NT ...)like Gecko;Accept:表示浏览器能接收的资源类型,如text/*,image/*或者*/*表示所有;Accept-Language:表示浏览器偏好的语言,服务器可以据此返回不同语言的网页;Accept-Encoding:表示浏览器可以支持的压缩类型,例如gzip, deflate等。

这些数据有什么用处?

举例说明:服务端可以根据请求头中的内容来获取客户端的相关信息,有了这些信息服务端就可以处理不同的业务需求,比如:

不同浏览器解析HTML和CSS标签的结果会有不一致,所以就会导致相同的代码在不同的浏览器会出现不同的效果服务端根据客户端请求头中的数据获取到客户端的浏览器类型,就可以根据不同的浏览器设置不同的代码来达到一致的效果这就是我们常说的浏览器兼容问题

响应数据格式

响应数据总共分为三部分内容,分别是响应行、响应头、响应体

响应行:响应数据的第一行,响应行包含三块内容,分别是 HTTP/1.1[HTTP协议及版本] 200[响应状态码] ok[状态码的描述]响应头:第二行开始,格式为key:value形式响应头中会包含若干个属性,常见的HTTP响应头有:

Content-Type:表示该响应内容的类型,例如text/html,image/jpeg;Content-Length:表示该响应内容的长度(字节数);Content-Encoding:表示该响应压缩算法,例如gzip;Cache-Control:指示客户端应如何缓存,例如max-age=300表示可以最多缓存300秒

响应体: 最后一部分。存放响应数据上图中…这部分内容就是响应体,它和响应头之间有一个空行隔开。

附:响应状态码

状态码大类

状态码分类

说明

1xx

响应中——临时状态码,表示请求已经接受,告诉客户端应该继续请求或者如果它已经完成则忽略它

2xx

成功——表示请求已经被成功接收,处理已完成

3xx

重定向——重定向到其它地方:它让客户端再发起一个请求以完成整个处理。

4xx

客户端错误——处理发生错误,责任在客户端,如:客户端的请求一个不存在的资源,客户端未被授权,禁止访问等

5xx

服务器端错误——处理发生错误,责任在服务端,如:服务端抛出异常,路由出错,HTTP版本不支持等

状态码大全:class="data-table" data-id="t7a7e9d1-cL7FlVGb" data-width="" style="outline: none; border-collapse: collapse; width: 100%;">

状态码

英文描述

解释

200

OK

客户端请求成功,即处理成功,这是我们最想看到的状态码

302

Found

指示所请求的资源已移动到由​​Location​​响应头给定的 URL,浏览器会自动重新访问到这个页面

304

Not Modified

告诉客户端,你请求的资源至上次取得后,服务端并未更改,你直接用你本地缓存吧。隐式重定向

400

Bad Request

客户端请求有语法错误,不能被服务器所理解

403

Forbidden

服务器收到请求,但是拒绝提供服务,比如:没有权限访问相关资源

404

Not Found

请求资源不存在,一般是URL输入有误,或者网站资源被删除了

428

Precondition Required

服务器要求有条件的请求,告诉客户端要想访问该资源,必须携带特定的请求头

429

Too Many Requests

太多请求,可以限制客户端请求某个资源的数量,配合 Retry-After(多长时间后可以请求)响应头一起使用

431

Request Header Fields Too Large

请求头太大,服务器不愿意处理请求,因为它的头部字段太大。请求可以在减少请求头域的大小后重新提交。

405

Method Not Allowed

请求方式有误,比如应该用GET请求方式的资源,用了POST

500

Internal Server Error

服务器发生不可预期的错误。服务器出异常了,赶紧看日志去吧

503

Service Unavailable

服务器尚未准备好处理请求,服务器刚刚启动,还未初始化好

511

Network Authentication Required

客户端需要进行身份验证才能获得网络访问权限

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Request①
下一篇:王者荣耀世冠杯小组赛7月底揭幕,“心疼东莞Wz”上热搜!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~