Web 第一步:HTTP 协议(基础)

news2024/11/17 9:56:42

这里是JavaWeb的开头部分!那么先解释一下吧:

Web:全球广域网,也称为万维网(www),能够通过浏览器访问的网站。

JavaWeb:是用Java技术来解决相关 Web 互联网领域的技术栈。

(JavaWeb B/S 概述图)

HTTP 协议(客户端与服务器交互的一种通讯方式)

所谓交互就是“请求”和“响应”。而“协议”就是双方约定好的格式罢了,让他们能沟通的东西。

Request Method 数据格式(共八种)


public enum RequestMethod {
    GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE
}

请求数据格式图:

(可见在 post 请求里 get 和 post 之间有个换行隔开,而 get 的请求参数大小限制在 4KB 以内)

Response

网页响应状态码(Status Code)的部分介绍:

状态码英文描述解释
200OK客户端请求成功,即处理成功,这是我们最想看到的状态码
302Found指示所请求的资源已移动到由Location响应头给定的URL,浏览器会自动重新访问到这个页面
304Not Modified告诉客户端,你请求的资源至上次取得后,服务端并未更改,你直接用你本地缓存吧。隐式重定向
400Bad Request客户端请求有语法错误,不能被服务器所理解
403Forbidden服务器收到请求,但是拒绝提供服务,比如:没有权限访问相关资源
404Not Found请求资源不存在,一般是URL输入有误,或者网站资源被删除了
428Precondition Required服务器要求有条件的请求,告诉客户端要想访问该资源,必须携带特定的请求头
429Too Many Requests太多请求,可以限制客户端请求某个资源的数量,配合Retry-After(多长时间后可以请求)响应头一起使用
431Request Header Fields Too Large请求头太大,服务器不愿意处理请求,因为它的头部字段太大。请求可以在减少请求头域的大小后重新提交。
405Method Not Allowed请求方式有误,比如应该用GET请求方式的资源,用了POST
500Internal Server Error服务器发生不可预期的错误。服务器出异常了,赶紧看日志去吧
503Service Unavailable服务器尚未准备好处理请求,服务器刚刚启动,还未初始化好
511Network Authentication Required客户端需要进行身份验证才能获得网络访问权限

更多信息,可以看这个网址:

HTTP 响应状态码 - HTTP | MDNHTTP 响应状态码用来表明特定 HTTP 请求是否成功完成。 响应被归为以下五大类:icon-default.png?t=N7T8https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status#%E6%9C%8D%E5%8A%A1%E7%AB%AF%E9%94%99%E8%AF%AF%E5%93%8D%E5%BA%94总结:Tomcat 帮我们封装了原始的 HTTP 代码,让我们更加专注于业务代码开发!

小小扩展:

动态网页静态网页
因时间、地点、用户等外界因素变化而改变自有其内在的执行逻辑,不受外界因素的影响

BS和CS架构

Broswer ServerClient Server
依赖网络程度依赖度高依赖度低
程序主体部署位置服务器用户设备
安全验证能力
运算能力
是否方便维护更新方便不方便
使用条件游览器安装软件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1018660.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java8中判断一个对象不为空存在一个类对象是哪个

Java8中判断一个对象不为空存在一个类对象是哪个? 在Java 8中,你可以使用java.util.Optional类来处理可能为空的对象。Optional类可以帮助你优雅地处理空值情况,而不需要显式地进行空值检查。 这是一个简单的Optional示例: imp…

蓝桥杯 题库 简单 每日十题 day3

01 约数个数 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 1200000 有多少个约数(只计算正约数)。 解题思路 枚举,从1开始一直到1200000本身都作为1200000的除数,…

操作系统03-IO设备管理

中断源指的就是中断请求,所谓中断字是指中断请求的编号。 内存不足时候,OS可以采取“内存紧缩”进行改善。 进程控制块PCB组织管理一般采用线性方式。 7个状态模型增加就绪挂起和阻塞挂起的状态:1提高效率 2 提供足够的内存 3有利于调试 生…

【电子学会】2023年05月图形化三级 -- 数星星

数星星 1. 准备工作 (1)删除默认角色小猫,添加角色Pico和Star; (2)添加背景:Stars。 2. 功能实现 (1)Pico位置在舞台左下角; (2)…

springboot和vue:三、web入门(spring-boot-starter- web+控制器+路由映射+参数传递)

spring-boot-starter- web Spring Boot将传统Web开发的mvc、json、tomcat等框架整合,提供了spring-boot-starter-web组件,简化了Web应用配置。创建SpringBoot项目勾选Spring Web选项后,会自动将spring-boot-starter- web组件加入到项目中。w…

Ubuntu 虚拟化中Android Studio 不支持HAXM(CPU不支持问题)

Ubuntu虚拟机中Android Studio virtual device 安装弹出如图1所示的内容时,解决办法就是VMware 中对处理器开启虚拟化引擎(图2)(此方式是在物理设备CPU是Intel环境测试的,AMD的可以参考是否可行) 查看我的文…

Python封装一个接收UDP组播的模块

