原文:https://www.yuque.com/books/share/2b434c74-ed3a-470e-b148-b4c94ba14535/tmdy9s
    主要内容:

    • ServletContext是什么

    直接翻译:servlet 上下文。服务器会为每一个“应用”创建一个 ServletContex 对象
    ServletContex 对象:创建是在服务器启动时完成的,销毁是在服务器关闭时完成的
    所以,结合定义,ServletContex 对象的作用就是在整个Web应用的动态资源(Servlet/JSP)之间共享数据。例如在AServlet中向ServletContext对象保存一个值,然后在BServlet中就可以获取这个值
    Servlet(下) - 图1
    类似的,这种用来装载共享数据的对象,在JavaWeb中共有4个,习惯的被称为“域对象”

    1. ServletContext域(Servlet间共享数据)
    2. Session域(一次会话间共享数据,也可以理解为多次请求间共享数据)
    3. Request域(同一次请求共享数据)
    4. Page域(JSP页面内共享数据)

    它们都可以看做是map,都有getAttribute()/setAttribute()方法
    每一个动态web工程,都应该在WEB-INF下创建一个web.xml,它代表当前整个应用。Tomcat会根据这个配置文件创建ServletContext对象

    • 如何获取ServletContext

    ……..
    所以,获取ServletContext的方法共5种(page域这里不考虑,JSP太少用了):

    1. ServletConfig#getServletContext()
    2. GenericServlet#getServletContext()
    3. HttpSession#getServletContext()
    4. HttpServletRequest#getServletContext()
    5. ServletContextEvent#getServletContext()
    • Filter拦截方式之:REQUEST/FORWARD/INCLUDE/ERROR

    Filter 可以设置4种拦截方式。
    与重定向不一样,需要把重定向分开;
    Servlet(下) - 图2
    转发方法
    Servlet(下) - 图3
    所谓Filter更详细的拦截:
    Servlet(下) - 图4

    • Servlet映射器

    每一个URL要交给哪个Servlet处理,具体的映射规则都由一个映射器决定的,它就是Tomcat中的 Mapper 类
    定义了7种映射规则:精确匹配/前缀匹配/扩展名匹配/欢迎列表资源匹配/默认匹配

    对于静态资源,Tomcat最后会交由一个叫做DefaultServlet的类来处理;
    对于Servlet ,Tomcat最后会交由一个叫做 InvokerServlet的类来处理;
    对于JSP,Tomcat最后会交由一个叫做JspServlet的类来处理

    • 自定义DispatcherServlet ( 用此解释SpringMVC中的 DispatcherServlet )
    • DispatcherServlet与SpringMVC
    • conf/web.xml与应用的web.xml