首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

struts解决乱码有关问题

2012-09-04 
struts解决乱码问题本文用来解决struts2.2的乱码问题,首先说下提交的请求分为GET和POST方式, get方式的特

struts解决乱码问题
本文用来解决struts2.2的乱码问题,首先说下提交的请求分为GET和POST方式,
get方式的特殊性:
  对应GET方式来说,乱码首先取决与服务器的设置。tomcat中的设置就是这样的
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               useBodyEncodingForURI="true" />
  红色部分的设置是说与用户页面编码一致,或者如果你所有的请求都是一个编码,那么你可以设置为URIEncoding="gbk"或uRIEncoding="UTF-8"等。因为我们的项目,不同的请求要做不同的编码,所以统一设置为useBodyEncodingForURI="true。

接下来就是GET与POST相同的地方,就是进入到过滤器以后,进行编码设置。

默认情况下如果没有设置struts.properties的话,dispatcher的默认编码为UTF-8,所以同样的道理,如果你的系统统一编码的话,可以增加struts.properties文件,设置为统一的UTF-8或gbk就可以解决,但是我们的系统又不一样,根据不同的请求,编码又不一样,所以就需要在过滤之前,将dispatcher的变化修改为指定的编码。代码编程了如下:

package com.hispeed.exchange.pgwpage.filter;import java.io.IOException;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.dispatcher.Dispatcher;import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter;public class ExchangeFilter extends StrutsPrepareAndExecuteFilter{FilterConfig filterConfig = null;Dispatcher dispatcher = null;public void doFilter(ServletRequest request, ServletResponse res, FilterChain chain) throws IOException, ServletException    {String uri = ((HttpServletRequest)request).getRequestURI();if(uri.indexOf("/qq/")!=-1){dispatcher.setDefaultEncoding("gbk")}else{dispatcher.setDefaultEncoding("utf-8")}super.doFilter(request, res, chain);    }/** * 前提 */protected void postInit(Dispatcher dispatcher,FilterConfig filterConfig){this.dispatcher = dispatcher;this.filterConfig = filterConfig;}}

热点排行