JSP container 和 servlet container 是一回事吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSP container 和 servlet container 是一回事吗相关的知识,希望对你有一定的参考价值。

如果不是一回事 他们分别扮演着什么样的角色呢

是的,二者是一回事,jsp的执行最终要转换成servlet的。
servlet容器的主要任务是管理servlet的生命周期。而web容器更准确的说应该叫web服务器,它是来管理和部署 web应用的。还有一种服务器叫做应用服务器,它的功能比web服务器要强大的多,因为它可以部署EJB应用,可以实现容器管理的事务,一般的应用服务器 有weblogic和websphere等,它们都是商业服务器,功能强大但都是收费的。web容器最典型的就是tomcat了,Tomcat是web容 器也是servlet容器。
参考技术A 是一回事,只不过JSP在编写时比较简单,不用在PrintWriter对象的println方法中频繁打印html代码

JSP属于Servlet,因为在编译JSP时,终究会把JSP先编译为一个Servlet,然后由容器来提供服务本回答被提问者采纳
参考技术B JSP container 和 servlet container是不同的容器,解释如下:
1.Web Container:web容器最典型的就是tomcat了,Tomcat是web容器也是servlet容器。
2.Servlet Container:servlet容器的主要任务是管理servlet的生命周期。没有servlet容器,你也可以用web容器直接访问静态页面,比如安装一个apache等,但是如果要显jsp/servlet,就要安装一个servlet容器了,但是光有servlet容器是不够的,因为它要被解析成html输出,所以仍需要一个web容器。但是,大多数servlet容器同时提供了web容器的功能,也就是说大多servelt可以独立运行的web应用。

《Head First Servlets & JSP》-2-概述

什么是容器

Servlet没有main()方法,他们受控于另一个Java应用,这个java应用称为容器(Container)。
Web服务器应用(如Apache)得到一个指向Servlet的请求(如何判断是一个Servlet请求而不是一个静态HTML页面请求?)时,服务器不是把这个请求交给Servlet本身,而是交给部署该Servlet的容器。由容器向Servlet提供HTTP请求和响应,而且要由容器调用Servlet的方法(如doPost()或deGet())。

注意,我们目前使用Tomcat作为Http服务器和Web容器,即可以将上述Apache、Servlet容器字眼都换为Tomcat。

容器的作用

  • 通信支持
    容器使得Servlet与Web服务器对话,不用自己建立ServerSocket、监听端口、创建流那一套。
  • 生命周期管理
    容器控制Servlet的生与死,如负责加载类、实例化类和初始化Servlet、调用Servlet方法、实例回收等等。
  • 多线程支持
    容器为每个Servlet请求创建一个新的Java线程,若Servlet运行完相应的Http服务方法,该线程结束。
  • 声明方式实现安全
    通过容器,可以使用XML部署描述文件(DD)来配置和修改安全性,而不必将其硬编码到Servlet类代码中。
  • JSP支持
    是容器负责将JSP代码翻译成真正的Java代码。

容器如何处理请求

  • 用户请求的一个连接是Servlet而不是一个静态页面
  • 容器看出这是个Servlet,则穿件两个对象:HttpServletRequest和HttpServletResponse
  • 容器根据URL找到正确的Servlet,为这个请求创建或分配一个线程,并把上述请求和响应对象传递给这个Servlet线程
  • 容器调用Servlet的service()方法,该方法会调用doGet()或doPost()方法
  • 处理请求并把结果塞给响应对象
  • 线程结束,容器把响应对象转换为一个HTTP响应

部署描述文件(DD)

Servlet的三个名字:真实java类名、URL映射名、HTTP请求名,这些在部署描述文件(DD)里声明。
DD另外还有以下作用:安全角色、错误页面、标记库、初始化配置信息等等。

Servlet&JSP世界中的MVC

业务逻辑放在模型中,模型就是业务数据和方法的组合;
Servlet扮演控制器的角色,在模型和视图之间起协调作用;
JSP作为视图可与模型分离。

要点

J2EE

J2EE是一种超级规范,他结合了其他的一些规范,包括Servlet2.4规范和JSP2.0规范,这些是对应Web容器的;
另外J2EE 1.4规范还包括Enterprise JavaBean(EJB)2.1规范,这对应EJB容器;
即,Web容器用于Web组件(Servlet和JSP),EJB容器用于业务组件;
J2EE应用服务器包括一个Web容器和一个EJB容器;Tomcat是一个Web容器,而不是一个完整的J2EE应用服务器;
独立的Web容器通常配置为与一个HTTP Web服务器(如Apache)协作,不过Tomcat容器本身就能作为一个基本的HTTP服务器。
但是在HTTP服务器功能方面,Tomcat没有Apache那么健壮,所以常见的非EJB Web应用通常会结合使用Apache和Tomcat。

注意的名词:

  • Web服务器
  • Web容器
  • Servlet容器

参考资料

EJB到底是什么 csdn
EJB wikipedia

以上是关于JSP container 和 servlet container 是一回事吗的主要内容,如果未能解决你的问题,请参考以下文章

WEB容器和EJB容器

用resin使IIS支持jsp和servlet的步骤介绍

jsp的C标签一般使用方法以及js接收servlet中的对象及对象数字

将 JSP/JSTL 的 <c:url> 应用于 servlet 内的路径

jsp+servlet怎样防止用户用URL直接访问页面

jsp开发中、servlet、dao层、biz层、entity层到底各自啥作用?