Struts使用filter解决中文乱码问题
一.在web.xml中配置
xml 代码
<filter> <filter-name>EncodingFilter</filter-name> <filter-class>com.kenshin.base.SysFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>enable</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>EncodingFilter</filter-name> <url-pattern>*.do</url-pattern> </filter-mapping>
package com.kenshin.base; 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 org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; public class SysFilter implements Filter { protected String sEncodingName; protected FilterConfig sysFilter; protected boolean bEnable; protected Log logger = LogFactory.getLog(SysFilter.class); public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { // TODO Auto-generated method stub if (this.bEnable) { try { request.setCharacterEncoding(this.sEncodingName); response.setContentType("text/html;charset=" + this.sEncodingName); response.setCharacterEncoding(this.sEncodingName); filterChain.doFilter(request, response); } catch (Exception e) { logger.info("出错了"); } // session.close(); } else { filterChain.doFilter(request, response); } } public void init(FilterConfig filterConfig) throws ServletException { // TODO Auto-generated method stub this.sysFilter = filterConfig; this.loadFilterSetting(); } private void loadFilterSetting() { this.sEncodingName = this.sysFilter.getInitParameter("encoding"); logger.info("encoding:" + sEncodingName); String sEnable = this.sysFilter.getInitParameter("enable"); if (sEnable != null && sEnable.equalsIgnoreCase("true")) { this.bEnable = true; } else { this.bEnable = false; } } }