五、获取表单提交的用户的数据,这些数据自动被封装到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);
  }
 }
}

posted @ 2017-02-04 18:52  爱笑的berg  阅读(1247)  评论(0)    收藏  举报