struts1中表单提交乱码解决办法

问题:

在你所有页面设置的编码都是utf-8的情况下仍然会出现中文乱码现象。

一、乱码出现原因

由于Struts框架直接把表单数据发送给了ActionForm,所以这里面没有对HttpRequestServlet进行SetCharacterEncoding,所以默认是按照ISO-8859-1。

二、解决办法

方法 : 就是在表单提交到ActionForm之前对request进行编码,写一个过滤器,对所有请求进行过滤

方式一:直接在过滤器中指定编码格式

MyFilter.java

 1 public class MyFilter extends HttpServlet implements Filter {
 2     private static final long serialVersionUID = 1L;
 3        
 4 
 5     public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws java.io.IOException, javax.servlet.ServletException { 
 6          // TODO Auto-generated method stub
 7           arg0.setCharacterEncoding("utf-8"); //设置接收编码
 8         arg1.setContentType("text/html;charset=utf-8");
 9         arg2.doFilter(arg0, arg1);   //必须
10     
11     }
12 
13     
14     public void init(FilterConfig arg0) throws javax.servlet.ServletException { 
15          // TODO Auto-generated method stub
16     }
17 
18 }

在web.xml中添加


1 <filter>
2     <filter-name>MyFilter</filter-name>
3     <filter-class>com.xidian.filter.MyFilter</filter-class>
4   </filter>
5   <filter-mapping>
6     <filter-name>MyFilter</filter-name>
7     <url-pattern>/*</url-pattern>
8   </filter-mapping>

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值