filter过滤器,本质上就是用来过滤servlet发送过来的请求,可以将一些乱码,骂人的词什么的过滤掉。
要实现这个方法,就要实现一个类,javax.servlet下面的Filter,注意不要导错包,要不然会出错。
实现接口之后,就要重写三个方法,
init, doFilter,和destory
init初始化,doFilter过滤,destory销毁。
具体的代码在doFilter里面实现。
过滤乱码什么的,例如:
import javax.servlet.*;
import java.io.IOException;
public class CharacterEncodingFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
servletResponse.setCharacterEncoding("utf-8");
servletResponse.setContentType("text/html;charset=UTF-8");
//这段代码必须加,不加就会卡主,无法往下继续运行!!
//这段代码的作用就是,转发给下一个条链,如果下一链存在的话,如果不存在就直接跳转到servlet
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
}
}
写完这个类之后,记得在xml里面配好filter的配置,跟servlet差不多。
不过filterMapping里面的urlpattern 配置的是在那些地方生效。
例如
<filter-mapping>
<filter-name>filter</filter-name>
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
这个就是在servlet下面的所有资源都过滤。
这个doFilter的跳转顺序,就是xml中配置的顺序,如果都在同一目录的话,会优先选上面的。