-1、解决中文乱码问题在开始之前,先解决中文乱码的问题。在 request.setCharacterEncoding("utf-8");
就可以了 0、概述进入正题,下表展示了获取请求参数通用方式的常用方法:
在演示这四个方法之前,新建一个 <form action="requestDemo4" method="post"> <input type="text" name="username" placeholder="用户名"> <br> <input type="password" name="password" placeholder="密码"> <br> <input type="checkbox" name="hobby" value="游戏">游戏 <input type="checkbox" name="hobby" value="学习">学习 <br> <input type="submit" value="提交"> </form> 接下来演示这四个方法: 1、getParameter 根据参数名称获取参数值如下图所示:
现在用 @WebServlet("/requestDemo4") public class RequestDemo4 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //0、解决中文乱码问题 request.setCharacterEncoding("utf-8"); System.out.println("1、根据参数名称获取参数值:"); //1、根据参数名称获取参数值 String username = request.getParameter("username"); System.out.println("username : " username); String password = request.getParameter("password"); System.out.println("password : " password); String hobby1 = request.getParameter("hobby"); System.out.println("hobby : " hobby1); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } } 填写表单,复选框全选:
2、getParameterValues 根据参数名称获取参数值的数组为了解决上面的那个问题,引入了 根据上面的案例,只编写针对复选框的代码: @WebServlet("/requestDemo4") public class RequestDemo4 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //0、解决中文乱码问题 request.setCharacterEncoding("utf-8"); System.out.println("2、根据参数名称获取参数值的数组:"); //2、根据参数名称获取参数值的数组 String[] hobbies = request.getParameterValues("hobby"); for (String hobby : hobbies) { System.out.println("hobby : " hobby); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } } 得到的结果是: 3、getParameterNames 获取所有请求参数的名称
@WebServlet("/requestDemo4") public class RequestDemo4 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //0、解决中文乱码问题 request.setCharacterEncoding("utf-8"); //3、获取所有请求参数的名称 System.out.println("3、获取所有请求参数的名称"); Enumeration<String> parameterNames = request.getParameterNames(); while(parameterNames.hasMoreElements()){ String name = parameterNames.nextElement(); String value = request.getParameter(name); System.out.println(name " : " value); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } } 复选框全选,实现效果: 请继续往下看第四个方法: 4、getParameterMap 获取所有参数的Map集合第四种方法完美解决了上面的问题,它返回 @WebServlet("/requestDemo4") public class RequestDemo4 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //0、解决中文乱码问题 request.setCharacterEncoding("utf-8"); System.out.println("-----------------------------------------------------"); //4、获取所有参数的Map集合 System.out.println("4、获取所有参数的Map集合"); Map<String, String[]> parameterMap = request.getParameterMap(); Set<String> keySet = parameterMap.keySet(); for(String name : keySet){ String[] strings = parameterMap.get(name); System.out.print(name ": "); for (String value : strings){ System.out.print(value " "); } System.out.println(); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } } 复选框全选,结果如下: |
|