【Java后端】Servlet HTTP协议(学习笔记)

Servlet

一、Servlet概述

Servlet:server applet 服务器的小程序

Servlet是一个定义了Java类被浏览器访问到(tomcat识别)的规则接口

二、注解配置Servlet

  1. 创建JavaEE项目,选择Servlet的版本3.0以上,可以不创建web.xml
  2. 定义一个类,实现Servlet接口
  3. 复写方法
  4. 在类上使用@WebServlet注解,进行配置:@WebServlet("资源路径")

一个Servlet可以定义多个访问路径 : @WebServlet({"/d4","/dd4","/ddd4"})

路径定义规则:

  1. /xxx:路径
  2. /xxx/xxx:多层路径
  3. *.do:扩展名
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface WebServlet {String name() default "";//相当于<Servlet-name>String[] value() default {};//代表urlPatterns()属性配置String[] urlPatterns() default {};//相当于<url-pattern>int loadOnStartup() default -1;//相当于<load-on-startup>WebInitParam[] initParams() default {};boolean asyncSupported() default false;String smallIcon() default "";String largeIcon() default "";String description() default "";String displayName() default "";
}

三、Servlet体系结构

Servlet -- 接口|
GenericServlet -- 抽象类|
HttpServlet  -- 抽象类
  1. GenericServlet:只将service()方法作为抽象
  2. HttpServlet:对http协议的一种封装,简化操作
    1. 定义类继承HttpServlet
    2. 复写doGet/doPost方法

HTTP协议

一、HTTP

1、HTTP概述

HTTP:Hyper Text Transfer Protocol 超文本传输协议

2、HTTP特点

  1. 基于TCP/IP的高级协议
  2. 默认端口号:80
  3. 基于请求/响应模型的:一次请求对应一次响应
  4. 无状态的:每次请求之间相互独立,不能交互数据

3、HTTP的历史版本

1.0:每一次请求响应都会建立新的连接

1.1:复用连接

二、请求消息

1、请求方式

1)GET
  1. 参数在请求行
  2. url长度有限制
  3. 不太安全
2)POST
  1. 参数在请求体
  2. url长度没有限制
  3. 相对安全

2、请求格式

  1. 请求行:请求方式 请求url 请求协议/版本
  2. 请求头:客户端浏览器告诉服务器一些信息
    1. User-Agent:浏览器版本信息(可以在服务器端获取该头的信息,解决浏览器的兼容性问题)
    2. Referer:请求来源(防盗链、统计信息)
  3. 请求空行:用于分割POST请求的请求头,和请求体的。
  4. 请求体:封装POST请求消息的请求参数的

三、响应消息

1、响应行

格式:协议/版本 响应状态码 状态码描述

响应状态码:服务器给客户端的回信

  1. 1xx:消息没接收完,服务器急了
  2. 2xx:成功辣
  3. 3xx:重定向
    1. 302 重定向
    2. 304 访问缓存
  4. 4xx:客户端请求 错误
    1. 404 请求路径没有资源
    2. 405 请求方式没有对应的方法
  5. 5xx:服务器端错误
    1. 500 服务器内部异常

2、响应头

格式:头名称: 值

Content-Type:响应体数据格式及编码格式

Content- disposition:响应体格式

  1. in-line:默认,当前页面内
  2. attachment,filename=xxx:附件模式打开(下载)

3、响应空行

分隔响应头与响应体

4、响应体:<html>标签

html内容

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

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

相关文章

D3D12可编程渲染流水线

一、初始化D3D库 启用 DirectX数学库 x86需要启用SSE2指令集&#xff0c;所有平台均需将浮点模型设置为fast。默认为&#xff1a; 精度 (/fp:precise)。 #include <DirectXMath.h> #include <DirectXPackedVector.h> 启用调试模式下的内存泄漏检测 // Enabl…

CCF-CSP真题《202309-5 阻击》思路+ c++满分题解

