zoukankan      html  css  js  c++  java
  • servlet、过滤器、监听器、拦截器之间的关系和区别

    一、概念

    1.什么是servlet

    servlet是一个接口、定义了一套处理网络请求的规范,所有实现servlet的类,都需要实现它那五个方法,其中最主要的是两个生命周期方法 init()和destroy(),还有一个处理请求的service(),也就是说,所有实现servlet接口的类,或者说,所有想要处理网络请求的类,都需要回答这三个问题:

    • 你初始化时要做什么
    • 你销毁时要做什么
    • 你接受到请求时要做什么

    servlet是一个规范,那实现了servlet的类,就能处理请求了吗?

    答案是,不能。

    servlet不会直接和客户端打交道!因为我们从来不会在servlet中写什么监听8080端口的代码。那请求怎么来到servlet呢?答案是servlet容器,比如我们最常用的tomcat,我们会把servlet部署到容器中,不然servlet就不会起作用。tomcat才是与客户端直接打交道的家伙,他监听了端口,请求过来后,根据url等信息,确定要将请求交给哪个servlet去处理,然后调用那个servlet的service方法,service方法返回一个response对象,tomcat再把这个response返回给客户端。

    2.什么是过滤器

    filter是一个可以复用的代码片段,可以用来转换HTTP请求、响应和头信息。Filter不像Servlet,它不能产生一个请求或者响应,它只是修改对某一资源的请求,或者修改从某一的响应。

    filter能够在一个请求到达servlet之前预处理用户请求,也可以在离开servlet时处理http响应:
            在执行servlet之前,首先执行filter程序,并为之做一些预处理工作;
            根据程序需要修改请求和响应;
            在servlet被调用之后截获servlet的执行

    3.什么是监听器

    web监听器是一种Servlet中的特殊的类,它们能帮助开发者监听web中的特定事件,比如ServletContext,HttpSession,ServletRequest的创建和销毁;变量的创建、销毁和修改等。可以在某些动作前后增加处理,实现监控。

     servlet2.4规范中提供了8个listener接口,可以将其分为三类,分别如下:
             第一类:与servletContext有关的listner接口。包括:ServletContextListener、ServletContextAttributeListener
             第二类:与HttpSession有关的Listner接口。包括:HttpSessionListner、 HttpSessionAttributeListener、HttpSessionBindingListener、HttpSessionActivationListener;
             第三类:与ServletRequest有关的Listener接口,包括:ServletRequestListner、ServletRequestAttributeListener

    通常使用监听器做以下的内容:

      统计在线人数,利用HttpSessionLisener

      加载初始化信息:利用ServletContextListener

      统计网站访问量

      实现访问监控

    4.什么是拦截器

    与过滤器十分相似,通过层层拦截,处理用户的请求和响应。

    二、tomcat、过滤器、servlet、拦截器、controller之间的关系

  • 相关阅读:
    NSArray的几个方法的简单使用
    内存管理常用知识点总结
    iOS是开发之 对数组中的元素排序后输出
    iOS开发之——单例的几种设计方式
    图论二:图的存储
    图论一:基本概念
    树状数组(hdu-4325,hdu-1166,pat-1057)
    pat1079+1086+1090+1094(树的遍历)感想
    pat 甲级 1086(树的遍历||建树)
    static关键字的功能
  • 原文地址:https://www.cnblogs.com/bear7/p/13666583.html
Copyright © 2011-2022 走看看