Servlet和Filter的区别

时间:2023-03-09 13:01:19
Servlet和Filter的区别

1.Filter是一个接口,而Servlet是一个类继承于Httpservlet

2.生命周期的不同,Filter在Web App被加载时,创建该Filter的实例,并调用init()方法(仅创建一个实例),当Web App被卸载/关闭时,调用destroy()方法.

而Servlet默认情况下,第一次访问才创建实例,该实例不会销毁,直到应用关闭.

3.Servlet 流程是短的,url传来之后,就对其进行处理,之后返回或转向到某一自己指定的页面。它主要用来在 业务处理之前进行控制.

Filter 流程是线性的, url传来之后,检查之后,可保持原来的流程继续向下执行,被下一个filter, servlet接收等,而servlet 处理之后,不会继续向下传递。filter功能可用来保持流程继续按照原来的方式进行下去,或者主导流程,而servlet的功能主要用来主导流程。
 Filter可用来进行字符编码的过滤,检测用户是否登陆的过滤,禁止页面缓存等