想查看其他题的真题及题解的同学可以前往查看&#xff1a;CCF-CSP真题附题解大全 试题编号&#xff1a;202309-5试题名称&#xff1a;阻击时间限制&#xff1a;2.0s内存限制&#xff1a;512.0MB问题描述&#xff1a; 问题描述 上回提到&#xff0c;西西艾弗岛下方有一个庞大的遗…

Auto.js pro 8.4.1 与 Auto.js pro 9.3.11

已分享出Auto.js Pro8.4.1完美免登录版本 1.在官方基础上支持x86 32位的模拟器运行。Auto.js Pro 8.4.10的官方版本&#xff0c;只有arm64的lib库&#xff0c;不支持雷电模拟器的7.0系统&#xff0c;于是就是找了个v7a的库塞了进去&#xff0c;方便了调试&#xff1b; 2.去除…

【面试】广告优化

a1&#xff1a;点击率公式是什么&#xff1f;点击率低的原因是什么&#xff1f; 点击率点击/曝光&#xff0c;点击率低的原因主要有两点&#xff1a;一是创意不吸引人&#xff1b;二是目标受众不准确/定向过宽不精确&#xff0c;广告曝光给了对产品不感兴趣用户 a2&#xff1a;…

mysql学习记录

insert into table_nameA(字段名) select 字段名 from table_nameA&#xff08;按照一般的select语句格式进行&#xff09; 通过此语句&#xff0c;可以根据需要抓取数据组成新记录落表 存储过程&#xff1a; 创建&#xff1a; CREATE PROCEDURE pro_name&#xff08; IN o…

mysql !=索引为什么失效

可以先看这个&#xff1a;Mysql查询条件为大于时&#xff0c;不走索引失效场景-CSDN博客 如下建立了联合索引&#xff0c; 注意查询phone是用不对劲了索引&#xff0c;key_len82 改为 !时&#xff0c; key key_len没内容&#xff0c;说明没有走索引&#xff0c;为什么没有走&…

【Linux】线程控制:线程创建、终止、等待、分离等

注意&#xff1a; 以下所有的接口都是使用的Linux下的原生线程库&#xff0c;所有g/gcc编译的时候需要加上参数-lpthread&#xff0c;编译pthread动态库。 1、线程的创建pthread_create 相关接口&#xff0c;创建线程函数&#xff0c;成功返回0&#xff0c;失败返回一个错误码…

DOS 系统(命令行)

文章目录 DOS 系统DOS 常用命令DOS 高级命令DOS 批处理命令DOS 应用场景 DOS 系统 操作系统的发展史&#xff08;DOS/Windows篇&#xff09; DOS操作系统的历史 DOS&#xff08;Disk Operating System&#xff09; 是 磁盘操作系统 的缩写&#xff0c;是一种早期的个人计算机操…

HashMap构造函数解析与应用场景

目录 1. HashMap简介 2. HashMap的构造函数 2.1 默认构造函数 2.2 指定初始容量和加载因子的构造函数 3. 构造函数参数的影响 3.1 初始容量的选择 3.2 加载因子的选择 4. 构造函数的应用场景 4.1 默认构造函数的应用场景 4.2 指定初始容量和加载因子的构造函数的应用…

10天玩转Python第8天:python 文件和异常 全面详解与代码示例

今日内容 文件操作 普通文件的操作json 文件的操作[重点] 异常处理(程序代码运行时的报错) 文件介绍 计算机的 文件&#xff0c;就是存储在某种 长期储存设备 上的一段 数据 作用: 将数据长期保存下来&#xff0c;在需要的时候使用 ​ 1.计算机只认识 二进制(0 1) 2.文件中…

myBatis-plus自动填充插件

