传统Servlet获取表单数据

来源:互联网 发布:淘宝店铺如何转让 编辑:程序博客网 时间:2024/05/16 08:13


创建一动态web项目

index.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><form action="LoginServlet" method="post">姓  名:<input type="text" name="name"/><br/>密  码:<input type="password" name="password"><br/>年  龄:<input type="text" name="age"><br/>爱  好:<input type="checkbox" name="hobby" value="smoke">抽烟 <input type="checkbox" name="hobby" value="drink">喝酒<input type="checkbox" name="hobby" value="head">烫头<br/>入职日期:<input type="text" name="hiredate"><br/><input type="submit" value="提交"/></form></body></html>


LoginServlet:

注意: 使用了注解@WebServlet  就不用再去web.xml中去配置servlet

package com.qx.servlet;import java.io.IOException;import java.util.Arrays;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@WebServlet("/LoginServlet")public class LoginServlet extends HttpServlet {private static final long serialVersionUID = 1L;       protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubrequest.setCharacterEncoding("UTF-8");response.setContentType("text/html;charset=UTF-8");//Map<String, String[]> parameterMap = request.getParameterMap();String name = request.getParameter("name");System.out.println(name);String age = request.getParameter("age");System.out.println(age);String[] hobby = request.getParameterValues("hobby");System.out.println(Arrays.toString(hobby));}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}

浏览器中输入请求地址;

点击提交: 会跳转到LoginServlet,  控制台输出结果如下.

可知多选框对应的value为一个数组


若在servlet中 对多选框也使用request.getParameter去接值,则只能接到一个值

String hobby = request.getParameter("hobby");




问题:使用request.getParameterMap去接数据,控制台输出结果又是什么样呢?

接下来,重写 LoginServlet , 使用request.getParameterMap去接数据

package com.qx.servlet;import java.io.IOException;import java.util.Arrays;import java.util.Map;import java.util.Map.Entry;import java.util.Set;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@WebServlet("/LoginServlet")public class LoginServlet extends HttpServlet {private static final long serialVersionUID = 1L;       protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubrequest.setCharacterEncoding("UTF-8");response.setContentType("text/html;charset=UTF-8");Map<String, String[]> parameterMap = request.getParameterMap();Set<Entry<String,String[]>> entrySet = parameterMap.entrySet();for (Entry<String, String[]> entry : entrySet) {String key=entry.getKey();String[] value = entry.getValue();System.out.println(key+"="+Arrays.toString(value));}}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}

再次去访问index.jsp,提交表单,控制台输出结果为

[看这种形式的控制台输出,是为了引出我接下来使用反射封装操作bean的工具类时封装的一些细节处理---获取表单数据注入到bean中,及封装类型转换器等];


原创粉丝点击