`
digiter
  • 浏览: 118361 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts2, Tomcat6, MySQL5.1乱码问题解决

阅读更多
MySQL数据库,和Eclipse中的所有设置字符编码的地方都设置成UTF-8
然后利用MySQL的设置向导重新设置MySQL的默认编码也是UTF-8即可

Struts2,或者说JSP的表单乱码,分为get和post方法

get方法
在tomcat的conf\server.xml中第一个Connector中加入属性URIEncoding="UTF-8"

post方法
添加一个CharacterEncodingFilter拦截器
/*
  $Id$

  Copyright (C) 2003-2009 Virginia Tech.
  All rights reserved.

  SEE LICENSE FOR MORE INFORMATION

  Author:  Middleware Services
  Email:   middleware@vt.edu
  Version: $Revision$
  Updated: $Date$
 */
package servlet.filter;

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;

/**
 * Sets the request and/or response character encoding based on the presence of
 * either or both of the following init params, {@link #REQUEST_CHARSET_NAME}
 * {@link #RESPONSE_CHARSET_NAME}.
 * 
 * <p>
 * <strong>NOTE:</strong> this filter should be as close to the beginning of the
 * filter chain as possible. Any filters that obtain request parameters, e.g.
 * <code>request.getParameter(...)</code>, prior to setting the character set
 * via this filter will use the platform default character set.
 * </p>
 * 
 * @author Middleware Services
 * @version $Revision$
 */
public class CharacterEncodingFilter implements Filter {

	/**
	 * Name of init param for setting request character encoding. The value
	 * should be a valid Java character set name, e.g. UTF-8.
	 */
	public static final String REQUEST_CHARSET_NAME = "requestCharsetName";

	/**
	 * Name of init param for setting response character encoding. The value
	 * should be a valid Java character set name, e.g. UTF-8.
	 */
	public static final String RESPONSE_CHARSET_NAME = "responseCharsetName";

	/** Request character set name. */
	private String requestCharsetName;

	/** Response character set name. */
	private String responseCharsetName;

	/** {@inheritDoc}. */
	public void init(final FilterConfig filterConfig) throws ServletException {
		if (filterConfig.getInitParameter(REQUEST_CHARSET_NAME) != null) {
			requestCharsetName = filterConfig.getInitParameter(REQUEST_CHARSET_NAME);
		}
		if (filterConfig.getInitParameter(RESPONSE_CHARSET_NAME) != null) {
			responseCharsetName = filterConfig.getInitParameter(RESPONSE_CHARSET_NAME);
		}
	}

	/** {@inheritDoc}. */
	public void doFilter(final ServletRequest request,
			final ServletResponse response, final FilterChain chain)
			throws IOException, ServletException {
		if (requestCharsetName != null) {
			request.setCharacterEncoding(requestCharsetName);
		}
		if (responseCharsetName != null) {
			response.setCharacterEncoding(responseCharsetName);
		}
		chain.doFilter(request, response);
	}

	/** {@inheritDoc}. */
	public void destroy() {
	}
}

然后在web.xml里加入(加在其他拦截器前面)
	<filter>
		<filter-name>CharacterEncodingFilter</filter-name>
		<filter-class>servlet.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>requestCharsetName</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>responseCharsetName</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>CharacterEncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

即可
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics