浅谈容器
- ServletContext的由来
- ServletContext、webApplicationContext、DispatcherServlet之间的关系
- 上下文其实就是容器,通过键值对存储信息,可以在view(jsp,freemarker等)上按照你的逻辑展示出来
servlet
大家做web开发的都应该知道servlet,它是一些的框架的底层。大部分框架都是对它的封装而来的,比如:很牛逼的spring。
那么问题来了servlet
是什么呢?
先从请求说起,我们在浏览器地址栏上输入一个网址时,比如 https://www.baidu.com/。当我们按下回车后,其实这个请求已经通过http协议发送到了web服务器上。web服务器会对这个请求进行相应的处理返回我们想要的东西,比如:一张好看的图片、各种小说。
servlet
其实就是用来处理这个请求的。
Servlet三大域对象的应用
- request
- session
- application(ServletContext)
request(请求),一个用户可有多个;
session(会话),一个用户一个,可以保持请求的状态,让web服务器识别出你的身份;
servletContext,所有用户共用一个。所以,为了节省空间,提高效率,ServletContext中,要放必须的、重要的、所有用户需要共享的线程又是安全的一些信息(比如可以存放多个页面中公共的动态数据,可以起到一个缓存的作用)。
tomcat
一个web服务器,用来处理一些http请求。当我们将一个项目打成war部署到webapps下,在tomcat启动后就会生成一个对应的
context
(通过设置一个监听器,当tomcat启动时自动创建一个全局的ServletContext
)。这个里面会包含很多servlet
,其实context
就可以理解为servlet的容器。对应到java的代码里,context
就是ServletContext
这个类。ServletContext
是一个全局的储存信息的空间,服务器开始就存在,服务器关闭才释放。ServletContext
通过键值对(Map)将serlvet存储。
ServletContext、webApplicationContext、DispatcherServlet之间的关系
WebApplicationContext(ioc容器)需要依赖servletContext这个宿主环境。
DispatcherServlet上下文可以访问WebApplicationContext上下文中的bean,反之则不行。因为WebApplicationContext是dispatcherServlet上下文的父容器。
https://blog.csdn.net/a1102325298/article/details/80543544