彼方尚有荣光在|

_xiaolin

园龄:2年9个月粉丝:3关注:5

Filter

Filter

1、Filter,什么是过滤器?

1Filter过滤器是JavaWeb的三大组件之一,三大组件分别是:Servlet程序、Listener监听器、Filter过滤器
2Filter过滤器它是JavaEE的规范,也就是接口
3Filter过滤器它的作用数:拦截请求、过滤响应。
4、拦截请求常见的应用场景有:
*权限检查
*日记操作
*事务管理
*……等等

2、Filter的初体验

1、要求在你的web工程下,有一个admin目录下的所有资源(html页面、jpg图片、jsp文件、等等)都必须是用户登录之后才允许访问。

image-20220601084706089

@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpSession session = ((HttpServletRequest) servletRequest).getSession();
Object user = session.getAttribute("user");
if (user != null) {
servletRequest.getRequestDispatcher("/login.jsp").forward(servletRequest, servletResponse);
servletResponse.getWriter().write("请先登录!");
return;
}else{
//让程序继续往下访问用户的目标资源
filterChain.doFilter(servletRequest, servletResponse);
}
}

2、Filter过滤器的使用步骤:

1、编写一个类去实现filter接口
2、实现过滤方法doFilter()
3、到web.xml中配置Filter的拦截路径

3、Filter的生命周期

Filter的生命周期包含几个方法
1、构造器方法
2int初始化方法
第一二步,在web工程启动的时候执行(Filter已经创建)
3、doFilter过滤方法
第三步,每次拦截到请求,就会执行
4、destroy销毁
第四步,停止web工程的时候,就会执行(停止web工程,也会销毁Filter过滤器)

4、FilterConfig类

1、FilterConfig类见名知义,它是Filter过滤器的配置文件类
2、Tomcat每次创建Filter的时候也会同时创建一个FilterConfig类,这里包含了Filter配置文件的配置信息。
3、FIlterConfig类的作用使获取Filter过滤器的配置内容
*获取Filter的名称filter-name的内容
*获取在filter中配置的int-param初始化参数
*获取ServletContext对象
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("2、Filter初始化方法init()");
// *获取Filter的名称filter-name的内容
System.out.println("filter-name:" + filterConfig.getFilterName());
// *获取在filter中配置的int-param初始化参数
System.out.println("初始化参数username的值是:" + filterConfig.getInitParameter("username"));
System.out.println("初始化参数password的值是:" + filterConfig.getInitParameter("password"));
// *获取ServletContext对象
System.out.println("ServletContext对象的值是:" + filterConfig.getServletContext());
}

5、FilterChain过滤器链

Filter 过滤器
Chain 链,链条
FilterChain 就是过滤器链(多个过滤器如何一起工作)

image-20220601132251348

image-20220601133454073

image-20220601134112908

6、Filter的拦截路径

1、精确匹配

<url-pattern>/target.jsp</url-pattern>

2、目录匹配

<url-pattern>/admin/*</url-pattern>

3、后缀名匹配

<url-pattern>*.html</url-pattern>

Filter过滤器它只关心请求的地址是否匹配,不关心请求资源是否存在。

本文作者:_xiaolin

本文链接:https://www.cnblogs.com/SilverStar/p/17415178.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   _xiaolin  阅读(15)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起