Web容器和Servlet容器
Tomcat即属于Web容器,又属于Servlet容器,所以称为轻量级应用服务器。
Apache属于Web容器,即只能解析html,image等静态资源,不能解析JSP文件,而Tomcat都可以解析,但是主要是解析JSP、Servlet等动态资源,在解析静态资源时效率没有Apache高。
Apache:也就是说你在服务器的目录下面丢个index.html,通过http:xxx//8080/index.html可以访问;倘若丢个index.jsp,无法解析,无法通过http:xxx//8080/index.jsp访问
但Tomcat中两者都可以进行解析。
不管访问动态资源还是静态资源,访问web都是通过http 协议,你理解为都是url访问(不管动态还是静态都是url访问),因此一般web服务器==HTTP服务器
没有servlet容器,你也可以用web容器直接访问静态页面,比如安装一个apache等,但是如果要显示jsp/servlet,你就要安装一个servlet容器了,但是光有servlet容器是不够的,因为它要被解析成html输出,所以你仍需要一个web容器。大多数servlet容器(如Tomcat)同时提供了web容器的功能,也就是说大多servlet容器可以独立运行你的web应用。
Servlet容器的作用:
负责处理客户请求,当客户请求来到时,Servlet容器获取请求,然后调用某个Servlet,并把Servlet的执行结果返回给客户。【参照 Tomcat执行原理】
spring容器和springmvc容器
结论:
Spring 容器是管理service 和dao的。
SpringMVC 容器是管理controller的。
springmvc和spring它俩都是容器,容器就是管理对象的地方,例如Tomcat(web容器的一种实现),就是管理servlet对象的,而springMVC容器和spring容器,就是管理bean对象的地方,再说的直白点,springmvc就是管理controller的容器,spring就是管理service和dao的容器。所以我们在springmvc的配置文件里配置的扫描路径就是controller的路径,而spring的配置文件里自然配的就是service和dao的路径。
spring容器和springmvc容器的关系是父子容器的关系。spring容器是父容器,springmvc是子容器。在子容器里可以访问父容器里的对象,但是在父容器里不可以访问子容器的对象,说的通俗点就是,在controller里可以访问service对象,但是在service里不可以访问controller对象