为了避免处理一个项目的多个servlet的中文乱码问题时,每个servlet都要写入 如下的麻烦:
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8")
可以在web项目中写入一个过滤器类:
1. 在web.xml中配置
<filter>
<filter-name>filter</filter-name>
<filter-class>Filterpak.CharacterFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2.新建一个过滤器类
class CharacterRequest extends HttpServletRequestWrapper{
private HttpServletRequest request;
public CharacterRequest(HttpServletRequest request)
{
super(request);
this.request = request;
}
public String getParameter(String name){
String value = super.getParameter(name);
if(value==null)
{return null;}
String method = super.getMethod();
if("GET".equalsIgnoreCase(method))
{
try{
System.out.println(method+3);
value= new String(value.getBytes("iso8859-1"),"UTF-8");
System.out.println(value);
}
catch(Exception ex){
ex.toString();
}
}
return value;
}
}
3.servlet类中的调用(注意参数要加FilterChain )
.....
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
.....
CharacterRequest characterRequest = new CharacterRequest(request);
chain.doFilter(characterRequest, response);
......
}
......