1 / 99

J2EE 入门培训

J2EE 入门培训. 内容提要. J2EE 概述 J2EE 存在的意义 J2EE 的基本概念 J2EE 基础技术标准 JavaBEAN, JDBC, JNDI, RMI J2EE 进阶技术标准 Servlet / JSP JAF JavaMail 进一步说明 J2EE 事务处理分析 JNDI 的扩展使用 参考资料. 严格的说, JavaBEAN 与 JDBC ,是 J2SE 的规范与 标准,在 J2EE 中得到了更好的扩展;. EJB JTA JMS. JAAS WebService 其他技术标准. RMI 与 CORBA.

Download Presentation

J2EE 入门培训

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. J2EE入门培训

  2. 内容提要 • J2EE概述 • J2EE存在的意义 • J2EE的基本概念 • J2EE基础技术标准 JavaBEAN, JDBC, JNDI, RMI • J2EE进阶技术标准 • Servlet/ JSP • JAF • JavaMail • 进一步说明 • J2EE事务处理分析 • JNDI的扩展使用 • 参考资料 严格的说,JavaBEAN与JDBC,是J2SE的规范与 标准,在J2EE中得到了更好的扩展; • EJB • JTA • JMS • JAAS • WebService • 其他技术标准 • RMI与CORBA

  3. J2EE概述 • J2EE存在的意义 • J2EE的基本概念

  4. J2EE概述 – J2EE存在的意义 在传统的开发模式(单层应用结构)下,应用普遍存在以下致命缺点: - 数据、页面和业务逻辑在一个逻辑层次中,功能紧密耦合; - 代码重用性极低,可维护性差; - 应用耦合度高,完全没有可扩展性; - 任何一个细小功能的更新,需要对整个应用进行重新部署; - 后台数据结构的改动,将导致所有相关代码的改动; - 数据库连接管理是个很大的瓶颈;

  5. J2EE概述 – J2EE存在的意义 因此,在很长一段时间内,导致企业级应用开发过程一直存在着以下瓶颈: - 应用与功能的分布式; - 功能模块的可移值性与可重用性; - 快速的WEB页面的开发; - 应用逻辑层次的分离,避免耦合; - 功能的安全性与事务性; - 可扩展与可维护性;

  6. J2EE概述 – J2EE存在的意义 所以,企业需要满足以下条件的应用体系结构: - 分布式的、可移植组件的框架与结构; - 简化服务端中间件的设计(包括事务处理,安全性等等); - 为组件、应用、以及服务端提供标准、开放的API;

  7. J2EE概述 – J2EE存在的意义 又因此,J2EE诞生了: - 1996年6月,JavaOne年度峰会上,SUN公司发布了J2EE第1版本; J2EE的2个初衷: - 对于企业用户,J2EE是一套开放标准平台,加入这个平台,企业内所有的 业务系统就可以运行在不同的操作系统,不同的环境下,从而形成一整套 企业应用体系; - 对于开发者,J2EE是一套现成的解决方案,开发过程中的许多瓶颈(如事 务处理,安全性,可移值性等)就会迎刃而解,真正实现逻辑上的层次分 离,实现分布式应用;

  8. J2EE概述 – J2EE的基本概念 J2EE的定义: - 是开放的、基于标准的平台; - 是用于开发、部署与管理N层结构、是面向WEB、以服务器为中心的企业级 应用体系;

  9. J2EE概述 – J2EE的基本概念 J2EE架构图:

  10. J2EE概述 – J2EE的基本概念 一个典型J2EE应用结构图:

  11. J2EE基础技术标准 • JavaBEAN • JDBC • JNDI • RMI 严格的说,JavaBEAN与JDBC,是J2SE的规范与 标准,在J2EE中得到了更好的扩展;

  12. J2EE基础技术标准 – JavaBEAN 先来了解一下JavaBEAN: - JavaBEAN是在编程环境中能够被可视化处理的可重用组件; 这里所指编程环境包括:IDE(如Eclipse)等; 一个JavaBEAN简单来说就是一个Java类,只有遵守了JavaBEAN的技术规范,才能 被称之为JavaBEAN,规范如下: - 该类必须为公共类,并且可序列化,即实现java.io.Serializable接口; - 若有构造函数,必须是无参的,类中不能出现main函数; - 所有属性必须通过set,get方式来操作(如setName,getName,若是布尔型 则使用isName),所有属性都必须是私有的(private),这种方式称为setters 与getters方法对; - 包含必要的事件处理方法;(若不需要事件机制,可忽略)

  13. J2EE基础技术标准– JavaBEAN 结合JavaBEAN规范,可以将JavaBEAN的元素归纳为:属性、方法、事件; JavaBEAN属性有4种类型: - Simple属性:表示具有setter与getter方法对的属性(field); - Indexed属性:表示数据值,同样具有setter与getter,可设置或获取数组中的 某个值,也可以一次设置或获取整个数组; - Bound属性:属性值发生变化时,会触发其他相关的JavaBEAN,至于被触发 的JavaBEAN应做什么动作,由其自己定义; - Constrained属性:属性值将要发生变化时,与该属性建立关系的其他Java对 象可以否决该属性值的改变;

  14. J2EE基础技术标准 – JavaBEAN JavaBEAN事件; 通过事件机制,JavaBEAN既是事件发起者,也是接收者,不同的组件就可以组合在 一起,组件之间通过事件传递进行通信,这样就可构成了最简单的应用; 在事件模型中,包括以下构成部分: - 事件状态对象、事件监听者接口、事件监听者; - 适配类:核心部分,用于选择并指派事件的响应者(JavaBEAN);

  15. J2EE基础技术标准 – JavaBEAN 结合JavaBEAN的元素与规范,可以将JavaBEAN的特征归纳为: - 定制:对属性、方法、事件的设计定制; - 持久性:可以保存与恢复JavaBEAN的属性值,通过可序列化来支持持久性; - 通信:以事件方式与外部进行通信; - 自检:开发工具通过该机制来分析JavaBEAN的结构,确定可支持的元素; 其他: - JavaBEAN完成后,会被打包成jar文件,把所需求资源都打包在同一个文件中; - 在jar的MANIFEST文件中指定所有的JavaBEAN文件; - jar文件在网络传输过程中将会极大减少数据流量;

  16. J2EE基础技术标准 – JavaBEAN 一个简单JavaBEAN例子: public class TestBean { private String name; private boolean man; public String getName() { return name; } public void setName(String name) { this.name = name; } public boolean isMan() { return man; } public void setMan(boolean man) { this.man = man } //... ... }

  17. J2EE基础技术标准 – JDBC JDBC的定义: - Java Database Connectivity Standard,是用于执行SQL的Java API,为Java提 供了通用的访问不同关系型数据库(DBMS)的方法与接口,几乎所有的DBMS 厂商都提供了JDBC的服务或驱动;

  18. J2EE基础技术标准 – JDBC 在最新的J2SDK6中,JDBC API目录已有4.0: - 核心API定义在java.sql包中; - 扩展API定义在javax.sql包中; 主要的JDBC对象与接口如下: - java.sql.DriverManager:用于管理JDBC驱动的服务类,当JDBC驱动加载至内存后,DriverManager 会自动注册JDBC驱动,然后通过getConnection方法建立Java应用至 DBMS的连接; - java.sql.Connection:数据库连接对象,通过createStatement创建SQL申明; - java.sql.Statement:SQL语句接口,通过executeQuery或executeUpdate执行一个静态的SQL语句; - java.sql.ResultSet:SQL语句执行结果对象,包含了若干维护表记录的操作方法; - java.sql.SQLException:SQL操作期间的异常处理,所以异常均通过该类抛出;

  19. J2EE基础技术标准 – JDBC JDBC连接生命周期如下:

  20. J2EE基础技术标准 – JDBC JDBC驱动共有4种类型: - 类型 1:将JDBC映射到其他类型的数据访问接口上,最为典型的是JDBC-ODBC Bridge,利用ODBC提供JDBC的访问(如访问MS Access),但必须在 每台客户机上都配置ODBC驱动(所以这种方式不适用于单独的Java 应用),适用于服务端应用程序,只需配置一次ODBC即可;

  21. J2EE基础技术标准 – JDBC - 类型 2:基于本地API与厂商的驱动程序实现,不同DBMS厂商提供了不同的驱 动实现(遵照JDBC标准实现),JDBC驱动会将本地API的操作转换成 具体厂商的JDBC操作; 如,Oracle提供的JDBC JAR为:classes12.jar

  22. J2EE基础技术标准 – JDBC - 类型 3:完全由Java实现,将JDBC转换为与DBMS无关的网络协议,然后该协 议被中间件服务器转换为不同的DBMS协议(由中间件服务提供与数 据库之间的操作映射); 比如,银行项目中常用的SOP协议,由中间件服务提供SOP协议规范 ,然后再将该协议转换成不同的DBMS通讯协议;

  23. J2EE基础技术标准 – JDBC - 类型 4:与第3种类型相似,唯一不同的是,在本地实现与不同DBMS通讯的协 议,因此缺点显然易见,需要在本地API中实现不同的DBMS协义,所 以,使用场合较少;

  24. J2EE基础技术标准 – JDBC JDBC连接池: - 简单来说,是管理JDBC连接生命周期的容器,确保连接使用的安全性; - 一般通过org.apache.commons.dbcp包实现; - 可以为同一个或不同DB创建多个连接池;

  25. J2EE基础技术标准 – JDBC JDBC的事务支持 - 所有的JDBC驱动都支持事务; - 事务操作:提交,回滚; JDBC、JAVA、SQL三者之间对于相同数据类型具有不同定义,下表罗列了一些:

  26. J2EE基础技术标准 – JNDI JNDI的定义: - Java Naming and Directory Interface(Java命名目录服务接口),是命名目录 服务的抽象接口集合,为企业级应用提供了统一的标准化连接,使Java能够无 缝的获取任何可目录化的企业信息; - 是数据的最基本服务之一,常见的目录服务有LDAP Server、RMI等; - 通过names与objects的绑定,形成唯一的描述字符串,以此获得目录条目,类 似于DNS通过主机名来获得IP; - JNDI包含API与SPI(服务提供接口),JNDI SPI用于命名目录服务的设计与实 现,使各类数据服务标准化;因此Java能够通过JNDI API快速方便的访问任何 目录服务;

  27. J2EE基础技术标准 – JNDI Java应用与JNID API、JNDI SPI,以及各类目录服务的关系结构图如下:

  28. J2EE基础技术标准 – JNDI JNDI由3个包组成: - javax.naming:定义了命名服务的类型,以及所有存取标准接口; - javax.naming.directory:是javax.naming的扩展,提供了所有对于目录服务的 访问标准操作与接口; - javax.naming.spi:定义了命名目录的服务接口,遵循这些标准接口,开发者 能够为不同数据服务编写出统一的命名目录服务; 目录较为成熟的JNDI实现包厂商有:SUN、IBM、Netscpe; 关于JNDI开发的详细说明,可以参考“JNDI_TRAINING.ppt”;

  29. J2EE基础技术标准 – RMI 首先来说明一下“分布式”这个概念: - 大多数传统方式的Java应用,所有的对象、程序都在同一台服务器上,并且在 同一个JVM或进程中; - 而在“分布式”计算中,对象和程序可以在同一台服务器上的不同进程中,也可 存在于不同的机器上;

  30. J2EE基础技术标准 – RMI 分布式的结构与优势: - 客户端层:UI与后台的业务处理完全分开,使客户端运行更“瘦”,更高效; - 业务逻辑层:又称“对象有服务层”,负责处理各类逻辑对象,如线程,连接 池,具体的业务对象等; - 数据及服务层:只负责具体的数据及服务运算; - 分布式计算能够充分利用多个系统组合的计算能力,能够解决在单机环境中无 法实现的计算功能;

  31. J2EE基础技术标准 – RMI 为什么“分布式”能够在Java平台上得到很好的实现,最主要的3点如下; - 跨平台性:Java为所有的系统平台都实现了统一的基本类型; - 可序列化:Java对象支持可序列化,符合远程调用的要求; - 性能优势:综上2点,使得Java的远程交互极为简单高效; 所以,便产生了RMI(Java Remote Method Invocation),

  32. J2EE基础技术标准 – RMI RMI的定义: - 基于TCP/IP套接字方式的分布式调用,是Java开发分布式应用的基础; 其实RMI本身并没有添加任何新的概念和技术,其核心还是“接口(Interface)”, 简单来说,就是把“接口”与“实现(对象)”从本地移到了远端的服务器上而已,实 现了“接口”与“实现”的分布式调用;

  33. J2EE基础技术标准 – RMI 举个简单的例子说明: - 假设,我们在服务端定义了一个Interface,并且为该Interface编写了实现(对 象),然后在客户端编写了调用该Interface的Class,这样就构成了一个简单的 “客户/服务模型”,所以对于客户端而言,重要的不是Interface的实现,而是 Interface;

  34. J2EE基础技术标准 – RMI 从上页的图中,我们可以了解到RMI的部署与运行过程: - 首先定义RMI服务端能够提供的服务,也就是Interface; - 这些Interface需要生成调用入口,让客户端知道有哪些服务可以调用; - 然后,在服务端编写Interface的实现类; - 注意,还需要编写RMI注册机制,以便在RMI服务启时,能够正确加载服务; - 启动初始化RMI服务,注册机制会自动加载所以接口(服务); - 最后,客户端就可以方便的进行服务的调用; 当然,由于是依靠网络运行,所以也需要必要的安全校验机制,这里就不进行描述 了,可以根据实际的运行环境定制,比如,在客户端/服务端交互时,加入必要的 身份验证部分,或进行IP地址限制等;

  35. J2EE基础技术标准 – RMI 现在再来了解一下RMI的开发过程: 1- 定义服务接口,扩展java.rmi.Remote接口; public interface RMISample extends Remote 2- 编写接口的实现类,除了实现Interface外,必须扩展UnicastRemoteObject, 说明该服务不可复制,并且只在服务运行时有效; public class RMISampleImpl extends , implements RMISample 3- 创建RMISampleImpl的stub,通过J2SDK的命令,rmicRMISampleImpl; stub就是刚才所提到的服务调用入口,名称为RMISampleImpl_Stub; 在JDK1.2以前,还需要生成skeleton,负责服务的定位,及参数的解析交互;

  36. J2EE基础技术标准 – RMI 4- 编写RMI注册机制,若名称为RMISampleServ以下是在main函数中的代码: //创建与安装安全管理程序 System.setSecurityManager(new RMISecurityManager()); //实例化远程对象 RMISampleImpl o=new RMISampleImpl(); //远程对象注册到RMI注册表 Naming.rebind("rmi://localhost/rmiSample",o); 5- 编写客户端,若名称为RMISampleClient; RMISample server=(RMISample)Naming.lookup("rmi://localhost/rmiSample"); server.方法(); 或者也可以直接实例化RMISampleImpl_stub进行服务连接与调用; 6- RMI注册:rmiregistry port RMI服务启动:java RMISampleServ RMI客户端运行:java RMISampleClient

  37. J2EE基础技术标准 – RMI RMI典型的运行结构图如下:

  38. J2EE进阶技术标准 • EJB • JTA • JMS • JAAS • WebService • 其他技术标准 • Servlet / JSP • JAF • JavaMail

  39. J2EE进阶技术标准 – Servlet / JSP Servlet的定义: - 是部署在Java的Web服务器上的组件,整个Java服务端程序都构建在Servlet 之上,以多线程方式提供服务,具有效率高,可扩展,可移植的特点; JSP的定义: - Java Server Page,所有JSP页面在执行时都会被编译成Servlet,由JSP页面 生成的Serlvet叫作“JSP页面实现类”,甚至可以把JSP认为是嵌入了Java语 句的HTML页面文件; Servlet / JSP的关系: - 在页面展现上,Servlet通过输出HTML语句来实现动态页面,如果SUN不推 出JSP标准,那么Java的Web页面开发(动态页面的交互过程)将会十分痛苦;

  40. J2EE进阶技术标准 – Servlet / JSP Servlet / JSP 的生命周期: JSP页面第一次运行时,可能较慢,原因就在于需要进行装载和编译,以后将不 不会再重新编译,即使是应用重启;

  41. J2EE进阶技术标准 – Servlet / JSP Servlet请求处理过程涉及到3个概念:HTTP请求对象,HTTP响应对象,HTTP会话; 关系图如下:

  42. J2EE进阶技术标准 – Servlet / JSP Servlet请求处理过程: 当请求并发时,Servlet以多线程方式提供服务:

  43. J2EE进阶技术标准 – JAF JAF的定义: - JavaBEAN Activation Framework,提供了统一处理不同的数据格式的方法( 如,文字,图片,声音,视频等等); 经常会使用JAF的场景:Web应用,JavaMail; - 数据与编码是最普遍也是最头痛的问题,在以上2个场景中,数据的自动处理显 得尤为重要,否则Web页面或邮件内容将会是乱码; 这里要引入一个概念:“自动发现机制”,JAF就是基于此概念开发的; “自动发现”是指:能够动态找到正确的组件(JavaBEAN)来处理相应的请求;

  44. J2EE进阶技术标准 – JAF JAF“自动发现”机制的实现: - JAF能够不同数据类型,找到相应的组件(JavaBEAN)来处理任意类型的数据; - JAF中存在“注册”机制,简单来说,就是把每一种文件类型与相应的处理组件 进行映射,这样JAF就实现了所谓的“自动发现”机制;

  45. J2EE进阶技术标准 – JAF JAF的组成: 1)- java.activation.DataHandler,是JAF的核心部分,共有3个构造函数: Public DataHandler(Object obj, String mimeType) Public DataHandler(DataSource ds) Public DataHandler(URL u) 使用第1个构造函数时,会根据mimeType动态发现相应的数据处理组件; 使用第2,3个构造函数时,则会使用当前的数据类型处理组件; 2)- java.activation.DataContentHandler:此接口用于实现数据流的处理,负责 Java对象流与数据流的互转,唯一的限制是,对象类型与数据流的转换关系 是一对一的; 3)- java.activation.DataSource:包含了数据处理的所有逻辑,与DataContentHandler 不同的是,DataSource只处理数据流(InputStream),具有很大的通用性, JAF定义了2个标准的DataSource对象,FileDataSource与URLDataSource

  46. J2EE进阶技术标准 – JAF 在JAF的JAR包中,包含mimetype.default文件,定义了所有适用的数据类型; JAF的处理逻辑如下:

  47. J2EE进阶技术标准 – JavaMail JavaMail的定义: - 是一个电子邮件操作的标准Java API,用于建立标准的邮件客户端,包括了各 种标准的Internet协议(如SMTP,POP,IMAP,MIME等); - 与JAF有着紧密的联系,JavaMail运行依赖于JAF,比如,JavaMail依赖于JAF 处理MIME编码的附件等; JavaMail包含4个主要的部分: 1)- 会话管理: java.mail.session:用于定义并建立与远程邮件服务器的邮件通讯会话; javax.mail.Authenticator:用于处理在建立Session时的相关身份验证;

  48. J2EE进阶技术标准 – JavaMail 2)- 消息管理: 邮件消息有“头”与“内容”2部分组成; 邮件头中包括了MessageID,From,To,Subject等内容; javax.mail.Message:用于封装一条抽象邮件消息类,其中包括了一个实现 类MimeMessage; javax.mail.Part:是实现Message的元子组件,相互之间可嵌套,因此最终 可以一个递归结构; 3)- 存储与检索,以文件夹的形式进行邮件的存储与检查,主要的组件如下: javax.mail.Store:为文件夹形式的提供的操作方法; javax.mail.Folder:为Message的提供了管理所必须的方法,包括检索,复 制,移动,删除等等;

  49. J2EE进阶技术标准 – JavaMail 4)- 传递(发送): javax.mail.Transport:提供邮件发送功能; JavaMail的逻辑结构图:

  50. J2EE进阶技术标准 – EJB EJB(Enterprise JavaBean)是J2EE核心组件,其定义如下: - 是Java服务端软件框架规范,提供了让客户端使用远程分布式对象的框架,简 化了大型企业级应用的开发; EJB规范的定义: - 规定了EJB组件与EJB容器进行交互的方式; EJB容器的定义: - 是管理EJB实例的抽象组件,遵循EJB规范来调用业务逻辑所需要的EJB实例; EJB服务: - 管理EJB容器的应用程序,并提供对其他系统服务的访问,如JDBC,JNDI等,

More Related