文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

JavaWeb开发中过滤器和监听器使用详解

2022-11-13 19:01

关注

1 Filter

1.1 Filter简介

1.2 Filter的快速入门

Filter和Servlet很相像,步骤也是一样的。

1.2.1 创建Filter类

注意:此处导入的Filter 是Javax Servlet包下的

@WebFilter("/index.jsp")
public class DemoFilter01 implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("1.init.......");
    }
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        System.out.println("2.放行前.....");
        chain.doFilter(request,response);
        System.out.println("4.放行后.....");
    }
    @Override
    public void destroy() {
        System.out.println("5.destory....");
    }
}

1.2.2 访问index.jsp

由上图分析所致,当我们访问index.jsp的时候,会调用Filter,那么我们用代码检验一下上面的流程图。

**按照流程图,正确的输出应该是1、2、3、4、5,**访问一下index.jsp

<html>
<body>
<h2>Hello World!</h2>
<%
    System.out.println("3. 我是index.jsp ......");
%>
</body>
</html>

结果证明流程图是正确的!

1、放行后访问对应资源,资源访问完成后,还会回到Filter吗?

2、如果回到Filter中,是重头执行还是执行放行后的逻辑呢?

放行后的逻辑

1.3 Filter的拦截路径的配置

配置在**@WebFilter(“”)**中,主要有以下四类

1.4 过滤器链

1.4.1 过滤器链简介

一个web路径,可以配置多个过滤器,这多个过滤器就被称为过滤器链。

流程图如下:

见图知意:

当web应用有一个A一个B过滤器组成的过滤器链时,A放行后,会来到B过滤器。只有两个过滤器都放行,才会访问到相应的资源。随后,按照怎么来的,怎么返回的方式,执行B、A的放行后逻辑

注意:

为什么是按照A、B,而不是B、A呢?

你以为我瞎说的?其实不然,**排序方式即为按照字符串排序,**先后执行。就是字符串排序小的限制性。

1.4.2 过滤器链的例子

由上面的流程图可知,浏览器会按照DemoFilter01 DemoFilter02 的方式 访问过滤器链,所以我们配置了两个过滤器类。

@WebFilter("/index.jsp")
public class DemoFilter01 implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("DemoFilter01 init.......");
    }
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        System.out.println("1.DemoFilter01 doFilter.....");
        chain.doFilter(request,response);
        System.out.println("5.DemoFilter01 doFilter end.....");
    }
    @Override
    public void destroy() {
        System.out.println("DemoFilter01 destory....");
    }
}
@WebFilter("/index.jsp")
public class DemoFilter02 implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("DemoFilter02 init......");
    }
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        System.out.println("2.DemoFilter02 doFilter....");
        chain.doFilter(request,response);
        System.out.println("4.DemoFilter02 doFilter end....");
    }
    @Override
    public void destroy() {
        System.out.println("DemoFilter02 destory.....");
    }
}
<html>
<body>
<h2>Hello World!</h2>
<%
    System.out.println("3. index.jsp ......");
%>
</body>
</html>

效果图如下:

2 Listener

2.1 概念

2.2 监听器的使用

@WebListener
public class DemoListener01 implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("contextInitialized....");
    }
    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("contextDestroyed....");
    }
}

当启动Tomcat的时候,会自动调用!

ntln(“contextInitialized…”);

}

@Override
public void contextDestroyed(ServletContextEvent sce) {
    System.out.println("contextDestroyed....");
}

}

当启动Tomcat的时候,会自动调用!

![image-20220916172910166](https://img-blog.csdnimg.cn/img_convert/7d4ee33099f9d23fddadcfc5140ab6f4.png)

到此这篇关于Java Web开发中过滤器和监听器使用详解的文章就介绍到这了,更多相关JavaWeb过滤器和监听器内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