JAVA基础培训20090306.ppt

上传人:本田雅阁 文档编号:3481754 上传时间:2019-09-01 格式:PPT 页数:51 大小:1.56MB
返回 下载 相关 举报
JAVA基础培训20090306.ppt_第1页
第1页 / 共51页
JAVA基础培训20090306.ppt_第2页
第2页 / 共51页
JAVA基础培训20090306.ppt_第3页
第3页 / 共51页
JAVA基础培训20090306.ppt_第4页
第4页 / 共51页
JAVA基础培训20090306.ppt_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《JAVA基础培训20090306.ppt》由会员分享,可在线阅读,更多相关《JAVA基础培训20090306.ppt(51页珍藏版)》请在三一文库上搜索。

1、,JAVA基础培训,孫振興,OUTLINE,J2EE基础知识介绍,JSP介绍,开发环境,JDBC介绍,开源框架,Java的基础知识介绍,是一种可以编写跨平台应用软件的面向对象的程序设计语言,定义,Java是什么?,Java= “C+”-“复杂性和奇异性”+“安全性和可移植性”,Java由那些特性?,(1) 面向对象:封装性、多态性、继承性、动态链接,(2) 操作平台无关性: Write once, run anywhere,(3) 安全问题,(4) 多线程,(5)垃圾收集,(6)不易出错(Exception 机制),4/54,Java程序的跨平台运行机制,Source Code(源程序 *.j

2、ava),Byte Code(字节码文件 *.class),Windows,Linux,Unix,Java技术体系,针对桌面计算、企业计算和移动计算,Java平台提供了三个版本,形成了三大技术体系: Java 2 Platform, Standard Edition (J2SE) J2SE适用于在一般计算机的Java语言程序开发 Java 2 Platform, Enterprise Edition (J2EE) J2EE适用于网络中服务器端Java语言程序以及工作站等的开发 Java 2 Platform, Micro Edition (J2ME) J2ME适用于消费类电子产品嵌入式系统程序

3、的开发。,J2SE是Java开发的基础,J2EE是的工作重点,OUTLINE,J2EE基础知识介绍,JSP介绍,开发环境,JDBC介绍,开源框架,示例-1,在Eclipse中开发一个Web工程,目录结构,Java类文件目录,编译依赖库,JSP目录,浏览器,Servlet and JSP,容器,EJB Server,HTTP,HOME,REMOTE,HOME,REMOTE,数据,J2EE模型,JDBC,RMI/IIOP,JDBC,应用服务器,JDBC,Servlet&Jsp,Servlet实际上就是Java程序,是由服务器端调用和执行的Java类。可以把它看作是运行在面向请求的服务器上的模块。功

4、能设传统的CGI(Common Gateway Interface)相同。,JSP(Java Server Page),是在Servlet基础上开发的动态网页制作技术。可以将网页中的动态部分和静态的HTML相分离。,WEB页面技术演进图,CGI 1,CGI 2,CGI 3,CGI 4,J2EE容器,J2EE容器,Servlet 1,Servlet 2,Servlet 3,Servlet 4,JSP 1,JSP 2,JSP 3,JSP 4,CGI,Servlet,JSP,JSP的解析过程,1.J2EE服务器接收到客户端的请求,例如 http:/localhost:8010/test.jsp,2.

5、J2EE服务器检索相应的jsp文件。 如果有,则进入解析过程, 如果没有,则返回404错误,3.J2EE很容易从jsp文件中区分出 “动态”代码,并执行。 执行后的产物是浏览器 可以执行的“静态”代码,4.浏览器展示、执行从服务器传来的 代码,给用户很好的视觉效果,静态代码指不在服务器 里执行的代码,包括 HTML, Javascript,CSS等,动态代码指在服务器中 会被执行的代码,包括 jsp文件中的内嵌 Java代码、jsp标签等。,示例-2,2.新建一个JSP页面,并在Tomcat中访问它。实现输出HelloWorld。,1.新建一个Servlet,并在Tomcat中访问它。实现输出

