Servlet-request之与请求正文相关的方法

1、Servlet的编写:

/**
 * @author CSDN_LQR
 * @TODO request之与请求正文相关的方法
 */
public class ServletDemo3 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String userName = request.getParameter("userName");
        String password = request.getParameter("password");
        String sex = request.getParameter("sex");
        String[] habbys = request.getParameterValues("habby");// 如果找不到habby,habbys不是长度为0,而是null
        String city = request.getParameter("city");

        userName = new String(userName.getBytes("ISO-8859-1"), "UTF-8");
        password = new String(password.getBytes("ISO-8859-1"), "UTF-8");
        sex = new String(sex.getBytes("ISO-8859-1"), "UTF-8");
        city = new String(city.getBytes("ISO-8859-1"), "UTF-8");

        System.out.println(userName);
        System.out.println(password);
        System.out.println(sex);
        for (int i = 0; habbys != null && i < habbys.length; i++) {
            System.out.println(new String(habbys[i].getBytes("ISO-8859-1"),
                    "UTF-8"));
        }
        System.out.println(city);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 告诉服务器使用UTF-8格式接收以下Post参数(register.html中已经在<head>中申明使用UTF-8编码)
        request.setCharacterEncoding("UTF-8");

        // getParamterTest(request);

        // getParamterNamesTest(request);

        // getParamterMapTest(request);

    }

    /**
     * getParameterMap()常用于框架,可以参考Apache的commons-beanutils-1.8.3.jar
     * 
     * @param request
     */
    private void getParamterMapTest(HttpServletRequest request) {
        try {
            User user = new User();
            System.out.println("填充前:" + user.toString());
            Map<String, String[]> map = request.getParameterMap();
            for (Map.Entry<String, String[]> entry : map.entrySet()) {
                String key = entry.getKey();
                String[] value = entry.getValue();

                // 反射得到User类中属性的setter方法
                PropertyDescriptor pb = new PropertyDescriptor(key, User.class);
                Method setter = pb.getWriteMethod();
                if (value.length == 1) {
                    setter.invoke(user, value[0]);
                } else {
                    setter.invoke(user, (Object) value);
                }
            }
            System.out.println("填充后:" + user.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private void getParamterNamesTest(HttpServletRequest request) {
        Enumeration<String> names = request.getParameterNames();
        while (names.hasMoreElements()) {
            String name = names.nextElement();
            String[] values = request.getParameterValues(name);

            for (int i = 0; values != null && i < values.length; i++) {
                System.out.println(name + "\t" + values[i]);
            }
        }
    }

    private void getParamterTest(HttpServletRequest request) {
        String userName = request.getParameter("userName");
        String password = request.getParameter("password");
        String sex = request.getParameter("sex");
        String[] habbys = request.getParameterValues("habby");// 如果找不到habby,habbys不是长度为0,而是null
        String city = request.getParameter("city");

        System.out.println(userName);
        System.out.println(password);
        System.out.println(sex);
        for (int i = 0; habbys != null && i < habbys.length; i++) {
            System.out.println(habbys[i]);
        }
        System.out.println(city);
    }

}!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

    <form action="demo3" method="post">
        用户名:<input type="text" name="userName" /><br/>
        密码:<input type="password" name="password"/><br/>
        性别:<input type="radio" name="sex" value="男" checked="checked"/>男
        <input type="radio" name="sex" value="女" />女<br/>
        爱好:<input type="checkbox" name="habby" value="篮球"/>篮球
        <input type="checkbox" name="habby" value="足球"/>足球
        <input type="checkbox" name="habby" value="乒乓球"/>乒乓球<br/>
        城市:
        <select name="city">
            <option>-------请选择城市--------</option>
            <option value="bj">北京</option>
            <option value="sh">上海</option>
            <option value="gz">广州</option>
        </select>
        <br/>
        <input type="submit" value="提交">
    </form>

</body>
</html>

3、User类的编写

public class User {

    private String userName;
    private String password;
    private String sex;
    private String city;
    private String[] habby;
    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 getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }
    public String[] getHabby() {
        return habby;
    }
    public void setHabby(String[] habby) {
        this.habby = habby;
    }
    @Override
    public String toString() {
        return "User [userName=" + userName + ", password=" + password
                + ", sex=" + sex + ", city=" + city + ", habby="
                + Arrays.toString(habby) + "]";
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值