JavaWeb 中不得不提的 Servlet

前言

在说到 Servlet 之前,我们先了解下,什么是超文本传输协议(HTTP,HyperText Transfer Protocol)?

一、HTTP(超文本传输协议)

1.1 介绍

HTTP 协议是 TCP/IP 中的一个应用层协议,也是 WWW(万维网)的支撑协议。用于从 WWW 服务器传输超文本到本地浏览器。简单的说,它是服务器与客户端交互的一种协议。

在浏览器中打开一个网页时,浏览器会向相应的服务器发送一段超文本,告诉服务器要的是哪一个网页文件。服务器收到请求后,返回一段超文本给浏览器,然后浏览器将其解析后显示出来。

1.1.1 特点

HTTP 协议的主要特点为:

  1. 支持 C/S 模式。支持基本认证和安全认证。

  2. 简单快速:向服务器请求资源时,只需传送请求方法和路径。由于 HTTP 协议简单,使得 HTTP 服务器的程序规模小,通信速度快。

  3. 面向对象:允许传送任意类型的数据对象,通过数据类型和长度来标识所传送的数据内容和大小,并允许对数据进行压缩。

  4. 无状态:HTTP 协议是无状态协议,无状态是指不会为了下一次连接而维护本次连接所传输的信息。

1.1.2 HTTP 协议 1.0 与 1.1 版本的区别

HTTP 协议也有版本之分,通常了解到最多的是 1.0 和 1.1 协议,而两个版本之间的区别是:

  1. 1.0 协议是非持续连接的,也就是说,一个连接只能传输一个 WEB 资源,处理完请求后,连接就断开了。

  2. 而 1.1 协议是持续连接的,也就是说,一个连接可以传输多个 WEB 资源。

1.2 工作流程

一次 HTTP 操作称为一个事务,其过程如下:

  1. 与服务器建立连接。
  2. 浏览器发送请求。
  3. 服务器接受请求,并根据请求返回相应文件。
  4. 关闭连接。

如果上述的某一步出错了,那么产生错误的消息会返回给客户端。

1.3 HTTP 请求

浏览器向服务器请求某个 WEB 资源时,称为一次 HTTP 请求。

HTTP 定义了 7 种请求方法(GET、POST、HEAD、OPTIONS、DELETE、TRACE、PUT),每种方法规定了不同的信息交换方式,最常用的就是 GET 和 POST。

GET:是默认的 HTTP 请求方法。GET 方法在 URL 地址后附带的参数是有限制的,一般数据容量不超过 1K。

POST:可以在请求的内容中向服务器发送数据,数据量无限制。

一般而言,点击超链接和通过地址栏访问都是 GET 方法。通过表单提交数据一般是 POST 方法。

1.3.1 GET 和 POST 的区别

  1. GET 方法在 URL 中附带的参数有限;而 POST 方法在请求内容中,发送的数据量无限。
  2. GET 一般用于获取数据;而 POST 一般用于提交数据。
  3. GET 方法的请求参数放在 URL 后面,使用 ? 进行拼接;而 POST 方法的请求参数放在 HTTP 请求包中。
  4. GET 方法要比 POST 方法快。

1.3.2 HTTP 请求组成内容

而 HTTP 请求信息由三部分组成:

  1. 请求行。
  2. 请求头。
  3. 请求实体。

举个例子:

	/** 
	* 请求行
	* “GET” 表示请求方法,“/index.html” 表示URI,“HTTP/1.1” 表示使用的协议和版本。
	*/
	GET /index.html HTTP/1.1
	/**
	* 请求头
	* 请求头包含了客户端的环境信息。例如:浏览器使用的语言、内核、编码等。
	*/
	Accept:image/gif.image/jpeg,*/*
	Accept-Language:zh-cn
	Connection:Keep-Alive
	Host:localhost
	User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
	Accept-Encoding:gzip,deflate
	
	/**
	* 请求实体(值得注意的是,上面是有空行的,空行非常重要,它是请求头和请求正文之间的划分线。)
	* 内容是客户端提交的参数。
	*/
	username=deny&password=123456

1.4 HTTP 响应

1.4.1 HTTP 响应组成内容

HTTP 响应也由三个部分组成:

  1. 状态行。
  2. 响应头。
  3. 响应实体。

同样也是举个例子:

	/**
	*	状态行
	*	“HTTP/1.1” 代表使用的协议和版本,“200” 是状态码,“OK” 是原因描述
	*/
	HTTP/1.1 200 OK
	/**
	*	响应头
	*	响应头包含了服务器的环境信息和响应数据的描述等。
	*/
	Server:Apache Tomcat/5.0.12
	Date:Mon,6Oct2003 13:13:33 GMT
	Content-Type:text/html
	Last-Moified:Mon,6 Oct 2003 13:23:42 GMT
	Content-Length:113

	/**
	*	响应内容
	*	(重点:上面同样也是有个空格,用于分隔响应头和响应内容。)
	*	响应内容就是服务器返回的数据
	*/
	<html>
	<head>
	<title>example<title>
	</head>
	<body>
	Hello World!
	</body>
	</html>

1.4.2 状态码

状态码代表了请求的处理结果,由三位十进制数据构成,其中,首位数字定义了它属于的类型

状态码分为五种:

类型 描述
100~199(信息类) 表示服务器成功接收了请求,正在处理中。
200~299(成功类) 表示服务器成功接收了请求,并已完成处理。常见 200。
300~399(重定向类) 表示请求不成功,需要客户端采取进一步的动作。
400~499(客户端错误) 表示客户端提交的请求有错误。常见 400。
500~599(服务器错误) 表示服务器不能完成对请求的处理。常见 500。

二、 Servlet

2.1 介绍

Serlvet 指任何直接或间接实现 Servlet 接口的类。 Servlet是服务器端的,运行在服务器中。它可以响应任何类型的请求。其功能是用于交互式地浏览和修改数据。

2.1.1 Servlet 主要了解的类:<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值