6、HelloWorld。,4.对比Servlet和JSP对应的Servlet,找出共性。,3.在Tomcat的临时目录中找到JSP组装后的Servlet。,JSP请求-响应模型,JSP的组装过程,JSP内嵌对象,page对象 config对象 request对象 response对象 out对象 Application对象 session对象 pageContext对象 exception对象,OUTLINE,J2EE基础知识介绍,JSP介绍,开发环境,JDBC介绍,开源框架,JDBC介绍,JDBC(Java Database Connectivity,Java数据库连接规范)是一种用于执行SQ

7、L语句的Java API,可以为多种关系数据库提供统一的访问接口。 JDBC是由一组Java编写的类与接口组成,通过调用这些类和接口所提供的方法,用户能以一致的方式连接多种不同的数据库系统。如MS Access、SQL Server、Oracle、Sybase、DB2等)。,JDBC驱动的类型,目前企业常用的JDBC驱动主要有以下四种: Type1:JDBC-ODBC桥; Type2:本地api驱动; Type3:网络协议驱动; Type4:本地协议驱动。,Type1类型的驱动,Type1类型的驱动实际是把所有jdbc的调用传递给odbc ,再由odbc调用本地数据库驱动代码。需要由数据库厂商

8、提供的数据库操作二进制代码库。,只要本地机装有相关的odbc驱动那么采用jdbc-odbc桥几乎可以访问所有的数据库,jdbc- odbc方法对于客户端已经具备odbc driver的应用还是可行的.但是,由于jdbc-odbc先调用odbc再由odbc去调用本地数据库接口访问数据库.所以,执行效率比较低,对于那些大数据量存取的应用是不适合的.而且,这种方法要求客户端必须安装odbc 驱动,所以对于基于internet ,intranet的应用也是不合适的.因为,你不可能要求所有客户都能找到odbc driver.,Type2类型的驱动,Type2类型的驱动直接把jdbc调用转变为数据库的标准

9、调用再去访问数据库.这种方法需要本地数据库驱动代码.,这种驱动比起jdbc-odbc桥执行效率大大提高了.但是,它仍然需要在客户端加载数据库厂商提供的代码库.这样就不适合基于internet的应用.并且,他的执行效率比起3,4型的jdbc驱动还是不够高.,Type3类型的驱动,这种驱动实际上是根据我们熟悉的三层结构建立的. jdbc先把对数局库的访问请求传递给网络上的中间件服务器. 中间件服务器再把请求翻译为符合数据库规范的调用,再把这种调用传给数据库服务器.,由于这种驱动是基于server的.所以,它不需要在客户端加载数据库厂商提供的代码库.而且他在执行效率和可升级性方面是比较好的.因为大部

10、分功能实现都在server端,所以这种驱动可以设计的很小,可以非常快速的加载到内存中. 但是,这种驱动在中间件层仍然需要有配置其它数据库驱动程序,并且由于多了一个中间层传递数据,它的执行效率还不是最好.,Type4类型的驱动,这种驱动直接把jdbc调用转换为符合相关数据库系统规范的请求.由于4型驱动写的应用可以直接和数据库服务器通讯.这种类型的驱动完全由java实现,因此实现了平台独立性.,由于这种驱动不需要先把jdbc的调用传给odbc或本地数据库接口或者是中间层服务器.所以它的执行效率是非常高的.而且,它根本不需要在客户端或服务器端装载任何的软件或驱动.这种驱动程序可以动态的被下载.但是对

11、于不同的数据库需要下载不同的驱动程序.,结论,Jdbc-odbc桥由于它的执行效率不高,更适合做为开发应用时的一种过度方案,或着对于初学者了解jdbc编程也较适用. 对于那些需要大数据量操作的应用程序则应该考虑2,3,4型驱动.在intranet方面的应用可以考虑2型驱动,但是由于3,4型驱动在执行效率上比2型驱动有着明显的优势,而且目前开发的趋势是使用纯java.所以3,4型驱动也可以作为考虑对象. 至于基于internet方面的应用就只有考虑3,4型驱动了. 因为3型驱动可以把多种数据库驱动都配置在中间层服务器.所以3型驱动最适合那种需要同时连接多个不同种类的数据库, 并且对并发连接要求高

