JAVAEE_Servlet_14_HttpServletRequest接口以及常用方法(一)
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接口以及常用方法(一)的更多相关文章
- java中集合类中Collection接口中的Map接口的常用方法熟悉
1:Map接口提供了将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值.Map接口中同样提供了集合的常用方法. 2:由于Map集合中的元素是通过key,value,进行存储的,要 ...
- java中集合类中Collection接口中的Set接口的常用方法熟悉
1:Set集合由Set接口和Set接口的实现类组成,Set接口继承了Collection接口,因为包含Collection接口的所有方法. 2:由于Set接口中不允许存在重复值,因此可以使用Set集合 ...
- java中集合类中Collection接口中的List接口的常用方法熟悉
1:集合类,在java语言中的java.util包提供了一些集合类,这些集合类又被称作容器. 2:区别集合类和数组.(1)数组的长度是固定的,集合的长度是可变的.(2)数组是用来存放基本数据类型的,集 ...
- 集合概述及Collection接口的常用方法
java集合像是一种容器,可以动态的把多个对象的引用放到容器中 java的集合类可以用于存储数量不等的多个对象,还可以用于保存具有映射关系的关联数组 package com.aff.coll; imp ...
- Collection接口的常用方法
[添加功能] boolean add(Object obj); //添加一个元素. boolean addAll(Collection c); //添加一个集合的元素(在后面追加). [删除功能] v ...
- Python 接口自动化常用方法封装
#!/usr/bin/env python # -*- coding:utf-8 -*- # ************************************* # @Time : 2019/ ...
- Java集合框架的四个接口
接口 [四个接口 collection list set map 的区别] collection 存储不唯一的无序的数据 list 存储有序的不唯一的数据 set 存储无序的唯一的数据 m ...
- Java集合框架之四大接口、常用实现类
Java集合框架 <Java集合框架的四大接口> Collection:存储无序的.不唯一的数据:其下有List和Set两大接口. List:存储有序的.不唯一的数据: Set:存储无序的 ...
- java内部类、接口、集合框架、泛型、工具类、实现类
.t1 { background-color: #ff8080; width: 1100px; height: 40px } 一.内部类 1.成员内部类. (1)成员内部类的实例化: 外部类名.内部类 ...
随机推荐
- 1.go语言入门----Helloworld与包引用
HelloWorld与包引用 学习一门语言的惯例都是从helloworld开始,go语言也不例外 在gopath下的src中创建一个helloworld目录,创建main.go文件 package m ...
- CentOS7集群环境Elastic配置
CentOS7集群环境Elastic配置 (首先去官网下载elasticsearch的source code并解压到/usr/soft目录下) (以下默认root账户) 1.更改配置文件 文件路径:/ ...
- COM技术中的VARIANT and VARIANTARG
VARIANT and VARIANTARG Use VARIANTARG to describe arguments passed within DISPPARAMS, and VARIANT to ...
- Java 队列同步器 AQS
本文部分摘自<Java 并发编程的艺术> 概述 队列同步器 AbstractQueuedSynchronize(以下简称同步器),是用来构建锁(Lock)或者其他同步组件(JUC 并发包) ...
- css 超过一行省略号
//超过一行省略号 overflow: hidden; white-space: nowrap; text-overflow: ellipsis; //超过两行省略号 overflow: hidden ...
- MySQL之九---分布式架构(Mycat/DBLE)
MyCAT基础架构图 双主双从结构 MyCAT基础架构准备 准备环境 环境准备: 两台虚拟机 db01 db02 每台创建四个mysql实例:3307 3308 3309 3310 删除历史环境 p ...
- 关于 C++ 中的强制转换 - 基础篇
引言 假设有基类 A,包含了虚函数 func1,以及有派生类 B,继承于类 A,派生类 B 中实现了函数 func1.此时可以用 A 类型的指针指向 B 类型的对象,并用 A 类型的指针调用 B 类型 ...
- 追溯 MySQL Statement Cancellation Timer
原文 1. 背景 在 jstack 的内容中可以看到以下的 MySQL Statement Cancellation Timer 守护线程, 在业务高峰期的时候会出现大量的这类守护线程, 由此追溯该线 ...
- ijkplayer接入使用
1.ijkplayer简介 ijkplayer是一个基于FFmpeg的轻量级Android/iOS视频播放器.FFmpeg的是全球领先的多媒体框架,能够解码,编码, 转码,复用,解复用,流,过滤器和播 ...
- Go语言|类型转换和类型别名
类型转换 同类型之间的转换 Go语言中只有强制类型转换,没有隐式类型转换.该语法只能在两个类型之间支持相互转换的时候使用. import "fmt" func main() { v ...