博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Servlet、Filter和Listener
阅读量:6872 次
发布时间:2019-06-26

本文共 4242 字,大约阅读时间需要 14 分钟。

一、Servlet、Filter和Listener的功能

Servlet的功能:Servlet是一个运行在web服务器上的小应用程序,用于接收来自客户端的请求,进行处理及返回响应。(Servlet本身实际上已经可以完成Filter和Listener的功能,但是把这两个独立出来形成组件,实际上是实现了功能复用和可插拔式的架构

Filter的功能:Filter,即过滤器,是一种在Servlet获取请求前、应答后进行功能处理的技术。(装饰器模式

Listener的功能:Listener用于监听对象的变化而进行相应的功能处理。在本文中,Listener是Servlet的监听器,Servlet的操作事件和生命状态变化会触发相应的监听器。(观察者模式

二、Servlet、Filter和Listener的生命周期对比

(一)、这三个组件的生命周期皆是由web容器控制

阶段 Servlet Filter Listener
初始化 void init(ServletConfig config) void init(FilterConfig)  
处理 void service(ServletRequest req, ServletResponse res) void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)  
销毁 void destroy() void destroy()  

(二)、相应类和配置的写法,可以发现Servlet和Filter很相似。

这两篇文章写得不错《》《》。

这里的主要就是注意一下他们都实现了什么样的方法。本文中的监听器只是对对象生命周期变化进行监控,另外还有的监听器是对对象操作的事件进行监控,如:HttpSessionAttributeListener。

package com.kwan.web.three;import java.io.IOException;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServlet;public class DemoServlet extends HttpServlet {    @Override    public void service(ServletRequest arg0, ServletResponse arg1)            throws ServletException, IOException {        // TODO Auto-generated method stub        super.service(arg0, arg1);    }    @Override    public void destroy() {        // TODO Auto-generated method stub        super.destroy();    }    @Override    public void init() throws ServletException {        // TODO Auto-generated method stub        super.init();    }    @Override    public void init(ServletConfig config) throws ServletException {        // TODO Auto-generated method stub        super.init(config);    }    }package com.kwan.web.three;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;public class DemoFilter implements Filter {    @Override    public void destroy() {        // TODO Auto-generated method stub            }    @Override    public void doFilter(ServletRequest arg0, ServletResponse arg1,            FilterChain arg2) throws IOException, ServletException {        // TODO Auto-generated method stub            }    @Override    public void init(FilterConfig arg0) throws ServletException {        // TODO Auto-generated method stub            }}package com.kwan.web.three;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import javax.servlet.ServletRequestEvent;import javax.servlet.ServletRequestListener;import javax.servlet.http.HttpSessionEvent;import javax.servlet.http.HttpSessionListener;//listen the lifecycle of object HttpSession, ServletContext, ServletRequestpublic class DemoListener implements HttpSessionListener, ServletContextListener, ServletRequestListener {    @Override    public void requestDestroyed(ServletRequestEvent arg0) {        // TODO Auto-generated method stub            }    @Override    public void requestInitialized(ServletRequestEvent arg0) {        // TODO Auto-generated method stub            }    @Override    public void contextDestroyed(ServletContextEvent arg0) {        // TODO Auto-generated method stub            }    @Override    public void contextInitialized(ServletContextEvent arg0) {        // TODO Auto-generated method stub            }    @Override    public void sessionCreated(HttpSessionEvent arg0) {        // TODO Auto-generated method stub            }    @Override    public void sessionDestroyed(HttpSessionEvent arg0) {        // TODO Auto-generated method stub            }}
ServletDemo
com.kwan.web.three.DemoServlet
ServletDemo
/servlet
FilterDemo
com.kwan.web.three.DemoFilter
FilterDemo
/*
com.kwan.web.three.DemoListener

三、装饰器模式和观察者模式(以后有时间再补充)

转载于:https://www.cnblogs.com/cheuk-kwan/p/4853583.html

你可能感兴趣的文章
一个多项式问题
查看>>
Ansible 入门指南 - 安装及 Ad-Hoc 命令使用
查看>>
python练习七—P2P下载
查看>>
巨强大的免费LOGO在线制作工具
查看>>
_____________________背包——————————————————2546——————————————...
查看>>
zencart通过产品id 批量添加推荐产品
查看>>
实习第六天
查看>>
Careercup | Chapter 4
查看>>
@Value的使用
查看>>
软件工程学期总结
查看>>
解析html和采集网页的神兵利器
查看>>
自定义Json解析工具
查看>>
3Sum
查看>>
python-集合(set)
查看>>
Spring实例化bean顺序问题,导致注入失败
查看>>
Sublime Text 3编辑器的SublimeRPEL快捷键设置
查看>>
ScrollView嵌套GridView的解决办法
查看>>
【学习笔记】JDBC数据库连接技术(Java Database Connectivity)
查看>>
20180206
查看>>
乐鲜生活后台管理系统--项目总结
查看>>