源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

HttpServletRequest对象简介_动力节点Java学院整理

  • 时间:2021-01-27 07:41 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:HttpServletRequest对象简介_动力节点Java学院整理
通过getMethod方法获得的是客户端访问该web应用的Http请求方式。 代码和结果如下:
String requestMethod = request.getMethod();
System.out.println(requestMethod); 
[img]http://files.jb51.net/file_images/article/201707/2017072510211010.png[/img] 想获取客户端发来的HTTP请求头中的内容可以使用如下方法: getDateHeader() getHeader(String) getHeaderNames() getHeaders(String) getIntHeader(String); 这些方法在各个特定的情况下能有不同的用途,体现出获取客户端请求头方式的多样性。 如通过getHeader(String)可以获取指定请求头的数据内容:
String connectionState = request.getHeader("Connection");
System.out.println(connectionState);
[img]http://files.jb51.net/file_images/article/201707/2017072510211011.png[/img] 而通过getHeaderNames()可以获取发送的所有请求头,例:
Enumeration e = request.getHeaderNames();
 while(e.hasMoreElements()) {
    String headerName = (String) e.nextElement();
    String headerValue = request.getHeader(headerName);
    System.out.println(headerName+":"+headerValue);
 }
[img]http://files.jb51.net/file_images/article/201707/2017072510211112.png[/img] 而通过getHeaders(String)方法获取的是某个同名头的内容,适用于当某个请求头有多个内容时使用。 介绍完获取请求行和请求头,下面介绍获取请求数据中内容的方法: getPatameter(String) getParameterNames() getParameterValues(String) getParameterMap() 和getInputStream() 使用getPatameter(String)方式可以获取请求数据中指定的数据值 代码如下:
String value = request.getParameter("username");
System.out.println(value);
常可以在浏览器地址URL后直接写入参数数据来模拟GET方式: [img]http://files.jb51.net/file_images/article/201707/2017072510211213.png[/img] 最终在控制台得到: [img]http://files.jb51.net/file_images/article/201707/2017072510211214.png[/img] 通过getParameterNames()可以获取多个参数:
Enumeration e = request.getParameterNames();
 while(e.hasMoreElements()) {
  String paramName = (String)e.nextElement();
  String paramValue = request.getParameter(paramName);
  System.out.println(paramName+":"+paramValue);
 }
[img]http://files.jb51.net/file_images/article/201707/2017072510211213.png[/img] [img]http://files.jb51.net/file_images/article/201707/2017072510211215.png[/img] 使用getParameterValues(String)有助于获取当请求数据参数名有相同时的情况: 比如下面这种情况: [img]http://files.jb51.net/file_images/article/201707/2017072510211316.png[/img] 代码:
String[] values = request.getParameterValues("username");
  for(int i=0;i<values.length;i++) {
   System.out.println(values[i]);
  }
在控制台观察:   [img]http://files.jb51.net/file_images/article/201707/2017072510211417.png[/img] (注意:像getPatameter(String)、getParameterValues(String)等等这样的方法,都要小心空指针异常,可能的原因在于并没有这样的参数,还有一种就是在URL后没有任何参数传入,所以要特别注意,应该加入健壮性判断。这也是编程过程中会碰到传入参数都应该注意的问题。) 使用getParameterMap()可以获取以请求数据中参数和参数值作为的键值对的Map集合。这样我们就能同时获取键值对。假设有如下情况: [img]http://files.jb51.net/file_images/article/201707/2017072510211418.png[/img] 代码为:
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);
  }
 }
如果请求数据参数为: [img]http://files.jb51.net/file_images/article/201707/2017072510211419.png[/img] 那么在控制台上看到的则是: [img]http://files.jb51.net/file_images/article/201707/2017072510211420.png[/img] 以上说明了常用的获取数据的方式,还有一种属于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,得到: [img]http://files.jb51.net/file_images/article/201707/2017072510211421.png[/img] 可以看出URI只包括在服务器中的web应用名和资源对外访问路径(虚拟目录)。 通过getQueryString()方法可以获取URL上由GET方式带来的参数: 若代码为:
System.out.println(request.getQueryString());
而我在访问这个Servlet的URL上添加:“?username=fjdingsd&password=123”: [img]http://files.jb51.net/file_images/article/201707/2017072510211422.png[/img] 那么当访问这个Servlet之后,在MyEclipse的控制台将看到: [img]http://files.jb51.net/file_images/article/201707/2017072510211423.png[/img] 通过getRemoteAddr方法可以获取访问该web应用的客户端IP地址。 代码:
System.out.println(request.getRemoteAddr());
而通过getRemoteHost方法获取的是访问该web应用的客户端主机名,如果没有在DNS服务器上注册的则是获取IP地址。这里说的主机名是指在DNS上注册的,比如www.baidu.com,那么通过该方法如果从该主机上来访问,则获取到的是:baidu.com。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程素材网。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部