java中request常用方法小结

 更新时间:2014年10月26日 10:22:20   投稿:hebedich  
这篇文章主要介绍了java中request常用方法小结,需要的朋友可以参考下

      HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户这些信息。

request常用方法

一、获取客户机环境信息常见方法

  1.getRequestURL方法返回客户端发出请求时的完整URL。

  2.getRequestURI方法返回请求行中的资源名部分。

  3.getQueryString方法返回请求行的参数部分。

  4.getRemoteAddr方法返回发出请求的客户机的IP地址。

  5.getRemoteHost方法返回发出请求的客户机的完整主机名。

  6.getRemotePort方法返回客户机所使用的网络端口号。

  7.getLocalAddr方法返回WEB服务器的IP地址。

  8.getLocalName方法返回WEB服务器的主机名。

  9.getMethod得到客户机请求方式。

复制代码 代码如下:

 package com.yyz.request;
 
 import java.io.IOException;
 import java.io.OutputStream;
 
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 public class RequestDemo extends HttpServlet {
 
     public void doGet(HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
         /**
          * URL是URI的子集。
          * URI用来标识一个资源。
          * URL用来标识互联网上的一个资源。
          */
         System.out.println(request.getRequestURL());//得到请求URL地址
         System.out.println(request.getRequestURI());//得到请求的资源
         System.out.println(request.getQueryString());
         System.out.println(request.getRemoteAddr());//得到来访者IP
         System.out.println(request.getRemoteHost());
         //由于没有在dns上注册所以打印结果还是127.0.0.1,如果是百度访问这个程序,则打印www.baidu.com
         System.out.println(request.getRemotePort());//得到请求的资源
         System.out.println(request.getMethod());//得到请求的资源
 }
 
     public void doPost(HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
         doGet(request,response);
 }
 
 }

在浏览器地址栏输入:http://localhost:8080/test/servlet/RequestDemo后后台输出入下图:


二、获得客户机请求头

 1.getHeader(String name)方法

 2.getHeaders(String name)方法

 3.getHeaderNames()方法

复制代码 代码如下:

 package com.yyz.request;
 
 import java.io.IOException;
 import java.util.Enumeration;
 
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 //获取请求头
 public class RequestDemo extends HttpServlet {
 
     public void doGet(HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
         String head = request.getHeader("Accept-Encoding");
         //有些浏览器不支持压缩数据
         if(head.contains("gzip")){
             //输出压缩数据
         }else{
             //输出不压缩数据
         }
         //获取指定名称的头的所有值
         Enumeration e = request.getHeaders("Accept-Encoding");
         while(e.hasMoreElements()){
             String value = (String ) e.nextElement();
             System.out.println(value);
         }
         System.out.println("------------------------");
         //获取所有的头和值
         e = request.getHeaderNames();
         while(e.hasMoreElements()){
         String name = (String)e.nextElement();
         String     value = request.getHeader(name);
         System.out.println(name+"="+value);
         }
 }
 
     public void doPost(HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
         doGet(request,response);
 }
 
 }

在浏览器访问该程序,后台输出如下:

三、获得客户机请求参数(客户端提交的数据):

 1.getParameter(name)方法

 2.getParameterValues(String name)方法

 3.getParameterNames方法

 4.getParameterMap方法,做框架时大量使用

package com.yyz.request;
 import java.io.IOException;
 import java.util.Enumeration;
 import java.util.Map;
 import java.util.Map.Entry;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 //获取请求数据
 public class RequestDemo extends HttpServlet {
   public void doGet(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException {
     //http://localhost:8080/test/servlet/RequestDemo?name=yyz
     String value = request.getParameter("name");
     System.out .println(value);
     //http://localhost:8080/test/servlet/RequestDemo?like=sing&like=dance
     String likes[] = request.getParameterValues("like");
     if(likes!=null){
       for(String like : likes){
         System.out.println(like);
       }
     }
     //下面是这种遍历的专业写法,获取数组数据的方式(可避免空指针异常)
     for(int i=0;likes!=null&&i<likes.length;i++){
       System.out.println(likes[i]);
     }
     //获取所有名称,并根据名称获取值
     Enumeration e = request.getParameterNames();
     while(e.hasMoreElements()){
       String name = (String) e.nextElement();
       value = request.getParameter(name);
       System.out.println(name+"="+value);
     }
     System.out.println("----------------------");
     //得到request对象中用来封装数据的Map集合
     Map<String,String[]> map = request.getParameterMap();
     for(Entry<String, String[]> me : map.entrySet()){
       String name = me.getKey();
       String [] v = me.getValue();
       System.out.println(name+"="+v[0]);
     }
 } 
   public void doPost(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException {
     doGet(request,response);
 }
 }

相关文章

  • 详解Spring Cloud Feign 熔断配置的一些小坑

    详解Spring Cloud Feign 熔断配置的一些小坑

    这篇文章主要介绍了详解Spring Cloud Feign 熔断配置的一些小坑,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • SpringBoot整合GitLab-CI实现持续集成的过程

    SpringBoot整合GitLab-CI实现持续集成的过程

    这篇文章主要介绍了SpringBoot整合GitLab-CI实现持续集成,本文详细讲述了 GitLab-CI 持续集成的安装、部署、以及配置,需要的朋友可以参考下
    2022-12-12
  • 解决IDEA 2022 Translation 翻译文档失败: 未知错误的问题

    解决IDEA 2022 Translation 翻译文档失败: 未知错误的问题

    这篇文章主要介绍了IDEA 2022 Translation 翻译文档失败: 未知错误,本文较详细的给大家介绍了IDEA 2022 Translation未知错误翻译文档失败的解决方法,需要的朋友可以参考下
    2022-04-04
  • Java实现网络数据提取所需知识点

    Java实现网络数据提取所需知识点

    这篇文章主要介绍了Java实现网络数据提取所需知识点,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • SpringBoot详细讲解通过自定义classloader加密保护class文件

    SpringBoot详细讲解通过自定义classloader加密保护class文件

    这篇文章主要介绍了SpringBoot通过自定义classloader加密class文件,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • springboot如何配置允许跨域访问

    springboot如何配置允许跨域访问

    这篇文章主要介绍了springboot如何配置允许跨域访问,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • 关于spring.factories失效原因分析及解决

    关于spring.factories失效原因分析及解决

    这篇文章主要介绍了关于spring.factories失效原因分析及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • java中&和&&的基本区别与常见的误用

    java中&和&&的基本区别与常见的误用

    & 和&&是Java中用于逻辑运算的两个运算符,&是按位与和逻辑与兼用的运算符,而&&仅用于逻辑与运算,并具有短路特性,这篇文章主要介绍了java中&和&&的基本区别与常见的误用,需要的朋友可以参考下
    2025-02-02
  • springboot新建项目jdk只有17/21,无法选中1.8解决办法

    springboot新建项目jdk只有17/21,无法选中1.8解决办法

    最近博主也有创建springboot项目,发现了IntelliJ IDEA在通过Spring Initilizer初始化项目的时候已经没有java8版本的选项了,这里给大家总结下,这篇文章主要给大家介绍了springboot新建项目jdk只有17/21,无法选中1.8的解决办法,需要的朋友可以参考下
    2023-12-12
  • SpringBoot集成RocketMQ实现消息发送的三种方式

    SpringBoot集成RocketMQ实现消息发送的三种方式

    RocketMQ 支持3 种消息发送方式: 同步 (sync)、异步(async)、单向(oneway),本文就将给大家介绍一下SpringBoot集成RocketMQ实现消息发送的三种方式文中有详细的代码示例,需要的朋友可以参考下
    2023-09-09

最新评论