JavaWeb学习笔记——获取表单数据

来源:互联网 发布:加微信群软件 编辑:程序博客网 时间:2024/05/16 00:50

总结整理后台获取前台表单的值的方法:
前端代码的例子:

<body>    <form action="demo1" method="post">        用户名:<input type="text" name="username"><br>        密码:<input type="password" name="password"><br>        爱好:<input type="checkbox" name="hobby" value="篮球">篮球<br>        <input type="checkbox" name="hobby" value="编程">编程        <input type="checkbox" name="hobby" value="乒乓球">乒乓球<br>        验证码:<input type="text" name="vcode"><img src="/validate/validatee" onclick="changeImg()" /><a href="javascript:changeImg()">看不清,换一张</a><br>        <input type="submit" value="提交">    </form>  </body>

下面是几种后台获取前台表单的值的方法:

1.request.getParameter()

该方法是根据前台表单name属性的名,获取value属性值的方法,对于像用户名、密码、验证码这样的单属性值可以这样获取:
后台代码:

String username = request.getParameter("username");String password = request.getParameter("password");String vcode = request.getParameter("vcode");

2.request.getParameterValues()

对于像hobby这样有复选框,可以选中多值的表单,后台可以这样获取前台传来的值:

String[] hobby = request.getParameterValues();

这种方法一般是获取复选框的值所用到的方法。

3.request.getParameterNames()

获取表单提交的所有的name方法。

Enumeration names = request.getParameterNames();        while (names.hasMoreElements()) {            // 获取前端name值            String name = (String)names.nextElement();            // 将值以数组形式保存            String[] values = request.getParameterValues(name);            // 遍历            for (int i = 0; values != null && i < values.length; i ++) {                System.out.println(name + "\t" + values[i]);            }        }

4.request.getParameterMap()

得到表单提交的所有的值。
我们可以先将要获取的属性值进行封装:

package com.zrxjuly.validate;import java.util.Arrays;public class User {    private String username;    private String password;    private String[] hobby;    private String vcode;    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    public String[] getHobby() {        return hobby;    }    public void setHobby(String[] hobby) {        this.hobby = hobby;    }    public String getVcode() {        return vcode;    }    public void setVcode(String vcode) {        this.vcode = vcode;    }    @Override    public String toString() {        return "User [username="                + username                + ", password="                + password                + ", hobby="                + Arrays.toString(hobby)                + ", vcode="                + vcode                + "]";    }}

然后再获取:

User user = new User();        System.out.println("封装数据前:" + user);        // 得到表单提交的所有的值.        Map<String, String[]> map = request.getParameterMap();        for (Map.Entry<String, String[]> m : map.entrySet()) {            // 得到map中的键            String name = m.getKey();            // 得到map中的值            String[] value = m.getValue();            // 创建一个属性描述器            try {                PropertyDescriptor pd = new PropertyDescriptor(name, User.class);                // 得到setter属性                Method setter = pd.getWriteMethod();                if (value.length == 1) { //给单个变量赋值                    setter.invoke(user, value[0]); // 给一个值的变量赋值                } else {                    setter.invoke(user, (Object)value); // 给复选框赋值                }            } catch (Exception e) {                e.printStackTrace();            }        }        System.out.println(request.getSession().getAttribute("vcode") + "验证码");        if (user.getVcode() != null && user.getVcode().equalsIgnoreCase((String) request.getSession().getAttribute("vcode"))) {            System.out.println("验证码正确!");        } else {            System.out.println("验证码错误!");        }        System.out.println("封装数据后:" + user);

5.使用框架

需要导入的jar包:commons-beanutils-XXX.jar(用于封装数据)和commons-logging.jar(用于输出日志)。导入jar包后,

try {            User user = new User();            System.out.println("封装数据前:" + user);            BeanUtils.populate(user, request.getParameterMap());            System.out.println("封装数据后:" + user);        } catch (Exception e) {            e.printStackTrace();        }

有问题欢迎交流讨论^.^
本案例源码链接:validate.rar

原创粉丝点击