`
缠小溪
  • 浏览: 23869 次
  • 性别: Icon_minigender_1
  • 来自: 江苏
社区版块
存档分类
最新评论

struts中文乱码问题

 
阅读更多

struts开发过程中常见的中文乱码问题可以分为两类:页面中文乱码和参数传递过程中的中文乱码

一、页面中文乱码

页面中文乱码相对简单,可以通过修改pageEncoding来修改编码

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

二、参数传递过程中的中文乱码

在struts开发过程中经常出现传递参数过程中的中文乱码情况,比如提交表单或用户注册、登陆等过程中

解决的办法有两种:

1、通过修改tomcat的配置文件来更改编码类型

修改tomcat--->config--->server.xml文件

 <Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443"  URIEncoding="UTF-8"/>

2、编写过滤器来处理中文乱码问题

过滤器的servlet

public class MyFilter extends HttpServlet implements Filter{
	
	private String encoding;

	@Override
	public void doFilter(ServletRequest arg0, ServletResponse arg1,
			FilterChain arg2) throws IOException, ServletException {
		// TODO Auto-generated method stub
		//将编码方式设置为web.xml中encoding的初始值
		arg0.setCharacterEncoding(encoding);
		arg2.doFilter(arg0, arg1); 
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		//获取web.xml中encoding的初始值
		encoding=arg0.getInitParameter("encoding");	
	}
}

web.xml文件的配置(Eclipse在生成servlet文件时会自动配置web.xml,但是这和实际的filter的配置是不同的,所以必须删除自动配置的servlet,重新配置filter)

  <!-- 部署filter -->
  <filter>
  	<filter-name>MyFilter</filter-name>
  	<filter-class>com.sevend.filter.MyFilter</filter-class>
  	<init-param>
  		<param-name>encoding</param-name>
  		<param-value>utf-8</param-value>
  	</init-param>
  </filter>

  <!-- 完成对过滤器的映射 -->
  <filter-mapping>
  	<filter-name>MyFilter</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics