【Servlet】1:踏入JavaWeb的第一把钥匙

目录

第一章 | JavaWeb序章

| 章节概述

| JavaWeb项目运行流程

| 静态与动态资源

| Javaweb开发人员的三个任务

第二章 | HTTP网络协议

| 章节概述

| HTTP简介

| HTTP请求三要素

| HTTP请求包、响应包

| HTTP状态码

| HTTPS vs HTTP


本文章属于后端全套笔记的第三部分。

(更新中)【后端入门到入土!】Java+Servlet+JDBC+SSM+SpringBoot+SpringCloud 基础入门_Graskli的博客-CSDN博客一篇文章,后端入门到入土。包含 Java基础+高级、MySQL、JDBC、Servlet、SSM、SpringBoot、SpringCloud、项目 的笔记。https://blog.csdn.net/m0_57265007/article/details/127962617?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22127962617%22%2C%22source%22%3A%22m0_57265007%22%7D

第一章 | JavaWeb序章

| 章节概述

学习 Servlet 前,您需要有下列知识储备:Java基础语法

本章将学习

  • 对Javaweb项目的执行流程有一个全局的认知,知道今后学习的知识都对应整个流程中的哪一个部分

  • 对Javaweb开发人员需要进行的任务有一个提前认知,知道作为一个Java后端开发人员的职责所在

  • 掌握静态资源和动态资源相关知识点


| JavaWeb项目运行流程

 

| 静态与动态资源

1.静态资源和动态资源的概念

  • 静态资源:一般客户端发送请求到web服务器,web服务器从内存在取到相应的文件,返回给客户端,客户端解析并渲染显示出来。

  • 动态资源:一般客户端请求的动态资源,先将请求交于web容器,web容器连接数据库,数据库处理数据之后,将内容交给web服务器,web服务器返回给客户端解析渲染处理。

2.静态资源和动态资源的区别

  • 静态资源一般都是设计好的html页面,而动态资源依靠设计好的程序来实现按照需求的动态响应;

  • 静态资源的交互性差,动态资源可以根据需求自由实现;

  • 在服务器的运行状态不同,静态资源不需要与数据库参于程序处理,动态可能需要多个数据库的参与运算。


| Javaweb开发人员的三个任务

  • 控制浏览器的请求方式(前端人员)

  • 编写响应的Servlet、连接数据库CURD处理请求(后端人员)

  • 控制浏览器接受请求的行为,即响应对象(后端人员)


第二章 | HTTP网络协议

| 章节概述

本章将学习

  • 初步认识HTTP及其特点

  • 掌握HTTP请求的三要素、请求包、响应包、状态码等知识

  • 掌握HTTPS和HTTP的异同点


| HTTP简介

Http是什么?

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传输协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

HTTP是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。在Internet上的Web服务器上存放的都是超文本信息,客户机需要通过HTTP协议传输所要访问的超文本信息。HTTP包含命令和传输信息,不仅可用于Web访问,也可以用于其他因特网/内联网应用系统之间的通信,从而实现各类应用资源超媒体访问的集成。

我们在浏览器的地址栏里输入的网站地址叫做URL (Uniform Resource Locator,统一资源定位符)。就像每家每户都有一个门牌地址一样,每个网页也都有一个Internet地址。当你在浏览器的地址框中输入一个URL或是单击一个超级链接时,URL就确定了要浏览的地址。浏览器通过超文本传输协议(HTTP),将Web服务器上站点的网页代码提取出来,并翻译成漂亮的网页。

Http协议由Http请求和Http响应组成,当在浏览器中输入网址访问某个网站时, 你的浏览器会将你的请求封装成一个Http请求发送给服务器站点,服务器接收到请 求后会组织响应数据封装成一个Http响应返回给浏览器。即没有请求就没有响应。

Http的特点

  • 基于请求/响应模型的协议。请求和响应必须成对,先有请求后有响应

  • http协议默认端口:80

  • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

  • 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

  • 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

  • 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。


| HTTP请求三要素

请求地址:

  • 使用 a 标签进行控制

  • 当查询字符串中包含特殊字符,就需要对特殊字符进行转义,这个转义的过程就叫encode,反之就是decode

  • URL的结构如下

求参数:

前端人员通过操作dom对象获取用户输入的value,然后进行ajax请求,把数据发送给后端