在 MyBatis-Plus 3.x 中&#xff0c;自动填充的插件方式发生了变化。现在推荐使用 MetaObjectHandler 接口的实现类来定义字段的填充逻辑。以下是使用 MyBatis-Plus 3.x 自动填充的基本步骤&#xff1a; 1.基本配置 1.1添加 Maven 依赖&#xff1a; 确保你的 Maven 依赖中使…

10天玩转Python第9天:python 面向对象 全面详解与代码示例

今日内容 异常 模块和包 导入模块(导包)if __name__ "__main__": Unitest 框架的学习 了解, 基本组成 异常 异常传递[了解] 异常传递是 Python 中已经实现好了,我们不需要操作, 我们知道异常会进行传递. ​ 异常传递: 在函数嵌套调用的过程中, 被调用的函数 ,发…

Tailwind CSS

Tailwind CSS 简介,在这一课中,我们将初步了解下 Tailwind CSS 。 什么是 Tailwind CSS? Tailwind CSS 是一个 CSS 框架,它提供了一系列预定义的实用类,您可以使用这些实用类来快速构建网页。Tailwind CSS 的主要特点是,它可以让您只编写您需要的 CSS,从而减少代码量。…

Grafana Loki 快速尝鲜

Grafana Loki 是一个支持水平扩展、高可用的聚合日志系统&#xff0c;跟其他的聚合日志系统不同&#xff0c;Loki只对日志的元数据-标签进行索引&#xff0c;日志数据会被压缩并存储在对象存储中&#xff0c;甚至可以存储在本地文件系统中&#xff0c;能够有效降低成本&#xf…

下午好~ 我的论文【遥感】(第一期)

写在前面&#xff1a;下午浑浑噩噩&#xff0c;泡杯茶&#xff0c;读篇论文吧 首先说明&#xff0c;时间有限没有那么精力一一回复了&#xff0c;对不起各位了TAT 文章目录 遥感Bi-Dilation-formerCNN-GNN-FusionMulti-hierarchical cross transformerCoupled CNNs 遥感 Bi-D…

NGINX日志配置参数

日志参数 参数说明示例$remote_addr客户端地址219.227.111.255$remote_user客户端用户名称—$time_local访问时间和时区14/Dec/202023:09:27:01 0800$time_iso8601访问时间2023-12-14T09:27:4508:00$request请求的URI和HTTP协议“GET /article-10000.html HTTP/1.1”$request…

Vue3 用 Proxy API 替代 defineProperty API 的那些事

一、Object.defineProperty 定义&#xff1a;Object.defineProperty() 方法会直接在一个对象上定义一个新属性&#xff0c;或者修改一个对象的现有属性&#xff0c;并返回此对象 1.1 为什么能实现响应式 通过defineProperty 两个属性&#xff0c;get及set get 属性的 gett…

电路中的屏蔽罩作用及设计

1.1 屏蔽罩作用 1.1.1 屏蔽电子信号,防止外界的干扰或内部向外的辐射&#xff1a; 一般见于通信类电路PCB&#xff0c;主要一个无线通信产品上有的敏感器件、模拟、数字电路、DCDC电源电路&#xff0c;都需屏蔽隔离&#xff0c;是为了不影响其它电路&#xff0c;也有防止其它电…

国际刑警组织推出新的生物识别系统

2023 年 11 月 29 日&#xff0c;国际刑警组织发布了一份有关创建生物识别工具的新闻稿&#xff0c;至少在意大利&#xff0c;该工具似乎已经陷入沉默&#xff0c;但让我们看看为什么我们会对这个东西感兴趣。 国际刑警组织的新闻稿用了整整一段时间来讨论与隐私相关的问题&am…

0x31 质数

0x31 质数 定义&#xff1a; 若一个正整数无法被除了1和它自身之外的任何自然数整除&#xff0c;则称该数为质数&#xff08;或素数&#xff09;&#xff0c;否则则称该正整数为合数。 在整个自然数集合中&#xff0c;质数的数量不多&#xff0c;分布比较稀疏&#xff0c;对…