全国咨询/投诉热线:400-618-4000

Java培训之处理请求参数乱码

更新时间:2016年06月29日18时05分 来源:传智播客Java培训学院 浏览次数:


1. 处理POST请求乱码

通过对请求参数乱码问题的分析,我们已经了解了请求参数乱码的原因。下面通过一个案例的练习,切身体会一下如何解决该问题;具体步骤如下:
(1)创建一个web应用,Example12,在该应用下新建一个Servlet类,ParamServlet,主要代码如例1-1所示:
例1-1 ParamServlet.java
public class ParamServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
          request.setCharacterEncoding("utf-8");
         String name= request.getParameter("username");
         System.out.println(name);
}
}
例1-1中,先设置请求参数的编码,然后再获取参数值。
(2)ParamServlet在web.xml中配置的访问路径是:“/ParamServlet”。
(3)在Example12应用下新建一个html文件,form.html,主要代码如例1-2所示:
例1-2 form.html
<body>
This is my HTML page. <br>
    <form action="/Example12/ParamServlet" method="post">
    用户名:<input type="text" name="username" value="李四"/><br/>
    <input type="submit" value="提交"/>
    </form>
    <hr/>
    <a href="/Example12/ParamServlet?username=张三">GET</a>
</body>
例1-2中,form.html文件的页面编码是“utf-8”,表单的提交方式是post,提交的路径是“/Example12/ParamServlet”(只要是浏览器端路径都需要加上项目名称)。
(4)将Example12发布到Tomcat服务器中,然后启动服务器,在浏览器地址栏上输入:http://localhost:8080/Example12/form.html;浏览器显示结果如图1-1所示:

图1-1 浏览器显示结果
(5)点击图1-1中的【提交】按钮去访问ParamServlet,并使用HttpWatch抓包工具,抓取内容如图1-2所示:

图1-2 请求信息
(6)控制台打印结果如图1-3所示:

图1-3 控制台打印结果
由打印结果可知通过request.setCharacterEncoding(“utf-8”)方法的设置,请求参数已正常显示。

2. 处理GET请求乱码

以上是处理POST请求乱码的步骤,现在通过一个案例来体会如何解决GET请求的乱码问题。具体如下:
(1)在Example12应用下的ParamServlet重写doGet()方法,如例1-3所示:
例1-3 ParamServlet/doGet()
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
//首先获得请求参数的值
String username =request.getParameter("username");
//进行iso-8859-1编码
byte b[]=username.getBytes("iso-8859-1");
//在进行utf-8编码
String value=new String(b,"utf-8");
System.out.println(value);
}
(2)在form.html中已经存在一个超链接,该超链接访问的是ParamServlet,并带有参数“username=张三“。
(3)重新启动Tomcat服务器,在浏览器端再次访问form.html,然后点击页面中的“GET“超链接,控制台打印结果如图1-4所示:

图1-4 控制台打印结果
GET请求乱码的处理步骤相对POST请求来说有些复杂,但是大家理解了这个原理后就不会觉得困难了。

本文版权归传智播客Java培训学院所有,欢迎转载,转载请注明作者出处。谢谢!
作者:传智播客Java培训学院
首发:http://www.itcast.cn/javaee
 

javaee

python

web

ui

cloud

test

c

netmarket

pm

Linux

movies

robot

uids

北京校区

    14天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    20天免费试学

    基础班入门课程限时免费

    申请试学名额

    8天免费试学

    基础班入门课程限时免费

    申请试学名额

    20天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    0天免费试学

    基础班入门课程限时免费

    申请试学名额

    12天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    10天免费试学

    基础班入门课程限时免费

    申请试学名额