JavaWeb之request.getParameter、request.getParameterValues、request.getParameterMap用法详解

一、request中的参数parameter是一个map表

例如:

map={username=[tom],password=[123],hobby=[eat,drink]}
  •  

(1)当调用getParameter(“hobby”)时只能获取hobby[0] ,即eat。

(2)调用getParameterValues(“hobby”)时能获取hobby=[eat,drink]这个数组。

(3)调用getParameterMap时能获取整个map对象,即map={username=[tom],password=[123],hobby=[eat,drink]}

二、对于getParameterMap介绍

①、register.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


    


        用户名:

        密码:

        确认密码:

        邮箱:

        生日:

        

    


②、regServlet.java

public class RegServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        // 1、获取表单数据
        User user = new User();
        try {
            Map map = request.getParameterMap();
            //1、循环打印map中的参数
            for (Map.Entry m: map.entrySet()) {
                System.err.println(m.getKey()+"--"+m.getValue());
            }
            /**
             * 结果:  username--[Ljava.lang.String;@460ebfba
             *        password--[Ljava.lang.String;@724d7044
             *        repassword--[Ljava.lang.String;@3a05bafc
             *        email--[Ljava.lang.String;@4e371426
             *        birthday--[Ljava.lang.String;@20bf2e8
             */
            //2、循环打印map中的参数
            for (String key: map.keySet()) {
                System.out.print(key+"----");
                System.out.println(map.get(key).length);
                for (int i = 0; i < map.get(key).length; i++) {
                    System.out.print(map.get(key)+"----");
                    System.out.println(map.get(key)[i]);//因为value是一个集合string[],故需要[i]
                
                }
            }
            /**
             * 结果:username----admin----[Ljava.lang.String;@3d1b2664
             *     password----123----[Ljava.lang.String;@724d7044
             *       repassword----123----[Ljava.lang.String;@3a05bafc
             *       [email protected][Ljava.lang.String;@4e371426
             *       birthday----1989-10-01----[Ljava.lang.String;@20bf2e8
             */
            

            //3、循环打印map中的参数
            //获得表单中所有文本域的name和值以map方式来存储
            Map map1 = request.getParameterMap();
            //获得map的key(就是表单中文本域的name集合)
            Set names = map.keySet();
            for(String name : names){
                //获得每个文本域所对应的值
                String[] vals = (String[]) map.get(name);
                System.out.print(name+":");
                for(String val : vals){//因为value是一个集合string[],故需要遍历
                    System.out.print(val+" ");
                }
                System.out.println();
            }

            /**
             * username:admin 
             * password:123 
             * repassword:123 
             * email:[email protected] 
             * birthday:1989-10-01 
             */
            BeanUtils.populate(user, request.getParameterMap());
            // 2、 调用业务逻辑
            UserService us = new UserServiceImpl();
            us.register(user);
        } catch (Exception e1) {
            e1.printStackTrace();
        }
        //3、分发转向
        response.getWriter().print("注册成功!1秒跳转到主页");
        response.addHeader("refresh", "1;url="+request.getContextPath()+"/index.jsp");
        
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }

}
三、BeanUtils.populate理解

完整方法:

BeanUtils.populate( Object bean, Map properties ),

这个方法会遍历map中的key,如果bean中有这个属性,就把这个key对应的value值赋给bean的属性。

你可能感兴趣的:(javaweb)