struts1读取请求参数乱码

今天在做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,解决了。 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值