Python封装一个可以接收UDP组播的类MulticastDataReceiver,在子线程中接收组播数据 # udp_multicast.py import socket import threading import timeclass MulticastDataReceiver:def __init__(self, multicast_group, multicast_port, dest_addr, dest_port):sel…

es小记(copy_to)

简单创建索引复制字段 1: 3个主分片,各自有一个副本,总分片数为 3*26; refresh_interval为刷新频率; 其他参数描述,转载自 PUT test1 { “settings”:{ “number_of_shards”: 1, “number_of_replicas”: 1, “refresh_interval”: “30s” }, “mappings”:{ “properties”…

C语言天花板——指针(初阶)

🌠🌠🌠 大家在刚刚接触C语言的时候就肯定听说过,指针的重要性以及难度等级,以至于经常“谈虎色变”,但是今天我来带大家走进指针的奇妙世界。🎇🎇🎇 一、什么是指针&…

11.外观模式

外观模式&#xff08;Facade&#xff09;&#xff0c;为子系统中的一组接口提供一个一致的界面&#xff0c;此模式定义了一个高层接口&#xff0c;这个接口使得这一子系统更加容易使用。 UML 测试代码 #include <iostream> using namespace std;class SubSystemOne { pu…

Mac专用投屏工具AirServer 7 .27 for Mac中文免费激活版

AirServer 7 .27 for Mac中文免费激活版是一款Mac专用投屏工具&#xff0c;能够通过本地网络将音频、照片、视频以及支持AirPlay功能的第三方App&#xff0c;从 iOS 设备无线传送到 Mac 电脑的屏幕上&#xff0c;把Mac变成一个AirPlay终端的实用工具。 目前最新的AirServer 7.2…

Linux关于memory cgroup的几个要点

概述 本文讲述memory cgroup比较容易误解的一些逻辑&#xff0c;如果不太经常使用和解决问题的话&#xff0c;对于memory cgroup的认知会比较浅显&#xff1a;cgroup memory用来限制进程的内存使用&#xff0c;但是我们进一步想如下的问题&#xff1a; 进程的内存可以分很多类…

「UG/NX」Block UI 指定坐标SpecifyCSYS

✨博客主页何曾参静谧的博客📌文章专栏「UG/NX」BlockUI集合📚全部专栏「UG/NX」NX二次开发「UG/NX」BlockUI集合「VS」Visual Studio「QT」QT5程序设计「C/C+&#

JavaScript学习记录 | DOM事件流 事件冒泡-事件捕获-事件委托

目录 DOM事件流常见面试题事件冒泡与事件捕获事件冒泡使用场景事件捕获使用场景事件冒泡和事件捕获区别 事件委托 - 利用事件冒泡机制事件委托应用场景支持事件委托的事件事件委托的优缺点 DOM事件流 DOM事件流的三个阶段&#xff1a;捕获阶段 -> 目标阶段 -> 冒泡阶段 …

9月13-14日上课内容 第三章 ELK日志分析系统及部署实例

本章结构 ELK日志分析系统简介 ELK日志分析系统分为 Elasticsearch Logstash Kibana 日志处理步骤 1.将日志进行集中化管理 2.将日志格式化(Logstash) 并输出到Elasticsearch 3.对格式化后的数据进行索引和存储 (Elasticsearch) 4.前端数据的展示(Kibana) Elasticsearch介…

Maven 工具学习笔记(基础)

Maven 是专门用于管理和构建Java项目的工具&#xff0c;其主要功能提供有&#xff1a; 标准化的项目结构&#xff08;在不同IDE之间其项目结构不一样&#xff0c;代表不能通用&#xff09;标准化的构建流程&#xff08;编译 ——> 测试 ——> 打包 ——> 发布...&…

epoll实现TCP的服务器与客户端通信

服务器&#xff1a; #include<myhead.h> #define IP "192.168.250.100" #define PORT 8888 /* typedef union epoll_data {void *ptr;int fd;uint32_t u32;uint64_t u64; } epoll_data_t;struct epoll_event {uint32_t events; …

xss渗透(跨站脚本攻击)

一、什么是XSS? XSS全称是Cross Site Scripting即跨站脚本&#xff0c;当目标网站目标用户浏览器渲染HTML文档的过程中&#xff0c;出现了不被预期的脚本指令并执行时&#xff0c;XSS就发生了。 这里我们主要注意四点&#xff1a; 1、目标网站目标用户&#xff1b; 2、浏览…

Ubuntu 20.04中docker-compose部署Nightingale

lsb_release -r可以看到操作系统版本是20.04&#xff0c;uname -r可以看到内核版本是5.5.19。 sudo apt install -y docker-compose安装docker-compose。 完成之后如下图&#xff1a; cd /opt/n9e/docker/进入到/opt/n9e/docker/里边。 docker-compose up -d进行部署。 …

2. CMake 语法的基本指令

2. CMake 语法的基本指令 主要介绍 CMake 脚本语言的一些基础语法怎么使用, 这个行为就像学习 C/C编程语言一样, 从变量, 字符串, 列表这些基础的数据类型, 然后一步步延伸到 if/else, for 等这类的基本逻辑函数,了解 CMake 脚本的基本语法. CMake 官网对指令的划分 我希望带大…