1 借助spring

web.xml中增加

 1<filter>   
 2<filter-name>Set Character Encoding</filter-name>   
 3<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>   
 4<init-param>   
 5    <param-name>encoding</param-name>   
 6    <param-value>utf8</param-value>   
 7</init-param>   
 8</filter>   
 9<filter-mapping>   
10    <filter-name>Set Character Encoding</filter-name>   
11    <url-pattern>/*</url-pattern>   
12</filter-mapping>
13
14

配置文件即可,如果不用spring怎么办呢?有办法啊

 1<filter>
 2   <filter-name>encodingFilter</filter-name>
 3   <filter-class>com.rda.commons.filter.ChineseFilter</filter-class>
 4   <init-param>
 5    <param-name>encoding</param-name>
 6    <param-value>UTF-8</param-value>
 7   </init-param>
 8   <init-param>
 9    <param-name>forceEncoding</param-name>
10    <param-value>true</param-value>
11   </init-param>
12</filter>
13<filter-mapping>
14   <filter-name>encodingFilter</filter-name>
15   <url-pattern>/*</url-pattern>
16</filter-mapping>
17
18

配置文件,然后呢,转码的过滤器就要自己写咯

 1package com.filter;
 2
 3import java.io.IOException;
 4import javax.servlet.Filter;
 5import javax.servlet.FilterChain;
 6import javax.servlet.FilterConfig;
 7import javax.servlet.ServletException;
 8import javax.servlet.ServletRequest;
 9import javax.servlet.ServletResponse;
10import javax.servlet.http.HttpServlet;
11import javax.servlet.http.HttpServletRequest;
12import javax.servlet.http.HttpServletResponse;
13
14/**
15
16* 创建人:金鑫
17* 创建时间:2008-9-21 下午03:27:03
18* 类作用:中文转码过滤器
19*
20*/

21@SuppressWarnings("serial")
22public class ChineseFilter extends HttpServlet implements Filter
23{
24private FilterConfig filterConfig;
25
26public void init(FilterConfig filterConfig) throws ServletException
27{
28   this.filterConfig = filterConfig;
29}

30
31public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
32{
33   try
34   {
35    String encoding = filterConfig.getInitParameter("encoding");
36    //从WEB.xml配置文件中取出参数,这样我们可以通过配置修改编码格式.
37    request.setCharacterEncoding(encoding);//设置请求的编码格式
38
39    filterChain.doFilter(request, response);
40   }

41   catch (ServletException sx)
42   {
43    filterConfig.getServletContext().log(sx.getMessage());
44   }

45   catch (IOException iox)
46   {
47    filterConfig.getServletContext().log(iox.getMessage());
48   }

49}

50
51public void destroy()
52{
53}

54
55protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException
56{
57   super.doGet(arg0, arg1);
58}

59
60protected void doPost(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException
61{
62   super.doPost(arg0, arg1);
63}

64
65/**
66* @function 验证数据是否为空,如果为空则转换
67@param param
68@return String
69*/

70public String checkNull(String param)
71{
72   if (param == null || param.equals(""))
73   {
74    return "";
75   }

76   else
77   {
78    return param;
79   }

80}

81}

82
83

OK,完美解决掉啦。

其实解决乱码很简单的,就是通过过滤器来实现的,呵呵很简单吧?

本文来自“青岛金鑫-java技术攻略”url:http://hi.baidu.com/%C7%E0%B5%BA%BD%F0%F6%CE/blog/item/a726f523915fe4559922ed57.html