一、Servlet 类javax.servlet.http.HttpServlet;

 1.是单例模式,一个web容器中只有一个实例。服务器调用它的service方法进行请求处理,
service方法又根据请求的类型分别调用doGet,doPost等方法。
2.由于是单例模式,所以线程不安全
3.自定义Servlet需继承HttpServlet,并重写相应的doGet等方法。方法体内不能调用父类的该方法。 web.xml注册:
<servlet>
<servlet-name>myservlet</servlet-name>
<servlet-class>com.zk.baseservlet.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>myservlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping> 二、Filter 接口javax.servlet.Filter; 1.过滤器首先执行init方法,从web.xml中的filter配置中读取信息进行初始化。只执行一次。
2.客户端的每次请求,都会经过doFilter方法。过滤器必须配置拦截路径。
3.多个过滤器执行流程
控制台输出:

init2 method
init3 method
init method MyFilter1 before
MyFilter2 before
MyFilter3 before
servlet doget method
MyFilter3 after
MyFilter2 after
MyFilter1 after 是个U型流程

Filter1类源码
public class MyFilter1 implements Filter {

    public MyFilter1() {
} public void destroy() {
} public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("MyFilter1 before");
chain.doFilter(request, response);
System.out.println("MyFilter1 after");
} public void init(FilterConfig fConfig) throws ServletException {
System.out.println("init method1");
}
}
MyFilter2,
MyFilter3同上
web.xml注册,3个过滤器都拦截/a路径:
  <filter-mapping>
<filter-name>myfilter1</filter-name>
<url-pattern>/a</url-pattern>
</filter-mapping> <filter-mapping>
<filter-name>myfilter2</filter-name>
<url-pattern>/a</url-pattern>
</filter-mapping> <filter-mapping>
<filter-name>myfilter3</filter-name>
<url-pattern>/a</url-pattern>
</filter-mapping>

分析:init方法在容器启动时候,只执行一次。doFilter则每访问一次路径就执行一次。

三、Listener 接口ServletContextListener
监听器用于监听并接收被监听对象的变化 1.容器启动通知contextInitialized方法在filter和servlet前调用。
2.contextDestroyed方法在容器关闭后,filter和servlet销毁后调用。

  不完善的地方欢迎大家补充

Java Web组件Servlet、Filter、Listener的更多相关文章

  1. JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下)

    JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下) Reference

  2. SpringBoot学习笔记(6)----SpringBoot中使用Servlet,Filter,Listener的三种方式

    在一般的运用开发中Controller已经大部分都能够实现了,但是也不排除需要自己实现Servlet,Filter,Listener的方式,SpringBoot提供了三种实现方式. 1. 使用Bean ...

  3. ServletContextInitializer添加 servlet filter listener

    ServletContextInitializer添加 servlet filter listener https://www.cnblogs.com/pomer-huang/p/9639322.ht ...

  4. servlet filter listener interceptor 知识点

    这篇文章主要介绍 servlet filter listener interceptor 之 知识点.博文主要从 概念,生命周期,使命介绍其区别.详情如下:   概念 生命周期 使命 servlet ...

  5. java web中servlet、jsp、html 互相访问的路径问题

    java web中servlet.jsp.html 互相访问的路径问题 在java web种经常出现 404找不到网页的错误,究其原因,一般是访问的路径不对. java web中的路径使用按我的分法可 ...

  6. 使用Intellij idea新建Java Web项目(servlet) 原理及初步使用

    准备 JDK       (配置JDK_HOME\bin   和 CLASSPATH)   注:JDK8下载已经需要注册了,请使用JDK11(现在是官方长期支持的版本)     对于我们新手来说,JD ...

  7. SpringBoot---注册Servlet,Filter,Listener

    1.概述 1.1.当使用  内嵌的Servlet容器(Tomcat.Jetty等)时,将Servlet,Filter,Listener  注册到Servlet容器的方法: 1.1.1.直接注册Bean ...

  8. Java Web之Servlet中response、request乱码问题解决

    Java Web之Servlet中response.request乱码问题解决   一.request请求参数出现的乱码问题 get请求: get请求的参数是在url后面提交过来的,也就是在请求行中, ...

  9. JAVA WEB 用servlet实现分页,思路比较清晰和简单。

    JAVA WEB 用servlet实现分页,思路比较清晰和简单.借鉴了其他大佬的思路.特别感谢. 是我第一次发表博客,如果有什么错误,欢迎大家指出!,谢谢 一.思路分析 前台一定是有类似这种的界面 点 ...

随机推荐

  1. 浅谈MVC中的service层(转)

    概述 mvc框架由model,view,controller组成,执行流程一般是:在controller访问model获取数据,通过view渲染页面. mvc模式是web开发中的基础模式,采用的是分层 ...

  2. 阿里云物联网套件(iot)设备间通信(M2M)在web端的实践

    之前通过nodejs连接到阿里云物联网mqtt,后又用浏览器连接,总结一下: 由于项目是SPA,使用webpack,关键代码: 同样使用mqtt.js之前先install: npm install - ...

  3. 使用ueditor配置后台接口

    因为后台是java,所以针对的是jsp版本的ueditor. 工程中需要导入jsp目录lib下的jar包.如果是maven管理的工程,可以导入jar包. 上传图片的功能的话,需要后台配置正确.如果需要 ...

  4. Dart 中dynamic 的使用

    void main(){ var a; a=10; b ="Dart"; dynamic b =20; b ="JavaScript" var list =ne ...

  5. SpringBoot 部署到linux环境

    第一部分:Springboot项目部署 说明:工具使用的是IEDA 第一:项目打包 1.在pom文件中添加插件 <build> <plugins> <plugin> ...

  6. PAT乙级考前总结(一)

    数学相关的题目 1001 害死人不偿命的(3n+1)猜想 (15 分) 直接一步步计数 1005 继续(3n+1)猜想 (25 分) 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目 ...

  7. 2018-2019-2 20165313《网络对抗技术》Exp1 缓冲区溢出实验

    实践涉及指令 NOP:NOP指令即"空指令".执行到NOP指令时,CPU什么也不做,仅仅当做一个指令执行过去并继续执行NOP后面的一条指令.(机器码:90) JNE:条件转移指令, ...

  8. python 一些方法的时间测试

    尝试一些方法的不同实现,比较一下时间,电脑比较渣,不过只是做个比较 虽然用python主要是方便,肯定是不快的,不过能快一点还是快一点好 numpy中大量使用同样 shape 的全 0 array,可 ...

  9. python基础——1、python背景及特点——(YZ)

    在之前的两种编程语言(C.Java)的学习之后,迎来新的一种编程语言的学习,但毕竟本着学一样一定要认真学的精神(期望是这样)首先,最最最少不了的是了解编程语言的背景.范围.特点.功能,等等.经过阅读资 ...

  10. Excel常用公式

    转载请注明来源"ExcelHome"并保留原文链接.固定链接:http://www.excelhome.net/lesson/article/excel/1897.html 1.I ...