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