struts1读取请求参数乱码

来源:互联网 发布:淘宝好评返现要降权吗 编辑:程序博客网 时间:2024/05/22 13:42
今天在做Stuts1的一个简单的页面的时候,使用form bean从客户端读取请求参数的时候总是会出现乱码,有点郁闷。因为之前没有怎么看过struts1更不用说用了,找了本书了解了一下struts1处理 请求的基本流程后,我想应该是struts在读请求参数时的问题。之前用Servlet读请求参数时,在使用HttpServletRequest对象之 前都回设置请求体的编码方式,即调用request.setCharacterEncoding("请求体的编码方式"),如果不设置的话容器会使用 ISO-8859-1的编码方式来读请求体,而我的页面的编码方式是gbk,所以应该在struts读取请求参数之前设一下请求体的编码方式。查看了一下 ActionServlet的源代码发现,在doPost和doGet方法中都只是简单地调用process方法,所以新建了一个 ActionServlet的子类,重写了一下process方法。如下:

public void process(HttpServletRequest request, HttpServletResponse response)
            thrwos ServletException ,IOException {
        String encoding = getInitParameter("characterEncoding");//读取Servlet的初始化参数
        request.setCharacterEncoding(encoding);
        super.process(request, response);
}

在web.xml中把主控制器改为刚刚新建的Servlet然后在增加一个初始化参数
        <init-param>
            <param-name>characterEncoding</param-name>
            <param-value>gbk</param-value>
        </init-param>

测试一下,OK,解决了。 
原创粉丝点击