web服务器和应用服务器区别

一、服务器和容器概述
Web服务器是一种提供web服务的软件或主机,即运行Web服务器软件或装有Web服务器软件的计算机。它处理HTTP协议,响应针对静态页面或图片的请求(静态请求),有的还能处理动态请求,这些请求会委托给其他程序(如扩展、某种语言的解释引擎或Web容器)。常见的Web服务器包括Apache、IIS、Tomcat等。而Web容器是一种服务程序,它在服务器的每个端口上都有一个相应的服务程序来处理从客户端发出的请求。Web容器如IIS、Tomcat等,用于管理从客户端到Web应用的各种请求和响应。
二、服务器中的容器类型及其作用
1. Web容器
2. Servlet容器
Servlet容器是Web服务器的一部分,负责管理Servlet,用于处理动态请求。它通过接收Web页面的请求,然后重定向到Servlet对象,再将结果返回给客户端。Servlet容器还负责加载类、实例化Servlet、调用其service方法等。
3. Spring容器
Spring容器用于管理Service和Dao层,负责创建、配置和管理bean。
4. SpringMVC容器
SpringMVC容器管理Controller和视图解析器等。它是Spring框架的一个模块,用于构建企业级Java Web应用程序。
5. SpringBoot容器
SpringBoot容器是一个应用容器,管理所有bean。它是Spring的一个子项目,旨在简化Spring应用的开发和部署。
三、容器间的关系及管理范围
1. 各种容器的管理范围:Web容器管理Listener、Filter和间接管理Servlet;Servlet容器管理Servlet;Spring容器管理Service和Dao;SpringMVC容器管理Controller;SpringBoot容器管理所有bean。
2. 父子容器的设计:在早期的Spring+SpringMVC项目中,为了划分框架边界,设计了父子容器的概念。父容器(如Spring容器)管理Service和Dao层,子容器(如SpringMVC容器)管理Controller层。子容器可以获取父容器的bean,但父容器不可以获取子容器的bean。这种设计主要是为了方便子容器的切换。
3. 父子容器的事务问题:事务管理器属于Spring容器管理,因此SpringMVC容器无法访问到事务相关的对象,所以不能在Controller上配置事务。
四、不同项目中的容器应用
1. SpringMVC项目:在此项目中,主要用到Web容器、Servlet容器和SpringMVC容器。其中,Servlet容器的属性中有一个Map类型的attributes,其中的SpringMVC容器对象负责管理Controller和视图解析器等。
2. Spring+SpringMVC项目:在此项目中,除了上述的Web容器、Servlet容器和SpringMVC容器外,还有Spring容器。Spring容器负责管理Service和Dao层,而SpringMVC容器则管理Controller层。SpringMVC的也是由SpringMVC容器管理的。
3. SpringBoot项目:在此项目中,主要用到Web容器、Servlet容器和SpringBoot容器。SpringBoot作为一个内置Tomcat的应用服务器,简化了项目的部署和配置。其中,SpringBoot容器的属性中不仅有servletContext的引用和beanFactory,还有对子容器的引用等。"spring-boot-starter-web"中包含了嵌入式Tomcat, SpringBoot应用和Tomcat通过spring-boot-starter-web这个starter关联起来成为一个整体的项目。在实际开发中常常直接称呼为SpringBoot应用服务器或者SpringBoot应用而忽略其底层的Tomcat实现细节。这样简化了开发者的配置工作并且降低了出错概率。在实际开发中更多的是通过IDE(如IntelliJ IDEA 或者 Eclipse)的自动配置功能来实现项目的搭建工作,自动完成如配置嵌入式服务器的任务从而省去了传统繁琐的手动配置工作以及对应的技术研究投入让开发者能够有更多的精力关注业务层面的实现和开发从而提升了工作效率提高了工作质量同时也促进了项目的整体稳定性推动了互联网的发展壮大。"这样使得开发者能够更多地关注业务逻辑的实现和开发而不用花费太多精力在配置和管理服务器上提高了开发效率和项目质量。" 这样的描述更流畅更连贯符合技术写作的语言表达习惯和专业性描述风格帮助读者更好的理解项目开发和实现过程中的技术和思路也易于读者从中获得新的思路和启发进而提升技术能力从而达到学习进步的目的!
