JavaEE关键问题理解

JavaEE基础问题

本文介绍了对于JavaEE几个关键问题的理解,这是进一步学习JavaEE使用以及后续理解JavaEE的基础。

什么是JavaEE

https://www.jianshu.com/p/92ccf737bece

  1. JavaEE就是Java推出的企业级程序开发规范。涉及到2个关键概念,分别是企业级和规范
  2. 什么是企业级?
    1. 企业级的程序可以简单地理解为服务。
  3. 什么是规范?
    1. 结合上文,可以理解为为了实现一套企业级服务,java设计的一套规范,而规范实际上就是接口。这些接口包括JPS,Servlet等。
    2. 类比JDBC,如果数据库要和java对接,则需要实现一套jdbc的接口。同样的,如果要实现一套服务,就可以通过实现Servlet接口来完成。
    3. 我们听说的Tomcat不支持JavaEE所有的规范,其意思就是Tomcat没有实现JavaEE所有的接口,那么也就意味着有些功能应该是不能用的。

总结来说,JAVAEE就是java为了实现服务开发功能而设计的一套接口。如果我们实现了这套接口,就能够开发出一套服务。JavaEE的本质就是规范和接口,Servlet的本质和JDBC是一样的。

什么是Servlet

https://www.bilibili.com/video/BV1Jv411B7F5?p=213

  1. Servlet的全称是Server Applet,意思是运行在服务端的程序,在java中,程序的本质就是类和方法,因此,Servlet的本质是一个Java类,或者更加准确地说,是一个JavaEE的接口,也就是Java定义的规范。
    1. JavaEE接口文档:https://docs.oracle.com/javaee/7/api/toc.htm
    2. 通过上面的官方文档,可以更加深刻地体会到,Servlet本质上和JDBC和Map、List完全一样的,就是一个Interface。
    3. 实现Servlet是我们开发服务端程序的方式之一,并且是现在最主要的方式。
  2. Servlet程序最大的特点是无法独立运行,它没有主方法,只能依赖外部容器去调用,这个容器一般就是服务器,比如说Tomcat。这也就是我们经常说的,Servlet服务依赖容器才能运行。
  3. 容器是如何调用Servlet程序的呢?容器和用户写的程序都遵循JavaEE的Servlet规范即可。
    1. 容器作为一个框架,提前确定好调用接口实现类的流程,用户实现Servlet接口,把编译好的代码交给容器,客户端调用容器特定的入口,最终实现对用户代码的调用。
    2. 这个过程本质上是框架和用户自定义插件的交互过程。

因此,记住一点,Servlet就是JavaEE的一个接口,实现了Servlet接口的代码就是可以作为一个服务端程序,用户如果想写一个服务端程序,只要实现Servlet的全部方法,然后把程序交给容器运行即可。我们几乎所有的JavaWeb服务,全部都是Servlet程序。

Tomcat和Servlet是什么关系

Tomcat和Servlet是容器和程序的关系,Servlet可以被Tomcat识别和实例化,并能够在Tomcat中执行各个方法。Tomcat代理Servlet的大致过程如下:

  1. 客户端访问Tomcat服务,输入访问路径
  2. Tomcat接收请求,根据路径对应到具体的Servlet类
  3. Tomcat将Servlet实现类实例化,创建对象,这是基于反射实现的
  4. Tomcat调用Servlet类的方法,完成请求处理的操作

在Tomcat代理的过程中,一个关键的技术是反射。这个过程中也使用了模板方法设计模式(几乎所有的框架工作原理都使用了模板方法设计模式)。

在这个过程中,Tomcat起到了2个作用:

  1. 接收并封装请求,封装响应并完成响应。把通用的网络通信部分做成固定的流程,与业务无关。
  2. 调用Servlet实现类的方法,注入业务。

从Tomcat的工作模式中,可以学习到容器类框架的宏观设计原则

  1. 将整个流程中通用的部分集成到框架中,做成固定的流程
  2. 在涉及到具体功能的部分,采用模板方法+反射的方式,将具体逻辑加入到模板流程中。
    1. 框架和业务之间通过一套接口规范联系起来,自定义逻辑只需要实现这套规范即可。

采用这一套设计原则的框架有:Tomcat、MapReduce等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值