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());
}

JAVAEE_Servlet_14_HttpServletRequest接口以及常用方法(一)的更多相关文章

  1. java中集合类中Collection接口中的Map接口的常用方法熟悉

    1:Map接口提供了将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值.Map接口中同样提供了集合的常用方法. 2:由于Map集合中的元素是通过key,value,进行存储的,要 ...

  2. java中集合类中Collection接口中的Set接口的常用方法熟悉

    1:Set集合由Set接口和Set接口的实现类组成,Set接口继承了Collection接口,因为包含Collection接口的所有方法. 2:由于Set接口中不允许存在重复值,因此可以使用Set集合 ...

  3. java中集合类中Collection接口中的List接口的常用方法熟悉

    1:集合类,在java语言中的java.util包提供了一些集合类,这些集合类又被称作容器. 2:区别集合类和数组.(1)数组的长度是固定的,集合的长度是可变的.(2)数组是用来存放基本数据类型的,集 ...

  4. 集合概述及Collection接口的常用方法

    java集合像是一种容器,可以动态的把多个对象的引用放到容器中 java的集合类可以用于存储数量不等的多个对象,还可以用于保存具有映射关系的关联数组 package com.aff.coll; imp ...

  5. Collection接口的常用方法

    [添加功能] boolean add(Object obj); //添加一个元素. boolean addAll(Collection c); //添加一个集合的元素(在后面追加). [删除功能] v ...

  6. Python 接口自动化常用方法封装

    #!/usr/bin/env python # -*- coding:utf-8 -*- # ************************************* # @Time : 2019/ ...

  7. Java集合框架的四个接口

    接口 [四个接口  collection  list  set  map 的区别] collection 存储不唯一的无序的数据 list 存储有序的不唯一的数据 set   存储无序的唯一的数据 m ...

  8. Java集合框架之四大接口、常用实现类

    Java集合框架 <Java集合框架的四大接口> Collection:存储无序的.不唯一的数据:其下有List和Set两大接口. List:存储有序的.不唯一的数据: Set:存储无序的 ...

  9. java内部类、接口、集合框架、泛型、工具类、实现类

    .t1 { background-color: #ff8080; width: 1100px; height: 40px } 一.内部类 1.成员内部类. (1)成员内部类的实例化: 外部类名.内部类 ...

随机推荐

  1. 1.go语言入门----Helloworld与包引用

    HelloWorld与包引用 学习一门语言的惯例都是从helloworld开始,go语言也不例外 在gopath下的src中创建一个helloworld目录,创建main.go文件 package m ...

  2. CentOS7集群环境Elastic配置

    CentOS7集群环境Elastic配置 (首先去官网下载elasticsearch的source code并解压到/usr/soft目录下) (以下默认root账户) 1.更改配置文件 文件路径:/ ...

  3. COM技术中的VARIANT and VARIANTARG

    VARIANT and VARIANTARG Use VARIANTARG to describe arguments passed within DISPPARAMS, and VARIANT to ...

  4. Java 队列同步器 AQS

    本文部分摘自<Java 并发编程的艺术> 概述 队列同步器 AbstractQueuedSynchronize(以下简称同步器),是用来构建锁(Lock)或者其他同步组件(JUC 并发包) ...

  5. css 超过一行省略号

    //超过一行省略号 overflow: hidden; white-space: nowrap; text-overflow: ellipsis; //超过两行省略号 overflow: hidden ...

  6. MySQL之九---分布式架构(Mycat/DBLE)

    MyCAT基础架构图 双主双从结构 MyCAT基础架构准备 准备环境  环境准备: 两台虚拟机 db01 db02 每台创建四个mysql实例:3307 3308 3309 3310 删除历史环境 p ...

  7. 关于 C++ 中的强制转换 - 基础篇

    引言 假设有基类 A,包含了虚函数 func1,以及有派生类 B,继承于类 A,派生类 B 中实现了函数 func1.此时可以用 A 类型的指针指向 B 类型的对象,并用 A 类型的指针调用 B 类型 ...

  8. 追溯 MySQL Statement Cancellation Timer

    原文 1. 背景 在 jstack 的内容中可以看到以下的 MySQL Statement Cancellation Timer 守护线程, 在业务高峰期的时候会出现大量的这类守护线程, 由此追溯该线 ...

  9. ijkplayer接入使用

    1.ijkplayer简介 ijkplayer是一个基于FFmpeg的轻量级Android/iOS视频播放器.FFmpeg的是全球领先的多媒体框架,能够解码,编码, 转码,复用,解复用,流,过滤器和播 ...

  10. Go语言|类型转换和类型别名

    类型转换 同类型之间的转换 Go语言中只有强制类型转换,没有隐式类型转换.该语法只能在两个类型之间支持相互转换的时候使用. import "fmt" func main() { v ...