一、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. 2018最新Python视频教程

    基础+就业Python视频教程需要的加我q:1139721002备注来意

  2. skynet的火焰图

    之前搞过一下systemtap(systemtap折腾笔记),可惜很快琐事缠身,没有继续搞下去.最近偷空搞了一下,有点意思. 章大大的思路,是用perl生成systemtap脚本,从/proc/$pi ...

  3. SDKManager无法更新问题解决办法

    用大连东软的镜像代理 配置步骤 启动 Android SDK Manager ,打开主界面,依次选择「Tools」.「Options...」,弹出『Android SDK Manager - Sett ...

  4. Vue常见问题解决办法(一)ESLint检查报错

    vue.js报错“Do not use 'new' for side effects“(main.js里)解决办法 ESLint工具检查代码质量,main.js里的原代码是这样的: new Vue({ ...

  5. Restful levels&HATEOAS详解

    RESTful: Rest是一种软件架构风格.设计风格,而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等 ...

  6. React Native 开发环境搭建

    1.安装 Python 2,不知道是否已支持 Python 3 2.安装 node,npm... 修改 npm 镜像,不建议使用 cnpm,cnpm 安装模块的路径与 npm 有差别 npm conf ...

  7. Assembly Experiment5

    Answer to the experiment(1),(2),(3),(4) Experiment(5): Screenshots&Results: from the command u w ...

  8. Demystify Git

    Git虽然很时髦,但是不好学,不好用. 关键是不好理解. 本文用最通俗易懂又直观的方式,帮助大家理解git, git的内部组织, 基本概念,还有常用 的工作流程. 本文来自墙外. 习某某说:" ...

  9. promise在angular中的基本使用

    promise在angular中的基本使用 <!DOCTYPE html> <html ng-app="myApp"> <head> <m ...

  10. day-13装饰器

    函数的嵌套定义 概念:在一个函数的内部定义另一个函数 为什么要有函数的嵌套定义:1)函数fn2想直接使用fn1函数的局部变量,可以将fn2直接定义到fn1的内部,这样fn2就可以直接访问fn1的变量2 ...