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>