1.过滤器:请求 、响应都需要处理
2.需要过滤器放行
要想将一个普通的class变为一个具有特定功能的类(过滤器,拦截...),要么继承父类,要么实现接口,要么增加注解
过滤器:
实现一个Filter接口
init()、destroy() 原理、执行时机 同Servlet
配置过滤器,类似Servlet
web.xml:
<filter>
<filter-name> AA</filter-name>
<filter-class>com.ext.filter.FilterDemo</filter-class>
</filter>
<filter-mapping>
<filtername>AA</filter-name>
<url-pattern>/MyServlet</url-parttern>
</filter-mapping>
注解配置:在过滤器类上加:@WebFilter("/FilterServlet")
在servlet类上加:@WebServlet("/FilterServlet")
@WebFilter,@WebServlet两者中的url-pattern保持一致,指向要访问的Servlet
如果写成@WebFilter("/*"),表示拦截一切请求:每一次访问服务器都会被拒绝
dispatcher请求方式:
REQUEST:拦截HTTP请求
FORWARD:只拦截通过请求转发方式的请求
INCLUDE:只拦截通过request.getRequestDIspather("").include()、通过<jsp:include page=""/>
ERROR:只拦截<error-page>发出的请求
可以配置多个过滤器,哪个mapping在前,就先执行哪个
而使用注解则是根据名字的来判断优先级,可以添加数字来控制执行顺序:filter1,filter2,先执行第一个,再执行第二个