1. 首先定义一个自己的ActionServlet, 在其中设置Request的编码格式
public class SmpeActionServlet extends ActionServlet {
    protected void process(HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException {
        request.setCharacterEncoding(AppConsts.ENC_TYPE_GBK);
        super.process(request, response);
    }    
}2. 在Web.xml中将.do定向到此Servlet进行处理
        <servlet-class>com.ls.websrv.framework.SmpeActionServlet</servlet-class>
        <init-param>
            <param-name>config</param-name>
            <param-value>/WEB-INF/struts-config.xml</param-value>
        </init-param>
        <init-param>
            <param-name>debug</param-name>
            <param-value>2</param-value>
        </init-param>
        <init-param>
            <param-name>detail</param-name>
            <param-value>2</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

解决方案 »

  1.   

    通过parameter传递到action中是中文,但是从form中得到就是乱码
      

  2.   

    写一个filter过滤器package com.cn.throughout.util;import java.io.IOException;
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.UnavailableException;public class SetCharacterEncodingFilter implements Filter { protected String encoding = null; protected FilterConfig filterConfig = null; protected boolean ignore = true;
    public void destroy() {
    this.encoding = null;
    this.filterConfig = null;
    } public void doFilter(
    ServletRequest request,
    ServletResponse response,
    FilterChain chain)
    throws IOException, ServletException {
    response.setContentType("text/html;charset=UTF-8");
    //    Conditionally select and set the character encoding to be used
    if (ignore || (request.getCharacterEncoding() == null)) {
    String encoding = selectEncoding(request);
    if (encoding != null)
    request.setCharacterEncoding(encoding);
    } chain.doFilter(request, response);
    } private String selectEncoding(ServletRequest request) {
    return (this.encoding);
    }
    public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig;
    this.encoding = filterConfig.getInitParameter("encoding");
    String value = filterConfig.getInitParameter("ignore");
    if (value == null)
    this.ignore = true;
    else if (value.equalsIgnoreCase("true"))
    this.ignore = true;
    else if (value.equalsIgnoreCase("yes"))
    this.ignore = true;
    else
    this.ignore = false;
    }
    }
      

  3.   

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app id="WebApp">
    <display-name>TimeGroupCRM</display-name>
    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/Hibernate_Context.xml</param-value>
    </context-param>
    <context-param>
         <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
         <param-value>messages</param-value>
       </context-param>
       <context-param>
         <param-name>caDelegaterBeanName</param-name>
         <param-value>caDelegater</param-value>
       </context-param>
       <context-param>
         <param-name>webModuleID</param-name>
         <param-value>2</param-value>
       </context-param>
    <filter>
    <filter-name>SetCharacterEncodingFilter</filter-name>
    <display-name>SetCharacterEncodingFilter</display-name>
    <filter-class>com.cn.throughout.util.SetCharacterEncodingFilter</filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
    <param-name>ignore</param-name>
    <param-value>true</param-value>
    </init-param>
    </filter>
    <filter>
    <filter-name>SecurityFilter</filter-name>
    <display-name>SecurityFilter</display-name>
    <filter-class>com.cn.throughout.util.SecurityFilter</filter-class>
    </filter>
    <filter>
    <filter-name>SecurityFilterDoc</filter-name>
    <display-name>SecurityFilter</display-name>
    <filter-class>com.cn.throughout.util.SecurityFilter</filter-class>
    </filter>
    <filter>
    <filter-name>SecurityFilterXls</filter-name>
    <display-name>SecurityFilter</display-name>
    <filter-class>com.cn.throughout.util.SecurityFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>SetCharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
    <filter-name>SecurityFilter</filter-name>
    <url-pattern>*.do</url-pattern>
    </filter-mapping>
    <filter-mapping>
    <filter-name>SecurityFilter</filter-name>
    <url-pattern>*.doc</url-pattern>
    </filter-mapping>
    <filter-mapping>
    <filter-name>SecurityFilter</filter-name>
    <url-pattern>*.xls</url-pattern>
    </filter-mapping>
    <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
    <param-name>config</param-name>
    <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
    <param-name>debug</param-name>
    <param-value>2</param-value>
    </init-param>
    <init-param>
    <param-name>detail</param-name>
    <param-value>2</param-value>
    </init-param>
    <init-param>
    <param-name>validate</param-name>
    <param-value>true</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
    </servlet>
    <servlet>
    <servlet-name>ContextLoaderServlet</servlet-name>
    <display-name>ContextLoaderServlet</display-name>
    <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    <mime-mapping>
    <extension>wsdl</extension>
    <mime-type>text/xml</mime-type>
    </mime-mapping>
    <mime-mapping>
    <extension>xsd</extension>
    <mime-type>text/xml</mime-type>
    </mime-mapping>
    <welcome-file-list>
    <welcome-file>login.jsp</welcome-file>
    </welcome-file-list>
    <taglib>
    <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
    </taglib>
    <taglib>
    <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
    </taglib>
    <taglib>
    <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
    </taglib>
    <taglib>
    <taglib-uri>/WEB-INF/struts-nested.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
    </taglib>
    <taglib>
    <taglib-uri>/WEB-INF/struts-template.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-template.tld</taglib-location>
    </taglib>
    <taglib>
    <taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
    </taglib>
    </web-app>