JavaEE

tech2022-07-11  177

Filter : 过滤器

filter是对客户端访问资源的过滤,符合条件放行,不符合条件不放行,并且可以对目标资源访问前后进行逻辑处理。

使用步骤:步骤:

1.自定义类, 实现Filter接口 2.重点实现doFilter方法 3.注册Filter @WebFilter web.xml-配置] 4.doFilter中, 直接响应, 要么放行 chain.doFilter 5.测试: 发送的是Servlet请求

Filter对象的生命周期:

• Filter何时创建:服务器启动时就创建该filter对象; • Filter何时销毁:服务器关闭时filter销毁。

init(FilterConfig)

xml: <init-param> <param-name>driver</param-name> <param-value>com.mysql.cj.jdbc.Driver</param-value> </init-param> filter: config.getInitParameter("driver"); 可以得到配置信息。

doFilter(ServletRequest,ServletResponse,FilterChain)

• ServletRequest/ServletResponse:每次在执行doFilter方法时web容器负责创建一个request和一个response对象作为doFilter的参数传递进来。该request和response就是在访问目标资源的service方法时的request和response。(要当成request/response用就强转成HttpServlet*类型)

• FilterChain:过滤器链对象,通过该对象的doFilter方法可以放行该请求。

当同位置有多个过滤器时顺序:

web.xml文件中的<filter-mapping>标签顺序

FilterChain: 过滤器链, 由filter-mapping将过滤器连接串起来的 doFilter() -> 执行下一个过滤器, 递归原理,执行结束后会逆序运行doFilter下面的代码。

dispatcher:访问的方式

• REQUEST:默认值,代表直接访问某个资源时执行filter • FORWARD:转发时才执行filter • INCLUDE: 包含资源时执行filter • ERROR:发生错误时 进行跳转是执行filter

最新回复(0)