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. 不可不知的 JVM 预热

    一.JVM 架构基础 JVM 进程启动时,ClassLoader 会将需要的所有类加载到内存,主要分为以下三步: Bootstrap Class: 核心类库,由 "Bootstrap Cla ...

  2. yum安装MySQL8 - Centos8

    官方地址:https://dev.mysql.com/doc/refman/8.0/en/linux-installation-yum-repo.html 参考博客地址:https://www.jia ...

  3. 第48天学习打卡(HTML 行内元素和块元素 列表 表格 视频和音频 页面结构分析 iframe内联框架 表单语法 )

    行内元素和块元素 块元素 ​ 无论内容多少,该元素独占一行 ​ (p.h1-h6) 行内元素 ​ 内容撑开宽度,左右都是行内元素的可以排在一行 ​ (a.strong.em...) 列表 什么是列表 ...

  4. .NET测试--模拟框架NSubstitute

    .NET测试--模拟框架NSubstitute .NET测试 NSubstitute在GitHub的开源地址:https://github.com/nsubstitute/nsubstitute/do ...

  5. sentry SSRF

    目录 Sentry介绍 exp测试步骤 自己构造blind发包 修复方式 参考 Sentry介绍 Sentry 是一个实时的事件日志和聚合平台,基于 Django 构建.一般在url上.或者logo上 ...

  6. Nginx解析漏洞复现以及哥斯拉连接Webshell实践

    Nginx解析漏洞复现以及哥斯拉连接Webshell实践 目录 1. 环境 2. 过程 2.1 vulhub镜像拉取 2.2 漏洞利用 2.3 webshell上传 2.4 哥斯拉Webshell连接 ...

  7. 微信小程序折线图表折线图加区域图

    1.先来个效果图 这里我用的是插件@antv/f2-canvas(安装的方法如下) npm init 此处如果直接使用官方npm install 可能会出现没有node_modules错误 npm i ...

  8. [数据结构与算法-15]单源最短路径(Dijkstra+SPFA)

    单源最短路径 问题描述 分别求出从起点到其他所有点的最短路径,这次主要介绍两种算法,Dijkstra和SPFA.若无负权优先Dijkstra算法,存在负权选择SPFA算法. Dijkstra算法 非负 ...

  9. VSCode添加用户代码片段,自定义用户代码片段

    在使用VScode开发中经常会有一些重复使用的代码块,复制粘贴也很麻烦,这时可以在VScode中添加用户代码片段,输入简写即可快捷输入. VScode中添加用户自定义代码片段很简单. 1.在VScod ...

  10. ICPC题目选讲

    Traveling in the grid world 题目描述 有一个 \(n\times m\) 的格点图,两点之间走他们的连线,但是这条连线不能恰好覆盖其他整点.还要求相邻两步之间的连线不能斜率 ...