请求方式:

  • 浏览器可以选择的请求方式有7中,如下图。在此只介绍一下最常用的【POST请求方式】和【GET请求方式】

  • GET请求方式:4k大小,显示信息,协议包,缓存

    1)要求浏览器发送请求的时候,携带的【请求参数数量】不能超过4k,否则截取发送

    2)要求浏览器发送请求的时候,必须在浏览器地址栏显示【请求参数信息】

    3)要求浏览器发送请求的时候,必须将请求参数信息保存在Http请求协议包中【请求体】

    4)要求浏览器在接收到服务器返回的资源文件内容后,必须将资源文件保存在浏览器的缓存中

  • POST请求方式:不限大小,隐藏信息,协议包,不缓存

    1)携带的【请求参数数量】可以不限大小

    2)必须在浏览器地址隐藏【请求参数信息】(如:输入的账号和密码作为参数 需隐藏)

    3)必须将参数信息保存在Http请求协议包中【请求体】

    4)禁止浏览器将服务器返回的资源文件内容进行保存(防止实时信息失真)

  • 辨析

    • GET和POST本质上是没有区别的!

    • GET通常用来获取数据,POST用来上传数据。因此绝大多数网站拒绝接收POST的请求,日常开发中大多使用GET请求

    • 通常情况下,GET是没有body的,它通过query string向服务器传递数据

    • GET可以被缓存,POST不能被缓存

    • 必须使用POST请求的场景

      • 文件上传 必须使用POST

      • 发起登陆验证请求,必须使用POST

      • 索要服务器中的实时变化数据时(股票价格、车票数量)时必须使用POST


| HTTP请求包、响应包

Http协议包,是Http协议的一个具象实现方式

HTTP协议包的作用

  • 在网络中传递信息都是以【二进制】形式存在的。

  • 接收方【浏览器/服务器】在接收信息后,要做第一件事就是将【二进制数据】进行编译【文字,图片,视频,命令】

  • 传递信息数据量往往比较巨大,导致接收方很难在一组连续二进制得到对应数据

    比如 浏览器发送一个请求: http://192.168.100.2:8080/index.html

    这个请求信息以二进制形式发送 01010101010110101010101101010

    Http服务器很难从二进制数据得到相关信息

  • 网络协议包一组有规律二进制数据,在这组数据存在了固定空间,网络协议包出现极大降低了接收方对接收二进制数据编译难度

    如:【0000(ip地址)0000(端口号)0000(资源文件名)0000】

HTTP请求协议包

  • 在浏览器准备发送请求时,负责创建一个Http请求协议包浏览器将请求信息以二进制形式保存在Http请求协议包各个空间,由浏览器负责将Http请求协议包推送到指定服务端计算机

  • 构成:请求行、请求头、空白行、请求体

    • 请求行:存放HTTP协议的版本、请求方式、请求地址

    • 请求头:存放GET请求的参数信息,是一组键值对;还可能存放了Cookie;除此之外,还存放了各种客户端的环境信息

    • 空白行:分割作用

    • 请求体:存放POST请求的参数信息(但是浏览器中是看不到的,有效保证了保密性)例:userName=123&password=123&returnUrl=/

HTTP请求响应包

  • Http服务器在定位到被访问的资源文件之后。负责创建一个Http响应协议包Http服务器将定位文件内容或则文件命令以二进制形式写入到Http响应协议包各个空间,由Http服务器负责将Http响应协议包推送回发起请求的浏览器上。

  • 构成:状态行、响应头、空白行、响应体

    • 状态行:存放HTTP协议的版本、状态码、状态描述(通过一个或是一组简短的单词描述了当前状态码的含义)

    • 响应头:指定浏览器采用哪个视频、图片、文本编译器;对响应体二进制数据进行解析Cookie等等(即服务器端的信息

    • 空白行:分割作用

    • 响应体:存放静态资源文件、静态资源文件命令、被访问动态资源文件运行结果(都是二进制形式),存放显示在浏览器的内容(与响应头配合,显示出来)


| HTTP状态码

由3位数字组成,第一个数字定义了响应的类别

| HTTPS vs HTTP

HTTPS(Hypertext Transfer Protocol Secure:超文本传输安全协议)是一种透过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。

  • HTTPS即在HTTP的基础上加了一个加密协议,保障数据安全。

  • HTTPS 默认工作在 TCP 协议443端口,它的工作流程一般如以下方式:

    • 1、TCP 三次同步握手

    • 2、客户端验证服务器数字证书

    • 3、DH 算法协商对称加密算法的密钥、hash 算法的密钥

    • 4、SSL 安全加密隧道协商完成

    • 5、网页以加密的方式传输,用协商的对称加密算法和密钥加密,保证数据机密性;用协商的hash算法进行数据完整性保护,保证数据不被篡改。

  • HTTP 与 HTTPS 区别

    • HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。

    • 使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。

    • HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。

    • http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。

    • HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。

猜你喜欢

转载自blog.csdn.net/m0_57265007/article/details/127982144