应用一:解决tomcat下中文乱码问题(先来个简单的)
在tomcat下,我们通常这样来解决中文乱码问题:
过滤器代码:
- package
filter; -
- import
java.io.*; - import
javax.servlet.*; - import
javax.servlet.http.*; - import
wrapper.GetHttpServletRequestWra pper; -
- public
class ContentTypeFilter implements Filter { -
-
private String charset = "UTF-8"; -
private FilterConfig config; -
-
public void destroy() { -
System.out.println(config.getFilterName()+"被销毁"); -
charset = null; -
config = null; -
} -
-
public void doFilter(ServletRequest request, ServletResponse response, -
FilterChain chain) throws IOException, ServletException { -
//设置请求响应字符编码 -
request.setCharacterEncoding(charset); -
response.setCharacterEncoding(charset); -
-
HttpServletRequest req = (HttpServletRequest)request; -
-
-
System.out.println("----请求被"+config.getFilterName()+"过滤"); -
//执行下一个过滤器(如果有的话,否则执行目标servlet) -
chain.doFilter(req, response); -
-
System.out.println("----响应被"+config.getFilterName()+"过滤"); -
-
} -
-
public void init(FilterConfig config) throws ServletException { -
this.config = config; -
String charset = config.getServletContext().getInitParameter("charset"); -
if( charset != null && charset.trim().length() != 0) -
{ -
this.charset = charset; -
} -
} -
- }
web.xml中过滤器配置
<!--将采用的字符编码配置成应用初始化参数而不是过滤器私有的初始化参数是因为在JSP和其他地方也可能需要使用-->
}
修改过滤器的doFilter方法 代码如下:
总结:自己写类继承HttpServletRequestWrappe
参考:
http://www.javaeye.com/topic/483158
http://fishhappy365.javaeye.com/blog/484185
http://www.javaeye.com/topic/220230