文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

获取客户端HTTP请求头的方法有哪些

2023-05-31 09:46

关注

本篇文章为大家展示了获取客户端HTTP请求头的方法有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

获取客户端发来的HTTP请求头中的内容可以使用如下方法:

getDateHeader()

getHeader(String)

getHeaderNames()

getHeaders(String)

getIntHeader(String);

这些方法在各个特定的情况下能有不同的用途,体现出获取客户端请求头方式的多样性。

如通过getHeader(String)可以获取指定请求头的数据内容:

String connectionState = request.getHeader("Connection");System.out.println(connectionState);

获取客户端HTTP请求头的方法有哪些

而通过getHeaderNames()可以获取发送的所有请求头,例:

Enumeration e = request.getHeaderNames(); while(e.hasMoreElements()) {    String headerName = (String) e.nextElement();    String headerValue = request.getHeader(headerName);    System.out.println(headerName+":"+headerValue); }

获取客户端HTTP请求头的方法有哪些

而通过getHeaders(String)方法获取的是某个同名头的内容,适用于当某个请求头有多个内容时使用。

介绍完获取请求行和请求头,下面介绍获取请求数据中内容的方法:

getPatameter(String)

getParameterNames()

getParameterValues(String)

getParameterMap()

和getInputStream()

使用getPatameter(String)方式可以获取请求数据中指定的数据值

代码如下:

String value = request.getParameter("username");System.out.println(value);

常可以在浏览器地址URL后直接写入参数数据来模拟GET方式:

获取客户端HTTP请求头的方法有哪些

最终在控制台得到:

获取客户端HTTP请求头的方法有哪些

通过getParameterNames()可以获取多个参数:

Enumeration e = request.getParameterNames(); while(e.hasMoreElements()) {  String paramName = (String)e.nextElement();  String paramValue = request.getParameter(paramName);  System.out.println(paramName+":"+paramValue); }

获取客户端HTTP请求头的方法有哪些

获取客户端HTTP请求头的方法有哪些

使用getParameterValues(String)有助于获取当请求数据参数名有相同时的情况:

比如下面这种情况:

获取客户端HTTP请求头的方法有哪些

代码:

String[] values = request.getParameterValues("username");  for(int i=0;i<values.length;i++) {   System.out.println(values[i]);  }

在控制台观察:

  获取客户端HTTP请求头的方法有哪些

(注意:像getPatameter(String)、getParameterValues(String)等等这样的方法,都要小心空指针异常,可能的原因在于并没有这样的参数,还有一种就是在URL后没有任何参数传入,所以要特别注意,应该加入健壮性判断。这也是编程过程中会碰到传入参数都应该注意的问题。)

使用getParameterMap()可以获取以请求数据中参数和参数值作为的键值对的Map集合。这样我们就能同时获取键值对。假设有如下情况:

获取客户端HTTP请求头的方法有哪些

代码为:

Map<String,String[]> map = request.getParameterMap();  for(Map.Entry<String, String[]> entry :map.entrySet()) {  String paramName = entry.getKey();  for(int i=0;i<entry.getValue().length;i++){   String paramValue = entry.getValue()[i];   System.out.println(paramName+":"+paramValue);  } }

如果请求数据参数为:

获取客户端HTTP请求头的方法有哪些

那么在控制台上看到的则是:

获取客户端HTTP请求头的方法有哪些

以上说明了常用的获取数据的方式,还有一种属于request响应对象的getInutStream方法,而这个方法一般只用于大容量的数据获取,比如文件上传,将在之后的篇章中介绍。

下面介绍其他常用方法

通过getRequestURI方法和getRequestURL可以获取http请求服务器资源的URI和URL,关于URI和URL的区别可以通过获取后的字符串来查看:

代码:

String fileURI = request.getRequestURI();System.out.println("URI: "+fileURI);StringBuffer fileURL = request.getRequestURL();System.out.println("URL: "+fileURL.toString());

访问该Servlet,得到:

获取客户端HTTP请求头的方法有哪些

可以看出URI只包括在服务器中的web应用名和资源对外访问路径(虚拟目录)。

通过getQueryString()方法可以获取URL上由GET方式带来的参数:

若代码为:

System.out.println(request.getQueryString());

而我在访问这个Servlet的URL上添加:“?username=fjdingsd&password=123”:

获取客户端HTTP请求头的方法有哪些

那么当访问这个Servlet之后,在MyEclipse的控制台将看到:

获取客户端HTTP请求头的方法有哪些

通过getRemoteAddr方法可以获取访问该web应用的客户端IP地址。

代码:

System.out.println(request.getRemoteAddr());

而通过getRemoteHost方法获取的是访问该web应用的客户端主机名,如果没有在DNS服务器上注册的则是获取IP地址。这里说的主机名是指在DNS上注册的,比如www.baidu.com,那么通过该方法如果从该主机上来访问,则获取到的是:baidu.com。

上述内容就是获取客户端HTTP请求头的方法有哪些,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