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

原创 2016年08月30日 20:56:04

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=我去]

版权声明:本文为博主原创文章,未经博主允许不得转载。

JavaEE中request对象的请求参数为中文,获取时出现乱码问题的解决

向客户端发送请求参数通常有两种情况:POST&GETPOST解决方法:若请求参数中包含非西欧字符,则必须在获取请求参数之前先调用setCharacterEncoding()方法设置编码的字符集表单: ...

response、request对象-中文问题,web开发中的地址问题,生成验证码,表单获取信息,url地址编码,request的请求转发

1、简介 Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象、和代表响应的response对象。 request和response对象即然代表请求和响...

Request对象接收表单请求参数的中文乱码处理

Request对象接收表单请求参数的中文乱码处理 表单请求页面 Insert title here request接收中文数据 POST方式接收中文 姓名: ...

由于浏览器版本造成的HttpServlet获取request请求对象中含中文乱码问题

一般情况下解决页面对象的中文乱码问题,主要集中在:request、response和页面的pageEncoding设置 而我设置了以上三者后,使用post请求,没有问题,但一使用get请求方式,...
  • badyflf
  • badyflf
  • 2012年10月02日 20:39
  • 4103

get请求中文乱码问题解决和参数编码

在web项目中,我们通常的请求方式都是get/post,但get方式有一个问题,就是参数是中文的时候容易乱码,而且参数在路径中可以看到,不安全,我的解决办法是,对参数进行编码,这样可以解决如上两个问题...

Servlet中两大对象request和response的编码问题总结

response对象: 向页面输出中文(乱码问题) 通常获得输出流的方法有两种: response.getOutputStream() response.getWriter() 那么处...
  • ant1993
  • ant1993
  • 2016年12月25日 01:06
  • 398

JSP使用URL编码传递中文参数问题的解决

# 传参出现乱码一直是编写应用程序困扰广大程序员的一大难题,同样难倒了我。这种问题,写个编码过滤器,有时居然不管用。在写应用程序中,会有中文传参的需要,如下:            # 但中文参...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Request对象中请求参数中文编码问题
举报原因:
原因补充:

(最多只允许输入30个字)