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. Java基本概念:多态

    一.简介 描述: 多态性是面向对象编程中的一个重要特性,主要是用来实现动态联编的.换句话说,就是程序的最终状态只有在执行过程中才被决定,而非在编译期间就决定了.这对于大型系统来说能提高系统的灵活性和扩 ...

  2. Redis缓存中的常见问题

    缓存穿透:是指查询一个Redis和数据库中都不存在的数据. 问题:查询一个Redis和数据库中都不存在的数据,大量请求去访问数据库,导致数据库宕机. 解决办法: 1.根据id查询,如果id是自增的,将 ...

  3. 后端程序员之路 55、go redis

    redigo有点像hiredis,只提供了最基本的连接和执行命令接口. 找到个不错的redis库: https://github.com/go-redis/redis func ExampleNewC ...

  4. Pycharm模块导入失败,带有红色波浪线。

    在Pycharm中打开一个python开源工程,结果在导入库的部分一堆红色波浪线显示错误,并且按住Ctrl + 鼠标左击无法跳转到指定类或方法,如下图所示. 解决方法: (1)首先忽略掉这些报错,先运 ...

  5. POJ-1062(原始dijiksra算法+思维)

    昂贵的婚礼 POJ-1062 这道题目一开始看的时候难以理解,但是仔细想,还是可以和最短路联系的,我觉得类似于硬币交换等问题. 以下需要注意几个点,第一就是因为题目规定如何和超出了等级限制的人交易,则 ...

  6. POJ-1511(Dijkstra+优先队列优化+向前星)

    Invitation Cards POJ-1511 从这道题我还是发现了很多的问题,首先就是快速输入输出,这里的ios::---这一行必须先放在main函数第一行,也就是输入最开始的前面,否则系统疯狂 ...

  7. c# float类型和double类型相乘出现精度丢失

    c# float类型和double类型相乘出现精度丢失 double db = 4.0; double db2 = 1.3; float f = 1.3F; float f2 = 4.0F; Deci ...

  8. 记离线部署docker,以及docker下部署zabbix

    一.离线安装docker 下载地址:https://download.docker.com/linux/static/stable/x86_64/ 上传软件并解压 [root@localhost op ...

  9. 《进击吧!Blazor!》系列入门教程 第一章 6.安全

    <进击吧!Blazor!>是本人与张善友老师合作的Blazor零基础入门教程视频,此教程能让一个从未接触过Blazor的程序员掌握开发Blazor应用的能力. 视频地址:https://s ...

  10. jdk 集合大家族之Collection

    jdk 集合大家族之Collection 前言:   此处的集合指的是java集合框架中的实现了Collection接口相关的类.所以主要为List Set 和 Queue 其他章节会专门介绍Map相 ...