原文:https://www.yuque.com/books/share/2b434c74-ed3a-470e-b148-b4c94ba14535/tmdy9s
主要内容:
- ServletContext是什么
直接翻译:servlet 上下文。服务器会为每一个“应用”创建一个 ServletContex 对象
ServletContex 对象:创建是在服务器启动时完成的,销毁是在服务器关闭时完成的
所以,结合定义,ServletContex 对象的作用就是在整个Web应用的动态资源(Servlet/JSP)之间共享数据。例如在AServlet中向ServletContext对象保存一个值,然后在BServlet中就可以获取这个值
类似的,这种用来装载共享数据的对象,在JavaWeb中共有4个,习惯的被称为“域对象”
- ServletContext域(Servlet间共享数据)
- Session域(一次会话间共享数据,也可以理解为多次请求间共享数据)
- Request域(同一次请求共享数据)
- Page域(JSP页面内共享数据)
它们都可以看做是map,都有getAttribute()/setAttribute()方法
每一个动态web工程,都应该在WEB-INF下创建一个web.xml,它代表当前整个应用。Tomcat会根据这个配置文件创建ServletContext对象
- 如何获取ServletContext
……..
所以,获取ServletContext的方法共5种(page域这里不考虑,JSP太少用了):
- ServletConfig#getServletContext()
- GenericServlet#getServletContext()
- HttpSession#getServletContext()
- HttpServletRequest#getServletContext()
- ServletContextEvent#getServletContext()
- Filter拦截方式之:REQUEST/FORWARD/INCLUDE/ERROR
Filter 可以设置4种拦截方式。
与重定向不一样,需要把重定向分开;
转发方法
所谓Filter更详细的拦截:
- Servlet映射器
每一个URL要交给哪个Servlet处理,具体的映射规则都由一个映射器决定的,它就是Tomcat中的 Mapper 类
定义了7种映射规则:精确匹配/前缀匹配/扩展名匹配/欢迎列表资源匹配/默认匹配
对于静态资源,Tomcat最后会交由一个叫做DefaultServlet的类来处理;
对于Servlet ,Tomcat最后会交由一个叫做 InvokerServlet的类来处理;
对于JSP,Tomcat最后会交由一个叫做JspServlet的类来处理
- 自定义DispatcherServlet ( 用此解释SpringMVC中的 DispatcherServlet )
- DispatcherServlet与SpringMVC
- conf/web.xml与应用的web.xml