新手笔记 java Servlet 中文乱码问题过滤器

时间:2022-08-15 21:11:11

在Servlet中的doGet和doPost请求都需要解决中文乱码问题,

request.setCharacterEncoding("utf-8");
respone.setCharacterEncoding("utf-8");

也就是每次创建类去继承HttpServlet重写方法时都需要每次输入这段代码去解决乱码的问题

这个时候我们就可以创建一个过滤器,让每一次的请求都需要被这个过滤器过滤

如下,创建一个类去实现Filter接口   ,Filter接口中有一个doFilter方法,当我们编写好Filter,并配置对哪个web资源进行拦截后,WEB服务器每次在调用web资源的service方法之前,
都会先调用一下filter的doFilter方法  ,

配置的方法跟Servlet的配置相似:

<!--配置过滤器-->

<filter>
<filter-name>cf</filter-name>
<filter-class>com.web1.servlets.CharacterFilter</filter-class>     <!-- "/*"实现Filter接口的类的路径 -->
</filter>

<!--映射过滤器-->
<filter-mapping>
<filter-name>cf</filter-name>
<url-pattern>/*</url-pattern>  <!--"/*"表示拦截所有的请求-->
</filter-mapping>

重写doFiter方法:

 

public class CharacterFilter implements Filter{

@Override
public void destroy() {
// TODO Auto-generated method stub

}

@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
throws IOException, ServletException {


// 对request、response进行一些预处理
arg0.setCharacterEncoding("utf-8");
arg1.setCharacterEncoding("utf-8");
arg2.doFilter(arg0, arg1);

}

@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}

 

以上纯属本人(初学者)的一些见解 ,第一次写博 如果有什么错误的地方还请谅解,可以的话也可以给出你们宝贵的意见,谢谢