12、的应用. 4型驱动则适合那些连接单一数据库的工作组应用. 在我们的应用中分别有用到3型和4型的驱动。,JDBC开发示例,使用4型JDBC驱动开发示例,基本开发步骤: 生成JDBC驱动的实例或是通过jdbc.drivers系统属性加载 向系统注册一个驱动程序 指定数据库 打开数据库连接 提交数据库查询 取得查询结果 清除结果集 关闭连接,OUTLINE,J2EE基础知识介绍,JSP介绍,开发环境,JDBC介绍,开源框架,开源框架分类,在我们的应用程序中,会使用很多的开源项目为我所用。例如:Struts,Spring,Hibernate,iBatis,Log4J,dom4j,DBCP,proxoo

13、l等。,Struts的基本原理,Struts 是MVC的一种实现,它将 Servlet和 JSP 标签用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。Struts的体系结构与工作原理如图所示,Struts的基本原理,MVC即Model-View-Controller的缩写,是一种常用的设计模式。MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。MVC的工作原理,如下图所示:,Struts的基本组成,Struts的模型组件:由ActionForm Bean表示,用来在模型层和视图层中传输数据;,Struts的视图组件:视图是

14、模型的外在表现形式,用户通过视图来了解模型的状态。 Struts提供了使用JSP展示交互视图。,Struts的控制器组件: 控制器层的核心是ActionServlet,它负责通过Struts配置文件初始化应用程序的配置,并负责接收发至应用程序的所有传入的请求。,控制器的生命周期,控制器层的生命周期如下图所示:,客户端浏览器,ActionServlet,RequestProcessor,业务操作,数据模型,JSP视图,数据模型到JSP的数据传递过程主要是通过Struts标签来完成。 JSP到数据模型的数据传递过程主要是由Struts引擎遍历请求参数来填充Form对象,Spring简介,Sprin

15、g框架由Rod Johnson开发,于2003年发布了Spring框架的第一个版本。 Spring是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 目的:解决企业应用开发的复杂性 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 范围:任何Java应用,Spring的特性,简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 轻量从大小与开销两方

