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