过滤器
Filter是servlet中的特殊类,用于拦截servlet请求并处理
定义一个过滤器的步骤
1.定义一个java类,实现Filter接口
2.重写其中的抽象方法
3.在web.xml配置文件中,配置过滤器拦截请求
例如:exampleFilter.java
public class exampleFilter implements Filter{
@Override
public void init(FilterConfig filterConfig) throws ServletException { }
@Override
public void doFilter
(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException,ServletException{
//使用子接口
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
if(example!=true){
//需要被拦截
//进行拦截操作
}else{
chain.doFilter(req,resp);
//使用了doFilter方法之后才会执行后续的servlet组件
}
}
@Override
public void destroy(){
}
}
含有初始化参数的 exampleFilter2.java
public class exampleFilter2{
@Override
public void init(FilterConfig filterConfig) throws ServletException{
this.filterConfig = filterConfig;
}
@Override
public void doFilter
(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException,ServletException{
//获取参数
filterConfig.getInitParameter("length");
}
@Override
public void destroy(){
}
}
web.xml配置文件
<filter>
<filter-name>exampleFilter</filter-name>
<filter-class>filter.exampleFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>exampleFilter</filter-name>
<url-pattern>/example</url-pattern>
</filter-mapping>