HTTP协议

HTTP协议

  1. 什么是HTTP协议?

HyperText Transfer Protocol

由w3c制订的一种应用层协议,用来定义浏览器与web服务器之间如何通信以及通信的数据格式

2.如何通信

HTTP协议_第1张图片

数据格式

HTTP请求包括三部分:

  • 请求行(Request Line) 请求行由请求方法(method),请求网址Request-URI和协议 (Protocol)构成
  • 头部(Headers) 包括多个属性,实体内容(数据体)则可以被认为是附加在请求之后的文本或二进制文件
  • 实体内容(Body) 只有请求方式为post的时候,实体内容才会有数据(即请求参数)。

响应数据包组成

  • 状态行 :协议类型+版本+状态码+状态描述 例:HTTP/1.1 200 OK
  • 消息头 :web服务器返回一些消息头给浏览器。
    例如返回Content-type消息头 ,告诉浏览器服务器返回的数据类型和字符集
  • 列表内容:程序处理的结果

常用请求头:

Accept: 浏览器可接受的MIME类型 / (大类型)/(小类型)

**Accept-Encoding:**浏览器能够进行解码的数据编码方式,比如gzip

**Accept-Language:**浏览器所希望的语言种类

**Host:**初始URL中的主机和端口

**Referer:**包含一个URL,用户从该URL代表的页面发出访问当前请求的页面

**Content-Type:**内容类型

**If-Modified-Since:**值为一个GMT标准时间,如果在该时间到目前,请求文件没有更改,则服务器告诉浏览器可以直接从缓存中读取文件

**User-Agent:**用户的浏览器类型,操作系统等信息

**Content-Length:**表示请求消息正文的长度

**Connection:**如果值为Keep-Alive,表示需要持久连接,HTTP 1.1默认进行持久连接

**Cookie:**这是最重要的请求头信息之一,但是由于该技术存在安全隐患等原因,该功能被Session取代

**Date:**值为GMT时间,表示请求时间

常用状态码

200:正常

302/307:临时重定向

304:未修改,可以使用缓存,无需再次修改

404:资源找不到

500:服务器内部错误

3.HttpServletRequest

HttpServletRequest接口最常用的方法就是获得请求中的参数,这些参数一般是客户端表单中的数据。同时,HttpServletRequest接口可以获取由客户端传送的名称,也可以获取产生请求并且接收请求的服务器端主机名及IP地址,还可以获取客户端正在使用的通信协议等信息。下表是接口HttpServletRequest的常用方法。

说明:HttpServletRequest接口提供了很多的方法。

接口HttpServletRequest的常用方法

getAttributeNames()

返回当前请求的所有属性的名字集合

getAttribute(String name)

返回name指定的属性值

getCookies()

返回客户端发送的Cookie

getsession()

返回和客户端相关的session,如果没有给客户端分配session,则返回null

getsession(boolean create)

返回和客户端相关的session,如果没有给客户端分配session,则创建一个session并返回

getParameter(String name)

获取请求中的参数,该参数是由name指定的

getParameterValues(String name)

返回请求中的参数值,该参数值是由name指定的

getCharacterEncoding()

返回请求的字符编码方式

getContentLength()

返回请求体的有效长度

getInputStream()

获取请求的输入流中的数据

getMethod()

获取发送请求的方式,如get、post

getParameterNames()

获取请求中所有参数的名字

getProtocol()

获取请求所使用的协议名称

getReader()

获取请求体的数据流

getRemoteAddr()

获取客户端的IP地址

getRemoteHost()

获取客户端的名字

getServerName()

返回接受请求的服务器的名字

getServerPath()

获取请求的文件的路径

4.HttpServletResponse

在Servlet中,当服务器响应客户端的一个请求时,就要用到HttpServletResponse接口。设置响应的类型可以使用setContentType()方法。发送字符数据,可以使用getWriter()返回一个对象。下表是接口HttpServletResponse的常用方法。

接口HttpServletResponse的常用方法

addCookie(Cookie cookie)

将指定的Cookie加入到当前的响应中

addHeader(String name,String value)

将指定的名字和值加入到响应的头信息中

containsHeader(String name)

返回一个布尔值,判断响应的头部是否被设置

encodeURL(String url)

编码指定的URL

sendError(int sc)

使用指定状态码发送一个错误到客户端

sendRedirect(String location)

发送一个临时的响应到客户端

setDateHeader(String name,long date)

将给出的名字和日期设置响应的头部

setHeader(String name,String value)

将给出的名字和值设置响应的头部

setStatus(int sc)

给当前响应设置状态码

setContentType(String ContentType)

设置响应的MIME类型

你可能感兴趣的:(Java基础)