zoukankan      html  css  js  c++  java
  • servlet(1)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);

     }

     

     }
    ----------------------


    二、获得客户机请求头

     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 {
         String value = request.getParameter("name");
         System.out .println(value);
         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);
     }
     }
     
     
     
     
     
     
     
    下一集预告(response)
    -----------------------------------------------------------------------------
     
     
     
    开源学习,互动进步
  • 相关阅读:
    hdu 1199 Color the Ball 离散线段树
    poj 2623 Sequence Median 堆的灵活运用
    hdu 2251 Dungeon Master bfs
    HDU 1166 敌兵布阵 线段树
    UVALive 4426 Blast the Enemy! 计算几何求重心
    UVALive 4425 Another Brick in the Wall 暴力
    UVALive 4423 String LD 暴力
    UVALive 4872 Underground Cables 最小生成树
    UVALive 4870 Roller Coaster 01背包
    UVALive 4869 Profits DP
  • 原文地址:https://www.cnblogs.com/L0VEGP/p/5043633.html
Copyright © 2011-2022 走看看