容器与组件
Java EE(Java Platform Enterprise Edition)是一种企业级的Java版本。
Java EE是SUN公司提出来的企业版Java开发中间件,它主要用于企业级互联网系统的搭建。
Java EE的本质是一种容器加组件技术,这句话里包含了两个概念——容器和组件。
容器是用来管理组件行为的一个集合工具,组件的行为包括与外部环境的交互、组件的生命周期、组件之间的合作依赖关系和运行等。
组件是开发者编写或者引入的第三方程序代码,只要开发者按照容器所定义的规范开发组件,组件就可以在容器中运行了。Java EE中的主要组件包括JSP、Servlet和EJB(Enterprise Java Bean)等,主要的开发语言是Java。
容器和组件的关系如下图所示。
Java EE容器
Java EE容器可以分为Web容器、EJB容器和其他Java应用容器。
Web容器:它包含一个Servlet容器,Servlet容器可以运行Java EE的核心组件Servlet,而实际上JSP最终会被Web容器翻译为Servlet,再通过Servlet容器运行。此外,Web容器还可以运行HTML等文件。实现Web容器规范的服务器有多种,如Tomcat、Jetty、Wildfly(前身为JBoss)和GlassFish等。
Web容器 = HTTP服务器 + Servlet容器。
• EJB容器:它是Java EE提出的一个企业级Java Bean的规范,能在它内部运行的组件是EJB,但是请注意,在默认情况下,Tomcat只提供Web容器,不提供EJB容器,所以在Tomcat中无法运行EJB,除非引入插件。Wildfly和GlassFish等服务器则提供了EJB容器,可以在它们当中运行EJB。但是EJB存在诸多的问题,当前已经被大部分企业抛弃,基于实用原则,本书不再讨论它。
• 其他Java应用容器:解决某类问题的一些厂商提供的容器,比如Java NIO,它是一种支持字节组件的容器。
Web容器处理流程
1.client点击一个URL,其URL指向一个servlet
2.容器识别出这个请求索要的是一个servlet,所以创建两个对象:httpservletrequest、httpservletresponse
3.容器根据请求中的URL找到对应的servlet,为这个请求创建或分配一个线程,并把两个对象request和response传递到servlet线程中
4.容器调用servlet的service()方法。根据请求的不同类型,service()方法会调用doGet()或者doPost()方法
5.doGet()方法生成动态页面,然后把这个页面填入到response对象中
6.线程结束,容器把response对象转换成http响应,传回client,并销毁response和request对象
参考:
https://www.cnblogs.com/yjh1995/p/15902662.html
Java EE互联网轻量级框架整合开发:SSM+Redis+Spring微服务(上下册)-杨开振 刘家成-微信读书