16、面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。 非侵入式 Spring应用中的对象不依赖于Spring的特定类。 控制反转Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。 面向切面Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(

17、auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的完成业务逻辑,仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。 容器Spring包含并管理应用对象的配置和生命周期,在这个意义上它是种容器,你可以配置你的每个bean如何被创建(基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例)以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用的。 框架Spring可以将简单的组件配置、组合成为复杂的应用。在S

18、pring中,应用对象被声明式地组合,典型的是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了开发者。,Spring框架的组成,Spring - Inverse of Control,Spring IoC的特点 当一个对象请求其他对象服务时,由外部容器将所依赖的对象引入。 遵循好莱坞原则“不要找我,我会找你” 依赖注入 存在依赖关系的服务对象是在运行时被注入的。 Beans通过构造函数或者属性定义依赖关系。 避免硬编码进行对象创建和对象检索。 松耦合 有助于提高单元测试效率。,非IoC方式,非IoC方式,public class Ca

19、mpaignServiceImpl implements CampaignService public Campaign updateCampaign(Campaign campaign) throws CampaignException try CampaignDAO campaign = new CampaignDAOImpl(); OpportunityDAO oppDAO = new OpportunityDAOImpl(); / Alternatively, initialize thru factory / OpportunityDAO oppDAO = OppFactory.ge

20、tOpp(); oppDAO.save(campaign); catch(Exception e) ,代码是紧耦合的,或者通过对象工厂创建!,使用IoC方式,使用IoC方式,public class CampaignServiceImpl implements CampaignService public Campaign updateCampaign(Campaign campaign) throws CampaignException try oppDAO.save(campaign); catch(Exception e) / Spring sets the value thru run

21、time injection! private setOpportunityDAO(OpportunityDAO oppDao) this.oppDAO = oppDao; ,Spring - AOP,AOP(Aspect Orient Programming),也就是面向切面编程,作为面向对象编程的一种补充。 AOP从程序运行角度考虑程序的流程,提取业务处理过程的切面。 AOP面向的是程序运行中各个步骤,希望以更好的方式来组合业务处理的各个步骤。AOP框架并不与特定的代码耦合,AOP框架能处理程序执行中的特定点,而不是某个具体的程序。 AOP框架具有如下两个特征: 各步骤之间的良好隔离性。

22、源代码无关性。,AOP的类型,Around: surrounds a joinpoint; provides custom behavior before and after method invocation Before: executes before a joinpoint After Returning: executes after the successful completion of a joinpoint Throws: executed when a joinpoint throws an exception Introduction: used to dynamical

23、ly add methods to an advised class, usually to adhere to some interface,Spring ApplicationContext,Spring - AOP,Before Advice,Service 1,Service 2,Service 3,Before Advice,After Advices(Logging, Transaction CTL(commit), etc),Before Advices(4A, Coding, Decryption),Throws Advices Transaction CTL (Rollbac

24、k),A Exception Occured,SSH整合,SSH应用架构,一个设计良好的Web应用,一般可以按职责分为四层:表现层(UI Layer)、持久层(Persistence Layer)、业务层(Business Layer)和领域模型层(Domain Model Business Objects)。每一个层次都有其独特的职责,不能把各自的功能与其它层次相混合。每一个应用层都应该和其他层隔离开来,但允许使用接口在层间进行通信(面向接口编程正是Spring所推崇的编程方式)。下面我们来看一下采用SSH架构,每一层所采用的技术,每一层应该和不应该提供的服务,表现层,一个典型Web应用的末

25、端是表现层,这一层面的功能一般由Struts来实现。 一般的Java Web应用的开发者都指导Struts所提供的功能。但是在实际开发中往往把不应由Struts实现的功能,如业务逻辑等放进Struts的org.apache.struts.Action中。Struts在Web应用中完成的功能包括: 管理用户的请求和响应 提供一个控制器,将调用委托到业务逻辑层来处理 把可以在视图中表现的模型对象组装起来 进行客户端的数据校验 下面的一些功能通常不应该由Struts来实现: 直接与数据库打交道,比如调用JDBC等 执行页应用相关的业务逻辑方面的校验 进行事务管理,持久层,一个典型Web应用的另一端是

26、持久层。这也是应用程序中最容易失去控制的地方。开发人员往往会低估持久层的复杂程度,这样随着项目的进行,持久层的开发常常会缺乏所需的功能并且难以管理。所幸我们现在有了Hibernate这样的开源对象关系映射(ORM)框架。在持久层可以实现的功能包括: 查询关系信息,把查询结果映射到对象中。Hibernate是通过HQL查询语言来实现这一功能的。HQL是一种用于查询对象的自然语言,学习起来并不需要花费太大的力气。 执行数据库的CRUD操作(存储、更新、删除存储在数据库中的信息) 如下的功能不应该在持久层来实现: 不要去实现有关的业务逻辑功能,而只进行有关的数据访问操作。 不要把持久逻辑和表现逻辑耦

27、合在一起。如不要把JSP或者Servlet中的逻辑直接和数据访问进行通信。而应该把持久性逻辑隔离在自己的层中,这样应用将具有很高的灵活性。,业务层(服务层),典型Web应用的中间组件一般是业务层和服务层。实际开发中服务层经常被忽略,而服务层的代码散布于UI表现层或者持久层中,这样就导致了紧密耦合的应用,产生的代码也难以维护。Spring很好地把业务层和服务层功能进行了划分。使用Spring可以通过简单的XML进行对象的连接和管理,进行事务管理、数据访问对象的管理等。业务层应该解决的问题包括: 处理应用相关的业务逻辑和业务校验 管理事务 允许与其它层进行交互的接口 管理业务及对象之间的依赖性(通

28、过依赖注入来实现) 管理业务层到表现层的实现。,领域模型层,领域模型所包含的是表达实际业务对象的对象。这一层能让开发者不再构建不必要的数据传输对象DTO来匹配其领域对象。例如借助Hibernate可以把数据库信息读取到一个领域对象中,这样就可以在离线情况下将其表现在UI层。这些对象也可以跨过表现层发送回去,然后进行数据库更新。另外借助Hibernate的Session功能,也不再需要将对象转换成DTO。这样的编程模型能够使得Java开发者以OO风格的方式自然地处理对象,而无需编写额外的代码。,OUTLINE,J2EE基础知识介绍,JSP介绍,开发环境,JDBC介绍,开源框架,用到的工具集,JDK version 1.4.2 Tomcat version 5.0 or later MyEclipse version 4.0 or later WebLogic version 8.1.4 Struts version 1.2 Spring version 2.* Hibernate version 3 Log4j,End,Thanks a lot!,互动讨论,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1