Servlet-客户端请求

  • 读取HTTP标头的方法
  • HTTP标头请求示例

当浏览器请求网页时,它会将大量信息发送到Web服务器,该信息无法直接读取,因为该信息作为HTTP请求标头的一部分传播。
以下是来自浏览器端的重要标头信息,您将在网络编程中经常使用:

序号 标头和说明
1 Accept:此标头指定浏览器或其他客户端可以处理的MIME类型。值一般为image/pngimage/jpeg两种情况。
2 Accept-Charset:此标头指定浏览器可用于显示信息的字符集。例如UTF-8。
3 Accept-Encoding:此标头指定浏览器知道如何处理的编码类型。值一般为gzipcompress两种情况。
4 Accept-Language:如果servlet可以使用多种语言生成结果,则此标头指定客户机的首选语言。例如en,en-us,ru等
5 Authorization:客户端使用此标头在访问受密码保护的网页时标识自己。
6 Connection:此标头指示客户端是否可以处理持久HTTP连接。持久连接允许客户端或其他浏览器通过单个请求检索多个文件。保持活动的值表示应使用持久连接。
7 Content-Length:此标头仅适用于POST请求,并以字节为单位给出POST数据的大小。
8 Cookie:此标头将cookie返回到先前已将其发送到浏览器的服务器。
9 Host:此标头指定原始URL中给定的主机和端口。
10 If-Modified-Since:此标头表示仅在指定日期之后更改页面,客户端才需要该页面。服务器发送代码304,如果没有可用的新结果,则表示未修改的标头。
11 If-Unmodified-Since:此标头与If-Modified-Since相反;它指定仅当文档早于指定日期时,操作才能成功。
12 Referer:此标头指示引荐网页的URL。例如,如果您在Web页1上并单击指向Web页2的链接,则当浏览器请求Web页2时,Referrer标头中将包含Web页1的URL。
13 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,则创建一个session。
6 HttpSession getSession(boolean create):返回与此请求关联的当前的HttpSession;如果没有当前的session且create的值为true,则返回一个新的session。
7 Locale getLocale():根据Accept-Language标头返回客户端将在其中接受内容的首选语言环境。
8 Object getAttribute(String name):将命名属性的值作为Object返回;如果不存在给定名称的属性,则返回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():返回发送请求的客户端的Internet协议(IP)地址。
21 String getRemoteHost():返回发送请求的客户端的标准名称
22 String getRemoteUser():如果用户已通过身份验证,则返回发出此请求的用户的登录名;如果用户未通过身份验证,则返回null。
23 String getRequestURI():返回此请求的URL的一部分,从协议名称到HTTP请求第一行中的查询字符串。
24 String getRequestedSessionId():返回客户端指定的会话ID。
25 String getServletPath():返回此请求的URL中调用JSP的部分。
26 String[] getParameterValues(String name):返回一个String对象数组,其中包含给定请求参数具有的所有值;如果该参数不存在,则返回null。
27 boolean isSecure():返回一个布尔值,该布尔值指示是否使用安全通道(例如HTTPS)发出此请求。
28 int getContentLength():返回请求主体的长度(以字节为单位),并由输入流提供;如果未知,则返回-1。
29 int getIntHeader(String name):以int形式返回指定请求标头的值。
30 int getServerPort():返回接收到该请求的端口号

HTTP标头请求示例

以下是使用HttpServletRequest的getHeaderNames()方法读取HTTP标头信息的示例。此方法返回一个Enumeration,其中包含与当前HTTP请求关联的标头信息。

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

// Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;// Extend HttpServlet class
public class DisplayHeader extends HttpServlet {// Method to handle GET method request.public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// Set response Headerresponse.setHeader("contentType","text/html;charset=UTF-8");response.setContentType("text/html");response.setCharacterEncoding("UTF-8");PrintWriter out = response.getWriter();String title = "HTTP标头请求示例";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 Name</th><th>Header Value(s)</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>");}// Method to handle POST method request.public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}
}


上一篇:Servlet-表单数据
下一篇:Servlet-Http状态代码

