今天开始学习J2EE,积累J2EE的知识!
有一本参考书,叫做《J2EE网络编程标准教程》,里面讲解的内容很是不错,呵呵,当初在网上看到这本电子书的时候,看名字还以为是与网络底层方面有关的东西,以为是讲解什么Socket之类和TCP/IP通信协议的东东,本来不想下,后来也不知怎么,下载了下来,打开看了看,哇哈哈哈,原来正是我要找的东东,大致看了前面J2EE基础知识一章,基本上就对J2EE的宏观上有了清晰的了解(不是开玩笑,是真的,因为玉飞龙当年在学校里学过C++,毕业后用了2年的Delphi和ASP作开发,因此对系统设计思想的理解,还不是很笨的),所以J2EE的基础知识,就以这本书为依据,开始学习,开始积累自己的知识好了。
好了,初学者如果有兴趣,可以去下载这本书自己看看,玉飞龙在这里将列出J2EE基础知识中的知识要点,便于自己学习与把握。记住,写的这些东东是给玉飞龙自己学习用的,只要玉飞龙能够理解就可以了,其他人呢?嘿嘿,看不看得懂,管我屁事
一、J2EE的核心思想有两个:一个是分层的思想;另一个是组件的思想
J2EE将一个系统按照功能,分成了4个独立的层,他们是:
数据层(也叫EIS层)、业务层、表述层、客户层。
数据层(也叫EIS层) | 业务层 | 表述层 | 客户层 |
|
| √ | √ | √ | 组件 |
| √ | √ | √ | 容器 |
| √ | √ | √ | 服务器 |
其中业务层、表述层、客户层这3个层又各自分成组件、容器、服务器3个部分。其中,容器与服务器往往已被整合成为一个底层服务平台,用来提供底层服务。因此J2EE开发者不必再关心与平台相关的底层操作,而只需专注于功能模块和业务流程——组件EJB的开发,然后将组件部署到服务器上就可以了。
组件必须运行在容器上、而容器必须运行在服务器上(容器与服务器通常已被整合)
学习J2EE必须把握上述两个思想观点,这样才不会对其中的技术感到迷惑。
二、J2EE的3种设计结构与组件
J2EE结构1 | J2EE结构2 | J2EE结构3 | 分层 | 组件 | |
客户端应用程序 | 动态HTML页面 | 动态HTML页面 | 客户 | 客户端机器 | 客户端组件:用程序客户端组件和Applet组件 |
| JSP页面 | JSP页面 | WEB层 | J2EE服务器 | WEB组件:JSP组件或Servlet组件 |
EJB | EJB |
| 业务层 | 业务逻辑组件:EJB组件 | |
数据库 | 数据库 | 数据库 | 数据层(也叫EIS层) | 数据库服务器 |
上图已经非常明确的表明了J2EE的3种设计结构,并且显示了对应层上使用的组件,其中WEB组件与业务逻辑组件的设计,是J2EE的重点。
三、J2EE中的容器与服务器
组件不能独立运行,必须运行在容器上,也就是说,必须把组件部署到容器上去。
所谓部署,就是指定容器的配置,告诉容器应该提供什么样的服务给组件,才能够保证组件的正常运行。
特别注意:1)组件与组件之间是不能够直接通信的,它们之间联系与信息交换必须通过容器来进行。
2)注意“容器回调”的概念,组件在容器上运行,实际上就是容器回调组件的过程;也就是说,组件可以调用容器提供的底层服务(可以称之为‘正向调用’),而容器反过来调用组件中的功能,这就是“回调”。
3)组件与容器之间通过“接口”来调用,组件调用容器接口获取底层服务,容器调用组件接口完成功能服务。
4)组件中定义的方法,并不是为用户而定义的,而是为容器定义的回调接口;用户是不能直接调用组件中的方法的,必须通过容器来实现回调,容器会自动识别并调用组件中的方法,完成应用程序功能。这一点,理解的时候必须特别注意,也非常重要。
四、J2EE中的组件、容器与服务器的关系
组件与容器是一一对应的关系,有什么类型的组件,就有什么类型的容器:WEB组件有WEB容器一一对应;EJB组件有EJB容器一一对应,不能把WEB组件部署到EJB容器上去,也不能把EJB组件部署到WEB容器上去,因为它们相关的接口不一样。
服务器所指的并不是指一台特定的硬件计算机,而是指的某种服务的提供进程,这一点对初学者来说容易搞混。
容器与服务器之间的调用与通信是不可见的,他们已经被厂商整合,程序员不可能看得见。
J2EE程序员要解决的问题就是实现组件与容器之间的调用问题。