Java体系知识之过滤器Filter
1 技术简介
(1)过滤器:
净水器
空气净化器
...
(2)JavaWeb组件:
Servlet
Filter
Listener
(3)作用:
适合做一些通用的操作
A.普通意义的公共代码:
跨域请求处理;
字符编码;
B.逻辑方面的公共代码:
登录访问控制:根据是否登录判断
若已登录过,可允许继续访问;
若未登录,不允许继续访问;
权限访问控制:根据是否拥有权限判断
若已拥有权限,可允许访问;
若不拥有权限,不允许访问;
2 过滤器使用步骤(重点)
2.1 使用步骤
(1)创建一个类,实现Filter接口
(2)重写方法
(3)配置过滤器:
web.xml;
注解;
2.2 案例
package com.javasm.filter.basic;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter("/demo01")
public class MyFilterDemo01 implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("执行MyFilterDemo01.doFilter()");
}
}
3 过滤器执行过程(重点)
3.1 内容概述
(1)当请求过来时,先进入过滤器执行
(2)若过滤器有放行代码,再找对应的Servlet执行
(3)最后执行放行代码下面的语句
3.2 案例
package com.javasm.filter.basic;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter("/demo02")
public class MyFilterDemo02 implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("执行MyFilterDemo02.doFilter()");
filterChain.doFilter(servletRequest,servletResponse);
System.out.println("执行MyFilterDemo02过滤器放行代码下面的语句");
}
}
4 过滤器生命周期
4.1 内容概述
(1)服务器启动时,创建Filter实例,触发init方法执行
(2)当有请求访问时,执行doFilter方法
(3)服务器正常关闭时,销毁Filter实例,触发destroy方法执行
4.2 案例
package com.javasm.filter.basic;
import javax.servlet.*;
import javax.servlet.annotation