Request对象中请求参数中文编码问题

register.html文件:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>学生注册系统</title>
  </head>

  <body>
    <form action="/Request/servlet/RequestDemo6" method="post">
        <input type="hidden" value="438" name="id"/>
        <table border="1" width="438">
            <tr>
                <td>姓名</td>
                <td>
                    <input type="text" name="name"/>
                </td>
            </tr>
            <tr>
                <td>密码</td>
                <td>
                    <input type="password" name="password"/>
                </td>
            </tr>
            <tr>
                <td>性别</td>
                <td>
                    <input type="radio" name="gender" value="male" checked="checked"/>男性
                    <input type="radio" name="gender" value="female"/>女性
                </td>
            </tr>
            <tr>
                <td>婚否</td>
                <td>
                    <input type="checkbox" name="married"/>
                </td>
            </tr>
            <tr>
                <td>爱好</td>
                <td>
                    <input type="checkbox" name="hobby" value="eat"/>吃饭
                    <input type="checkbox" name="hobby" value="sleep"/>睡觉
                    <input type="checkbox" name="hobby" value="java"/>学Java
                </td>
            </tr>
            <tr>
                <td>籍贯</td>
                <td>
                    <select name="province">
                        <option value="BJ">北京</option>
                        <option value="SD">山东</option>
                        <option value="HB">湖北</option>
                    </select>
                </td>
            </tr>
            <!-- 
            <tr>
                <td>靓照</td>
                <td>
                    <input type="file" name="image"/>
                </td>
            </tr>
             -->
             <tr>
                <td>简介</td>
                <td>
                    <textarea rows="3" cols="38" name="description"></textarea>
                </td>
            </tr>
            <tr>
                <td colspan="2">
<!--                    <input type="submit" value="注册"/> -->
<!--                    <input type="image" src="an-0333.gif"/> -->
                    <input type="button" value="注册" onclick="toSubmit()"/>
                </td>
            </tr>
        </table>
        <script type="text/javascript">
            function toSubmit(){
                //验证用户的输入
                document.forms[0].submit();
            }
        </script>
    </form>
  </body>
</html>

Student.java文件:

package com.neu.domain;

import java.util.Arrays;

public class Student {
    private int id;//BeanUtil对基本类型自动转换
    private String name;
    private String password;
    private String gender;
    private boolean married;
    private String[] hobby;
    private String province;
    private String description;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    public boolean isMarried() {
        return married;
    }
    public void setMarried(boolean married) {
        this.married = married;
    }
    public String[] getHobby() {
        return hobby;
    }
    public void setHobby(String[] hobby) {
        this.hobby = hobby;
    }
    public String getProvince() {
        return province;
    }
    public void setProvince(String province) {
        this.province = province;
    }
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
    @Override
    public String toString() {
        return "Student [id=" + id + ", name=" + name + ", password="
                + password + ", gender=" + gender + ", married=" + married
                + ", hobby=" + Arrays.toString(hobby) + ", province="
                + province + ", description=" + description + "]";
    }

}

RequestDemo6.java文件:

package com.neu;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.InvocationTargetException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.BeanUtils;

import com.neu.domain.Student;

public class RequestDemo6 extends HttpServlet {
/*获取常用表单输入域的值*/
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        test1(request, response);
    }

    //获取请求正文的参数乱码问题
    private void test1(HttpServletRequest request, HttpServletResponse response)
            throws UnsupportedEncodingException, IOException {
        request.setCharacterEncoding("UTF-8");//设置请求正文使用的编码,只对POST有效
        Student s = new Student();
        System.out.println("封装前:"+s);
        try {
            BeanUtils.populate(s, request.getParameterMap());
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("封装后:"+s);

        response.setContentType("text/html;charset=UTF-8");
        response.getWriter().write(s.toString());
    }

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

        doGet(request, response);
    }

}

运行:
http://localhost:8080/Request/register.html
运行结果:
服务器控制台输出:
封装前:Student [id=0, name=null, password=null, gender=null, married=false, hobby=null, province=null, description=null]
封装后:Student [id=438, name=张三, password=123, gender=male, married=true, hobby=[eat, java], province=BJ, description=我去]
浏览器输出:
Student [id=438, name=张三, password=123, gender=male, married=true, hobby=[eat, java], province=BJ, description=我去]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值