Servlet 客户端 HTTP 请求&响应

Servlet 客户端 HTTP 请求

HTTP协议格式:
在这里插入图片描述
请求格式:
在这里插入图片描述
客户端Request常见报头:

当浏览器请求网页时,它会向 Web 服务器发送特定信息,这些信息不能被直接读取,因为这些信息是作为 HTTP 请求的头的一部分进行传输的。

头信息描述
Accept指定浏览器或其他客户端可以处理的 MIME 类型。值 image/pngimage/jpg 是最常见的可能值。
Accept-Charset指定浏览器可以用来显示信息的字符集。
Accept-Encoding指定浏览器知道如何处理的编码类型。值 gzipcompress 是最常见的值。
Accept-Language指定客户端的首选语言,在这种情况下,Servlet 会产生多种语言的结果。
Authorization用于客户端在访问受密码保护的网页时识别自己的身份。
Connection指示客户端是否可以处理持久 HTTP 连接。持久连接允许客户端或其他浏览器通过单个请求来检索多个文件。值 Keep-Alive 意味着使用了持续连接。
Content-Length只适用于 POST 请求,并给出 POST 数据的大小(以字节为单位)。
Cookie把之前发送到浏览器的 cookies 返回到服务器。
Host指定原始的 URL 中的主机和端口。
If-Modified-Since表示只有当页面在指定的日期后已更改时,客户端想要的页面。如果没有新的结果可以使用,服务器会发送一个 304 代码,表示 Not Modified 头信息。
If-Unmodified-Since是 If-Modified-Since 的对立面,它指定只有当文档早于指定日期时,操作才会成功。
Referer指示所指向的 Web 页的 URL。例如,如果您在网页 1,点击一个链接到网页 2,当浏览器请求网页 2 时,网页 1 的 URL 就会包含在 Referer 头信息中。
User-Agent识别发出请求的浏览器或其他客户端,并可以向不同类型的浏览器返回不同的内容。

操作 HTTP Request头的方法:
下面的方法可用在 Servlet 程序中读取 HTTP 头。这些方法通过 HttpServletRequest 对象使用。

方法描述
Cookie[] getCookies()返回一个数组,包含客户端发送该请求的所有的 Cookie 对象。
Enumeration getHeaderNames()返回一个枚举,包含在该请求中包含的所有的头名。
Enumeration getParameterNames()返回一个 String 对象的枚举,包含在该请求中包含的参数的名称。
HttpSession getSession()返回与该请求关联的当前 session 会话,或者如果请求没有 session 会话, 则创建一个。
HttpSession getSession(boolean create)返回与该请求关联的当前 HttpSession,或者如果没有当前会话,且创建是真的,则返回一个新的 session 会话。
String getCharacterEncoding()返回请求主体中使用的字符编码的名称。
String getContentType()返回请求主体的 MIME 类型,如果不知道类型则返回 null。
String getContextPath()返回指示请求上下文的请求 URI 部分。
String getHeader(String name)以字符串形式返回指定的请求头的值。
String getMethod()返回请求的 HTTP 方法的名称,例如,GET、POST 或 PUT。
String getParameter(String name)以字符串形式返回请求参数的值,或者如果参数不存在则返回 null。
String getProtocol()返回请求协议的名称和版本。
String getQueryString()返回包含在路径后的请求 URL 中的查询字符串。
String getRemoteUser()如果用户已通过身份验证,则返回发出请求的登录用户,或者如果用户未通 过身份验证,则返回 null。
String getRequestURI()从协议名称直到 HTTP 请求的第一行的查询字符串中,返回该请求的 URL 的 一部分。
String getRequestedSessionId()返回由客户端指定的 session 会话 ID。
String[] getParameterValues(String name)返回一个字符串对象的数组,包含所有给定的请求参数的值,如果参数不存在则返回 null。
int getContentLength()以字节为单位返回请求主体的长度,并提供输入流,或者如果长度未知则返回 -1。

