ServletContext、webApplicationContext、DispatcherServlet与容器

浅谈容器

  • 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上下文的父容器。

猜你喜欢

转载自blog.csdn.net/a1102325298/article/details/80543544