五、获取表单提交的用户的数据,这些数据自动被封装到request对象中
1、HttpServletRequest接口的实现类是WEB容器负责实现的,Tomcate服务器有自己的实现类,但是程序员还是只需要面向HttpServletRequest接口调用方法即可,不需要关心具体的实现类。
web容器是一种服务程序,在服务器一个端口就有一个提供相应服务的程序,而这个程序就是处理从客户端发出的请求,如:java中的tomcat容器
asp的iss或pws都是这样的容器,一个服务器可以多个容器;
备注:HttpServletRequest这个对象中封装了:请求方式、URI、协议版本号、表单提交的数据
Servlet对象的生命周期相比较request来说是较长的,因为Servlet单利的创建完成之后不会销毁
2、HttpServletRequest接口中常用的方法:
-表单提交的数据,会自动被封装到request对象中,post请求,表单数据在请求体中提交。request对象中用Map集合存储这些数据,Map集合的key是name,value是一个字符串型的一维数组
-String getParameter(String name)//通过key获取value这个一维数组的首元素(通常情况下这个一维数据中只有一个元素,所以这个方法使用最多)
-String[] getParameterValues(String name)//通过map集合key获取value 上面两个方法用的比较多,下面的两种方法用的比较少
-Map getParameterMap()//获取整个map集合
-Enumeration getParameterNames()//获取整个map集合的所有key
|实例:获取表单数据|

register.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/prj-servlet08/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="love" value="sport">运动
<input type="checkbox" name="love" value="music">音乐
<input type="checkbox" name="love" value="dance">跳舞
<input type="checkbox" name="love" value="study">学习
<input type="checkbox" name="love" value="read">阅读
<br>
学历
<select name="grade">
<option value="gz">高中</option>
<option value="dz">大专</option>
<option value="dx">大学</option>
</select>
<br>
简介
<textarea rows="10" cols="60" name="introduce"></textarea>
<br>
<input type="submit" value="注册">
<input type="reset" value="重置">
<br>
</form>
</body>
</html>
web.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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>prj-servlet08</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
<welcome-file>register.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>SaveUser</servlet-name>
<servlet-class>com.bj.SaveUserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SaveUser</servlet-name>
<url-pattern>/user/save</url-pattern>
</servlet-mapping>
</web-app>
SaveUserServlet
package com.bj;
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.setCharacterEncoding("UTF-8");
String username=request.getParameter("username");
String password=request.getParameter("password");
String sex=request.getParameter("sex");
String love=request.getParameter("love");
String grade=request.getParameter("grade");
String introduce=request.getParameter("introduce");
System.out.println(username);
System.out.println(password);
System.out.println(sex);
System.out.println(love);
System.out.println(grade);
System.out.println(introduce);
//获取所有的兴趣爱好,这个方法适合checkbox(复合表中的数据)
String[] loves=request.getParameterValues("love");
for(String e:loves){
System.out.println(e);
}
//获取整个参数的map集合
Map<String, String[]> paramentMap=request.getParameterMap();
//获取key的方法一:
Set<String> names=paramentMap.keySet();
for(String name:names){
String[] values=paramentMap.get(name);
System.out.println("name:"+name);
for(String value:values){
System.out.println("value:"+value);
}
System.out.println();
}
//获取参数Map集合的所有key
//获取key的方法二:
Enumeration<String> keys= request.getParameterNames();
while(keys.hasMoreElements()){
String key=keys.nextElement();
System.out.println(key);
}
}
}

浙公网安备 33010602011771号