zoukankan      html  css  js  c++  java
  • filter vs servlet

     

    主要从如下四个方面介绍他们之间的区别:
                    1.概念。
                    2.生命周期。
                    3.职责。

                    4.执行过程。

        一、概念:
     
             1、servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层。
     
             2、filter:filter是一个可以复用的代码片段,可以用来转换HTTP请求、响应和头信息。Filter不像Servlet,它不能产生一个请求或者响应,它只是修改对某一资源的请求,或者修改从某一的响应。


           二、生命周期:
     
            1、servlet:servlet的生命周期始于它被装入web服务器的内存时,并在web服务器终止或重新装入servlet时结束。servlet一旦被装入web服务器,一般不会从web服务器内存中删除,直至web服务器关闭或重新结束。
            (1)、装入:启动服务器时加载Servlet的实例;
            (2)、初始化:web服务器启动时或web服务器接收到请求时,或者两者之间的某个时刻启动。初始化工作有init()方法负责执行完成;
            (3)、调用:从第一次到以后的多次访问,都是只调用doGet()或doPost()方法;
            (4)、销毁:停止服务器时调用destroy()方法,销毁实例。 
     
            2、filter:(一定要实现javax.servlet包的Filter接口的三个方法init()、doFilter()、destroy(),空实现也行)
            (1)、启动服务器时加载过滤器的实例,并调用init()方法来初始化实例;
            (2)、每一次请求时都只调用方法doFilter()进行处理;

            (3)、停止服务器时调用destroy()方法,销毁实例。

      三、职责
     
           1、servlet:
     
            创建并返回一个包含基于客户请求性质的动态内容的完整的html页面;
            创建可嵌入到现有的html页面中的一部分html页面(html片段);
            读取客户端发来的隐藏数据;
            读取客户端发来的显示数据;
            与其他服务器资源(包括数据库和java的应用程序)进行通信;
            通过状态代码和响应头向客户端发送隐藏数据。
     
           2、filter:
     
            filter能够在一个请求到达servlet之前预处理用户请求,也可以在离开servlet时处理http响应:
           
    在执行servlet之前,首先执行filter程序,并为之做一些预处理工作;
           
    根据程序需要修改请求和响应;
           
    servlet被调用之后截获servlet的执行

            四、区别:

          1,servlet 流程是短的,url传来之后,就对其进行处理,之后返回或转向到某一自己指定的页面。它主要用来在 业务处理之前进行控制.
            2,filter 流程是线性的, url传来之后,检查之后,可保持原来的流程继续向下执行,被下一个filter, servlet接收等,而servlet 处理之后,不会继续向下传递。filter功能可用来保持流程继续按照原来的方式进行下去,或者主导流程,而servlet的功能主要用来主导流程。
             filter可用来进行字符编码的过滤,检测用户是否登陆的过滤,禁止页面缓存等

    五、执行流程图:

             1、servlet:

     

              2、filter:

             

     

    还有listener和interceptor,他们四者的区别和联系servlet

  • 相关阅读:
    解决PKIX:unable to find valid certification path to requested target 的问题
    Linux 上的常用文件传输方式介绍与比较
    用VNC远程图形化连接Linux桌面的配置方法
    红帽中出现”This system is not registered with RHN”的解决方案
    linux安装时出现your cpu does not support long mode的解决方法
    CentOS SSH配置
    es6扩展运算符及rest运算符总结
    es6解构赋值总结
    tortoisegit安装、clon、推送
    es6环境搭建
  • 原文地址:https://www.cnblogs.com/shoshana-kong/p/8889304.html
Copyright © 2011-2022 走看看