`
禹爸爸
  • 浏览: 86310 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Java Servlet学习笔记(四)Servlet客户端Http请求

    博客分类:
  • Java
阅读更多

Servlet客户端 HTTP 请求

当浏览器请求网页时,它会向 Web 服务器发送特定信息,这些信息不能被直接读取,因为这些信息是作为 HTTP 请求的头的一部分进行传输的。您可以查看HTTP 协议了解更多相关信息。

以下是来自于浏览器端的重要头信息,您可以在 Web 编程中频繁使用:

头信息 描述
Accept 这个头信息指定浏览器或其他客户端可以处理的 MIME 类型。值image/pngimage/jpeg是最常见的两种可能值。
Accept-Charset 这个头信息指定浏览器可以用来显示信息的字符集。例如 ISO-8859-1。
Accept-Encoding 这个头信息指定浏览器知道如何处理的编码类型。值gzipcompress是最常见的两种可能值。
Accept-Language 这个头信息指定客户端的首选语言,在这种情况下,Servlet 会产生多种语言的结果。例如,en、en-us、ru 等。
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 头的方法

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

序号 方法 & 描述
1 Cookie[] getCookies()
返回一个数组,包含客户端发送该请求的所有的 Cookie 对象。
2 Enumeration getAttributeNames()
返回一个枚举,包含提供给该请求可用的属性名称。
3 Enumeration getHeaderNames()
返回一个枚举,包含在该请求中包含的所有的头名。
4 Enumeration getParameterNames()
返回一个 String 对象的枚举,包含在该请求中包含的参数的名称。
5 HttpSession getSession()
返回与该请求关联的当前 session 会话,或者如果请求没有 session 会话,则创建一个。
6 HttpSession getSession(boolean create)
返回与该请求关联的当前 HttpSession,或者如果没有当前会话,且创建是真的,则返回一个新的 session 会话。
7 Locale getLocale()
基于 Accept-Language 头,返回客户端接受内容的首选的区域设置。
8 Object getAttribute(String name)
以对象形式返回已命名属性的值,如果没有给定名称的属性存在,则返回 null。
9 ServletInputStream getInputStream()
使用 ServletInputStream,以二进制数据形式检索请求的主体。
10 String getAuthType()
返回用于保护 Servlet 的身份验证方案的名称,例如,"BASIC" 或 "SSL",如果JSP没有受到保护则返回 null。
11 String getCharacterEncoding()
返回请求主体中使用的字符编码的名称。
12 String getContentType()
返回请求主体的 MIME 类型,如果不知道类型则返回 null。
13 String getContextPath()
返回指示请求上下文的请求 URI 部分。
14 String getHeader(String name)
以字符串形式返回指定的请求头的值。
15 String getMethod()
返回请求的 HTTP 方法的名称,例如,GET、POST 或 PUT。
16 String getParameter(String name)
以字符串形式返回请求参数的值,或者如果参数不存在则返回 null。
17 String getPathInfo()
当请求发出时,返回与客户端发送的 URL 相关的任何额外的路径信息。
18 String getProtocol()
返回请求协议的名称和版本。
19 String getQueryString()
返回包含在路径后的请求 URL 中的查询字符串。
20 String getRemoteAddr()
返回发送请求的客户端的互联网协议(IP)地址。
21 String getRemoteHost()
返回发送请求的客户端的完全限定名称。
22 String getRemoteUser()
如果用户已通过身份验证,则返回发出请求的登录用户,或者如果用户未通过身份验证,则返回 null。
23 String getRequestURI()
从协议名称直到 HTTP 请求的第一行的查询字符串中,返回该请求的 URL 的一部分。
24 String getRequestedSessionId()
返回由客户端指定的 session 会话 ID。
25 String getServletPath()
返回调用 JSP 的请求的 URL 的一部分。
26 String[] getParameterValues(String name)
返回一个字符串对象的数组,包含所有给定的请求参数的值,如果参数不存在则返回 null。
27 boolean isSecure()
返回一个布尔值,指示请求是否使用安全通道,如 HTTPS。
28 int getContentLength()
以字节为单位返回请求主体的长度,并提供输入流,或者如果长度未知则返回 -1。
29 int getIntHeader(String name)
返回指定的请求头的值为一个 int 值。
30 int getServerPort()
返回接收到这个请求的端口号。

HTTP Header 请求实例

下面的实例使用 HttpServletRequest 的getHeaderNames()方法读取 HTTP 头信息。该方法返回一个枚举,包含与当前的 HTTP 请求相关的头信息。

一旦我们有一个枚举,我们可以以标准方式循环枚举,使用hasMoreElements()方法来确定何时停止,使用nextElement()方法来获取每个参数的名称。

// 导入必需的 java 库import java.io.*;import javax.servlet.*;import javax.servlet.http.*;import java.util.*;// 扩展 HttpServlet 类publicclassDisplayHeaderextendsHttpServlet{// 处理 GET 方法请求的方法publicvoid doGet(HttpServletRequest request,HttpServletResponse response)throwsServletException,IOException{// 设置响应内容类型
      response.setContentType("text/html");PrintWriterout= response.getWriter();String title ="HTTP Header 请求实例";String docType ="<!doctype html public \"-//w3c//dtd html 4.0 "+"transitional//en\">\n";out.println(docType +"<html>\n"+"<head><title>"+ title +"</title></head>\n"+"<body bgcolor=\"#f0f0f0\">\n"+"<h1 align=\"center\">"+ title +"</h1>\n"+"<table width=\"100%\" border=\"1\" align=\"center\">\n"+"<tr bgcolor=\"#949494\">\n"+"<th>Header 名称</th><th>Header 值</th>\n"+"</tr>\n");Enumeration headerNames = request.getHeaderNames();while(headerNames.hasMoreElements()){String paramName =(String)headerNames.nextElement();out.print("<tr><td>"+ paramName +"</td>\n");String paramValue = request.getHeader(paramName);out.println("<td> "+ paramValue +"</td></tr>\n");}out.println("</table>\n</body></html>");}// 处理 POST 方法请求的方法publicvoid doPost(HttpServletRequest request,HttpServletResponse response)throwsServletException,IOException{
     doGet(request, response);}}

现在,调用上面的 Servlet 会产生以下结果:

HTTP Header 请求实例

Header 名称 Header 值
accept */*
accept-language en-us
user-agent Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.2; MS-RTC LM 8)
accept-encoding gzip, deflate
host localhost:8080
connection Keep-Alive
cache-control no-cache
 
分享到:
评论

相关推荐

    java Servlet学习笔记

    Servlet是Java编写的一小段代码,它在服务器上运行,可以接收并响应来自Web客户端的HTTP请求,执行相应的业务逻辑,然后生成动态内容回送给客户端。Servlet是Java Web应用程序的核心组成部分。 1.3 什么是Tomcat ...

    java-servlet学习笔记

    在本篇学习笔记中,我们将深入探讨与Java Servlet相关的知识点,包括其工作原理、生命周期、配置以及实际应用。 首先,了解Servlet的工作原理至关重要。当一个HTTP请求到达服务器,Web容器(如Tomcat)会识别请求的...

    林学良Jsp&Servlet学习笔记

    **林学良Jsp&Servlet学习笔记**: 这份学习资料可能是对JSP和Servlet基础知识的系统性讲解,涵盖了上述概念和原理,适合初学者入门。通过阅读这份笔记,你可以了解JSP和Servlet的基本语法、生命周期、以及如何将它们...

    JSP&Servlet学习笔记.pdf

    由于这部分内容是电子书中的学习笔记,电子书的内容并未直接给出,因此只能根据电子书的标题“JSP&Servlet学习笔记”和描述来推测可能涉及的知识点,而没有具体的电子书内容可以分析。如需进一步学习,建议查阅相关...

    [JSP&Servlet;学习笔记(第2版)]

    **JSP(Java Server Pages)与Servlet...这个**[JSP&Servlet学习笔记(第2版)]**会涵盖这些主题,并可能包括示例代码、最佳实践和常见问题解答,帮助读者全面掌握JSP和Servlet的使用技巧,进一步提升Java Web开发能力。

    Java web中servlet学习笔记 核心

    Servlet接收客户端请求,处理这些请求,并返回响应。 2. **Servlet的编写与部署** - 编写Servlet:创建一个Java类并实现Servlet接口,或者继承GenericServlet或HttpServlet。 - 配置Servlet:修改`web.xml`文件,...

    jsp/servlet个人学习笔记

    Servlet 是一个 Java 类,用于扩展服务器的功能,特别是在处理 HTTP 请求和响应上。它接收客户端的请求,处理业务逻辑,然后返回响应。Servlet 需要实现 `javax.servlet.Servlet` 接口,最常用的是 `javax.servlet....

    JSP&Servlet学习笔记(第2版)_打印版

    根据提供的文件信息,标题为“JSP&Servlet学习笔记(第2版)_打印版”,描述指出文档经过空白边裁剪处理以便于打印。虽然提供的部分内文无法直接转化为明确的知识点,但我们可以根据标题和描述推测该文档的主要内容,...

    servlet学习笔记.doc

    Servlet是Java平台中用于开发Web应用程序的核心技术之一,它是一个Java类,遵循Java Servlet API规范,用于处理来自客户端(通常是Web浏览器)的HTTP请求,并生成响应。Servlet的主要优点包括持久性、平台无关性、可...

    Jsp&Servlet学习笔记中的完整范例Gossip

    **Servlet** 是Java的一个接口,提供了一种服务器端处理HTTP请求的方法。Servlet生命周期包括加载、初始化、服务、销毁四个阶段。在Model2架构中,Servlet常作为控制器(Controller),负责接收请求,处理业务逻辑,...

    方立勋servlet学习笔记

    ### 方立勋servlet学习笔记知识点总结 #### 一、Servlet概述与生命周期 - **Service方法**:在Servlet中,`service`方法是核心方法之一,由服务器调用来处理客户端的请求。它根据HTTP请求类型(如GET或POST)调用...

    Servlet学习笔记2

    ### Servlet学习笔记2 在Java Web开发中,Servlet是一种重要的技术,它负责处理客户端的请求并生成响应。本文档将围绕“Servlet学习笔记2”这一主题进行深入探讨,旨在为读者提供一个清晰的学习路径和实践指导。 #...

    Servlet学习笔记3

    ### Servlet学习笔记3:深入理解Servlet与Web应用资源管理 #### 标题解析与扩展知识点 **标题**:“Servlet学习笔记3”表明这是系列学习笔记的一部分,专注于Servlet技术的深入探讨。 **知识点**: 1. **Servlet...

    jsp&servlet;学习笔记_第2版_光盘(看评论酌情下载)

    Servlet是Java EE规范的一部分,它是一个实现了Servlet接口的Java类,用于接收和响应来自客户端的HTTP请求。Servlet生命周期包括加载、初始化、服务、销毁四个阶段。 1. **Servlet生命周期** - **加载与实例化**:...

    动力节点老杜servlet学习笔记.zip

    动力节点老杜的Servlet学习笔记将深入讲解这些知识点,结合实践案例,帮助读者快速掌握Servlet的使用,为构建高效、稳定的Java Web应用打下坚实基础。通过学习这些内容,开发者可以更好地理解和运用Servlet,解决...

    JAVA 韩顺平Servlet笔记

    在J2EE的13种技术中,Servlet是Java平台上的服务器端组件,它能够接收HTTP请求并生成HTTP响应。Servlet通常与Java Server Pages(JSP)一起使用,形成Java Web开发的基础。JSP负责视图层的呈现,而Servlet则处理业务...

    Servlet学习笔记

    Servlet主要用于扩展Java EE规范中的Java服务器功能,如处理客户端请求、执行数据库操作等。 Servlet学习笔记通常涵盖了以下几个方面的知识点: 一、Servlet概述 - B/S架构,即浏览器/服务器架构,是Web应用的典型...

    servlet笔记,servlet的总结

    Servlet是一种运行在服务器端的Java应用程序,专门用于处理客户端的HTTP请求并生成响应。它作为Web应用的重要组成部分,能够提供动态网页服务,实现了服务器端的业务逻辑处理。与客户端小程序Applet相对,Servlet...

    超详细的ServletL学习笔记

    ### 超详细的Servlet学习笔记 #### 一、Servlet简介 **Servlet** 是Java平台上的一个重要的技术标准,主要用于扩展Web服务器的功能。它允许开发者创建能够处理动态内容的应用程序组件,这些组件通常被称为...

Global site tag (gtag.js) - Google Analytics