GitHub:代码示例

GitHub 代码运行截图:
一、基本方法使用
在这里插入图片描述
二、表单
使用 GET:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用 POST:
在这里插入图片描述
在这里插入图片描述

正文传参,并没有回显到 url 中
不能说 POST 比 GET 更安全,只能说是更私密,要安全,就得加密

三、获取HTTP Request头部信息
在这里插入图片描述

Servlet 服务器 HTTP 响应

服务器端Response常见报头:

Web 服务器端返回到浏览器响应报头

头信息描述
Allow指定服务器支持的请求方法。
Cache- Control指定响应文档在何种情况下可以安全地缓存。可能的值有:public、private 或 no-cache 等。Public 意味着文档是可缓存,Private 意味着文档是单个用户私用文档,且只能存储在私有(非共享)缓存中,no-cache 意味着文档不应被缓存。
Connection指示浏览器是否使用持久 HTTP 连接。值 close 指示浏览器不使用持久 HTTP 连接,值 keep-alive 意味着使用持久连接。
Content-Disposition可以让您请求浏览器要求用户以给定名称的文件把响应保存到磁盘。
Content- Encoding在传输过程中,这个头信息指定页面的编码方式。
Content- Language表示文档编写所使用的语言。
Content- Length指示响应中的字节数。只有当浏览器使用持久(keep-alive)HTTP 连接时才需要这些信息。
Content- Type提供了响应文档的 MIME类型。
Expires指定内容过期的时间,在这之后内容不再被缓存。
Last- Modified指示文档的最后修改时间。然后,客户端可以缓存文件,并在以后的请求中通过 If-Modified-Since 请求头信息提供一个日期。
Location应被包含在所有的带有状态码的响应中。在 300s 内,这会通知浏览器文档的地 址。浏览器会自动重新连接到这个位置,并获取新的文档。
Refresh指定浏览器应该如何尽快请求更新的页面。您可以指定页面刷新的秒数。
Retry-After可以与 503(Service Unavailable 服务不可用)响应配合使用,这会告诉客户端多久就可以重复它的请求。
Set-Cookie指定一个与页面关联的 cookie。

操作HTTP Response头的方法:
下面的方法可用于在 Servlet 程序中设置 HTTP 响应报头。这些方法通过HttpServletResponse 对象可用。

序号方法 & 描述
String encodeRedirectURL(String url)为 sendRedirect 方法中使用的指定的 URL 进行编码,或者如果编码不是必需的,则返回 URL 未改变。
String encodeURL(String url)对包含 session 会话 ID 的指定 URL 进行编码,或者如果编码不是必需 的,则返回 URL 未改变。
boolean isCommitted()返回一个布尔值,指示响应是否已经提交。
void addCookie(Cookie cookie)把指定的 cookie 添加到响应。
void addDateHeader(String name, long date)添加一个带有给定的名称和日期值的响应报头。
void addHeader(String name, String value)添加一个带有给定的名称和值的响应报头。
void addIntHeader(String name, int value)添加一个带有给定的名称和整数值的响应报头。
void sendRedirect(String location)使用指定的重定向位置 URL 发送临时重定向响应到客户端。
void setCharacterEncoding(String charset)设置被发送到客户端的响应的字符编码(MIME 字符集)例如,UTF-8。
void setContentLength(int len)设置在 HTTP Servlet 响应中的内容主体的长度,该方法设置 HTTP Content-Length 头。
void setContentType(String type)如果响应还未被提交,设置被发送到客户端的响应的内容类型。
void setDateHeader(String name, long date)设置一个带有给定的名称和日期值的响应报头。
void setHeader(String name, String value)设置一个带有给定的名称和值的响应报头。
void setIntHeader(String name, int value)设置一个带有给定的名称和整数值的响应报头。
void setStatus(int sc)为该响应设置状态码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值