Servlet-客户端请求相关推荐

  1. JSP 客户端请求概述

    当浏览器请求一个网页时,它会向网络服务器发送一系列不能被直接读取的信息,因为这些信息是作为HTTP信息头的一部分来传送的.您可以查阅HTTP协议来获得更多的信息. 下表列出了浏览器端信息头的一些重要内 ...

  2. java httpinvoker漏洞_Spring HttpInvoker 服务端安全验证的和客户端请求配置

    1.服务端 服务Java接口 package service; public interface TestService { int add(int i,int j); } 服务的Java实现 pac ...

  3. JAVA记录-Servlet RequestDispatcher请求转发

    RequestDispatcher接口提供将请求转发送到另一个资源的功能,它可能是html,servlet或jsp等. 此接口也可用于包括另一资源的内容.它是servlet协作的一种方式. 在Requ ...

  4. Java web—Servlet的请求与响应

    前言:         在家上网课快上疯了╰(‵□′)╯,上课连课本都没有,太难受了呜呜呜~, 只能在blog里记录一下这段时间的学习的内容,太难了- 一.servlet概述: 运行在WEB服务器端的 ...

  5. Java Web学习(六)HttpServletRequest(客户端请求)

    一.定义 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有 ...

  6. 24.JSP 客户端请求

    JSP 客户端请求 当浏览器请求一个网页时,它会向网络服务器发送一系列不能被直接读取的信息,因为这些信息是作为HTTP信息头的一部分来传送的.您可以查阅HTTP协议来获得更多的信息. 下表列出了浏览器 ...

  7. javaweb项目得执行过程及servlet得请求(Httprequest)和响应(Httpresponse)

    javaweb项目的执行过程及servlet核心要点 1.javaWeb应用的结构 ​ 1.Java Resources :java代码 ​ 2.WebContent:资源文件 如:html css ...

  8. Servlet之请求包含与会话技术获取表单信息(Cookie)

    request获取form表单中提交的数据 用ServletContext获取 ServletContext context = this.getServletContext(); String us ...

  9. 通过request对象获取客户端请求信息

    一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象 ...

  10. SCCM 2007系列教程之二客户端安装之客户端请求安装

    一.客户端安装方法:     客户端请求安装.软件更新点安装. 组策略安装.登录脚本安装.手动安装.升级安装.客户端映像 客户端成功安装客户端之后,它将尝试分配到某个站点,并找到该站点的默认管理点以下 ...

最新文章

  1. 数组越界怎么判断_算法连载之求解两个有序数组的中位数
  2. php json注释,【部分解决】Json中添加注释
  3. inline-block空白间隙
  4. 数组字典_VBA数组与字典解决方案第34讲:数组的传递
  5. 怎么让模糊的数字变清楚_一键模糊图像变清晰,好家伙!这款神器插件你值得拥有...
  6. 给自己的网站添加复制提示代码
  7. Layer1隐私项目BeamX DAO完成200万美元融资,Collider Ventures、AirSpeed18等机构参投
  8. 14英寸电脑长宽多少_华为MateBook 14 2020款 14英寸轻薄笔记本王者升级
  9. Ubuntu18.04报错:bin/bash: prebuilts/misc/linux-x86/bison/bison: cannot execute binary file解决
  10. 查看局域网内的所有IP地址
  11. python判断工作日,节假日
  12. 4G模块Air720系列 android RIL驱动源码发布
  13. centos安装git时出错提示make[1]: *** [perl.mak] Error 2
  14. Linux故障——开机显示!!!failed to loadSELinux policy,freezing...
  15. android出生日期计算年龄,Java 通过生日计算宝宝多大了,输出我27岁7月零9天
  16. 关于右键自定义 vue-contextmenu
  17. Android Manifest
  18. myeclipse-添加jar包
  19. 程序员为什么都容易“喜当爹”
  20. 面试英语情景对话,求职者必看!

热门文章

  1. 微信小程序之云菜谱的设计
  2. JAVA读取xls文件和xlsx文件
  3. 2006 年 下 半年 信息系统项目管理师 下午试卷 I
  4. linux切换用户非常慢
  5. Kendall's tau
  6. c语言strtol函数用法,strtol_字符串 | Strings_C_参考手册_非常教程
  7. CocoaPods原理
  8. LeetCode算法思想之滑动窗口
  9. java中自定义日期类_java日期操作自定义类
  10. 报表控件FastReport与StimulSoft功能对比