HttpServletRequest接口

* javax.servlet.http.HttpServletRequest 接口

* 继承关系 HttpServletRequest---继承---> ServletRequest

* HttpServletRequest定义了 doGet() 和 doPost方法中的一个参数  public void doPost(HttpServletRequest request, HttpServletResponse response)

* HttpServletRequest 接口的实现类是WebApp容器负责实现的,例如TomCat服务器,程序员只需要面向接口掉用方法即可

* HttpServletRequest中封装了什么信息呢? javax.servlet.http.HttpServletResquest 中封装了HTTP请求的全部内容
   
  - 包括:
           
       1.请求方式 

       2.URI

       3.协议版本号

       4.表单提交过来的传给后台的数据 (用户名,密码等等)

* HttpServletResquest 变量名一般叫做 request 表示请求。

* 一个HttpServletResquest对象 代表前台的一次请求,一次请求对应一个resquest对象,100个请求代表100个resquest对象,所以 request的生命周期是短暂的。

* 什么是一次请求?   可以这样理解一次请求,我们在网页上点击超链接,到最终网页加载完成,就是一次请求。一次请求那么就会创建一个HttpServletResquest,100个请求就会创建100个HttpServletResquest对象.

* 表单数据是怎么提交的?
       
  - POST请求数据在请求体中提交 。
       
       > 数据格式例如: username=admin&password=123&sex=male&interest=music
          
       > 表单提交的数据会自动封装到request对象中,在request对象中Map集合存储这些数据 ,实质上数据结构是Map<String ,String[]>

HttpServletRequest中常用的方法

* 第一类:获取form表单提交的数据

       String        getParameter(String name)          通过key获取value这个一维数组的首元素

       String[]      getParameterValues(String name)    通过key获取value 返回是一个String数组

       Map           getParameterMap()                  获取整个map集合

       Enumeration   getParameterNames()                获取这个Map集合的所有key


* 获取form表单数据(用户在form表单中提交的数据会自动封装在HttpServletRequest中,实质上是以String类型的一维数组的方式存储的,key是数组名,填写的值是数组元素)

   - 获取方式 1:   String    getParameter(String name)    通过 key 获取一个对应的 value值,也就是获取到一维数组的首元素值,该方法只能获取到首元素



          String name= requset.getParameter("username");

          String password= requset.getParameter("password");

          String email=requset.getParameter("Email");

          String hobby= requset.getParameter("hobby");   hobby可以有多个值,但是如果用该方法获取,只能获取到第一个值。




  - 获取方式 2   String[]  getParameterValues(String name)  通过key获取该key值所对应的所有value值, 返回值是一个String类型的数组。



          String[] hobbies=requset.getParameterValues("favorite");

          for (String hobby:hobbies) {
              System.out.println(hobby);
          }





  - 获取方式 3:  Map    getParameterMap()     获取整个map集合


       // 获取整个Map
        Map<String,String[]> userInfo=requset.getParameterMap();

       // 获取Map集合中的key部分,一个set集合
        Set<String> names=userInfo.keySet();

       //创建迭代器
        Iterator iterator=names.iterator();
      
      // 遍历该Set集合
        while(iterator.hasNext()){
            // 获取集合中的每一个元素(key)
            String name=(String)iterator.next();
            System.out.print(name+" ");
     
            // 通过获取的key获取Map集合中对应的value
            String[] values=userInfo.get(name);
            for (String value:values) {
                System.out.println(value);
            }
        }





 -  获取方式 4:  Enumeration   getParameterNames()   获取这个Map集合的所有key


            // 获取所有的name(key)
             Enumeration names=requset.getParameterNames();

            //遍历该集合
            while(names.hasMoreElements()){
                System.out.println(names.nextElement());
            }