文档介绍:第四次课(Filter)
什么是Filter
过滤器是用于过滤Servlet的请求和响应,过滤器是在客户端和Servlet之间。当客户端请求某一个Servlet
的时候,请求会先进入Filter的doFilter(),开始处理,处理完成以后,(request, response)
把request,response继续传递,让请求继续往下走,进入Servlet,在Servlet处理完成以后,又重回Filter的
doFilter(),(request, response)下面的语句,完成以后,响应给客户端.
注意:Filter不会产生request和response对象,只是对request和response的值进行修改,起到一个过滤的
request
作用
原理图:
客户端
service()
servlet
doFilter()
filter
doFilter()
response
测试Filter和servlet的生命周期
(1)写一个MyServlet(实现Servlet接口),实现destroy() ,init(),service()和构造方法
(2)写一个MyFilter(实现Filte接口),实现destroy() ,init(),doFilter()和构造方法
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException{
("过滤之前");
//进到过滤,开始处理,处理完成以后,让请求继续往下走,进入Servlet
(request, response);
//在Servlet完成以后,又重回过滤器响应给客户端
("过滤之后");
}
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-.</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/MyServlet</url-pattern>
</servlet-mapping>
<filter>
<!--过滤器的类-->
<filter-name>MyFilter</filter-name>
<filter-.</filter-class>
</filter>
<filter-mapping>
<filter-name>MyFilter</filter-name>
<!-- 表示只过滤MyServlet这一个servlet,其他Servlet不管-->
<servlet-na