09-HttpServletRequest-01
研究:javax.servlet.http.HttpServletRequest接口
1、HttpServletRequest是一个Servlet重要接口之一
2、继承关系
public interface HttpServletRequest extends ServletRuquest{}
3、HttpServletRequest接口的的实现类是web容器负责实现的,但是我们还是只需要面向皆苦调用方法即可,不需要关心具体的实现类了
4、HttpServletRequest这个对象中封装了那些信息呢?
封装了HTTP请求协议的全部信息
- 请求方式
- URI
- 版本协议号
- 表单提交的数据
。。。。
5、HttpServletRequest一般变量名字叫request,表示请求,HttpServletRequest对象代表一次请求,一次请求对应着一个request对象, 100个请求对应着100个对象,所以request对象的声明周期是短暂的
6、HttpServletRequest接口中常用的方法
//表单提交数据,会被自动封装到request当中requert对象中有Map集合来存储这些数据:Map集合的key是name,value是一个字符串类型的以为数组
(通常情况下,这个一位数组中只有一个元素,所以这个方法使用最多)
- String getParameter(String name)//通过key获取value这个以为数组中的首元素
- Map getParameterMap()//获取整个map集合
- Enumeration getParameterNames()//获取整个Map集合中的所有的key
- String[] getParameterValues(String name)//通过Map集合key获取value
SaveUserServlet.java
package com.javaweb.servlet;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Map;
import java.util.Set;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SaveUserServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获取用户信息,表单提交的,这些数据被自动封装到request对象中了
//从request中获取这些信息
//表单数据是这样的格式提交的,POST请求,在请求体重提交,数据格式:
//username=admin&password=123&sex=m&interest=sport&interest=music&grade=dz&introduce=ok
/**
*
*Map<String,String[]>
*key value
*------------------------------
*username {"admin"}
*password {"123"}
*sex {"m"}
*interest {"sport","music"}
*grade {"dz"}
*introduce {"ok"}
*/
String username = request.getParameter("username");
String password = request.getParameter("password");
String sex = request.getParameter("sex");
//String interest = request.getParameter("interest");
String[] interests = request.getParameterValues("interest");
String grade = request.getParameter("grade");
String introduce = request.getParameter("introduce");
System.out.println(username);
System.out.println(password);
System.out.println(sex);
//这个方法适合取复选框中的数据checkbox
for(String in:interests)
{
System.out.println(interests);
}
System.out.println(grade);
System.out.println(introduce);
//获取整个参数Map集合
Map<String,String[]> parameterMap = request.getParameterMap();
Set<String> names = parameterMap.keySet();
for(String name:names)
{
String[] values = parameterMap.get(name);
System.out.print(name +"=");
for(String value:values)
{
System.out.print(value +" ");
}
System.out.println();
}
//获取Map集合所有的key
Enumeration<String> keys = request.getParameterNames();
while(keys.hasMoreElements())
{
String name = keys.nextElement();
}
}
}
register.html
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
<meta charset="GBK">
</head>
<body>
<form action="/09-HttpServletRequest-01/user/save" method="post">
用户名
<input type="text" name = "username">
<br>
密码
<input type="password" name ="password">
<br>
性别
男<input type="radio" name="sex" value="m">
女<input type="radio" name="sex" value="f">
<br>
爱好
<input type="checkbox" name="interest" value = "sport">运动
<input type="checkbox" name="interest" value = "music">音乐
<input type="checkbox" name="interest" value = "dance">跳舞
<input type="checkbox" name="interest" value = "learn">学习
<input type="checkbox" name="interest" value = "read">阅读
<br>
学历
<select name="grade">
<option value="gz">高中</option>
<option value="gz">大专</option>
<option value="gz">大本</option>
</select>
<br>
简介
<textarea rows="10" cols="60" name="introduce"></textarea>
<input type="submit" value="注册">
<input type="reset" value="重置">
<br>
</form>
</body>
</html>
xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<welcome-file-list>
<welcome-file>register.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>save</servlet-name>
<servlet-class>com.javaweb.servlet.SaveUserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>save</servlet-name>
<url-pattern>/user/save</url-pattern>
</servlet-mapping>
</web-app>