JAVA网页编程之详解J2EE的13种中心手艺
再举这样一个例子:如果你想对一个数字取绝对值,你会怎么做呢?java的做法是intc=Math.abs(-166);而ruby的做法是:c=-166.abs。呵呵,这就看出了java与ruby的区别。j2ee|详解Java最后是在扫瞄器和客户端呆板中袍笏登场的。事先,良多人质疑它是不是合适做服务器真个开辟。如今,跟着对Java2平台企业版(J2EE)第三方撑持的增加,Java被普遍回收为开辟企业级服务器端办理计划的首选平台之一。J2EE平台由一整套服务(Services)、使用程序接口(APIs)和协定组成,它对开辟基于Web的多层使用供应了功效撑持。本文将注释支持J2EE的13种中心手艺:JDBC,JNDI,EJBs,RMI,JSP,Javaservlets,XML,JMS,JavaIDL,JTS,JTA,JavaMail和JAF,同时还将形貌在什么时候、那边必要利用这些手艺。固然,还要先容这些分歧的手艺之间是怎样交互的。别的,为了让您更好地感觉J2EE的实在使用,我们将在WebLogic使用服务器,来自BEASystems公司的一种广为使用的产物情况上去先容这些手艺。不管关于WebLogic使用服务器和J2EE的老手,仍是那些想懂得J2EE能带来甚么优点的项目办理者和体系剖析员,信任本文必定很有参考代价。微观印象:散布式布局和J2EE已往,二层化使用--一般被称为client/server使用--是人人议论的最多的。在良多情形下,服务器供应的唯一服务就是数据库服务。在这类办理计划中,客户端程序卖力数据会见、完成营业逻辑、用符合的款式显现了局、弹出预设的用户界面、承受用户输出等。client/server布局一般在第一次部署的时分对照简单,但难于晋级或改善,并且常常基于某种专有的协定,一般是某种数据库协定。它使得重用营业逻辑和界面逻辑十分坚苦。更主要的是,在Web时期,二层化使用一般不克不及表现出很好的伸缩性,因此很难顺应Internet的请求。Sun计划J2EE的部分原因就是想办理二层化布局的缺点。因而,J2EE界说了一套尺度来简化N层企业级使用的开辟。它界说了一套尺度化的组件,并为这些组件供应了完全的服务。J2EE还主动为使用程序处置了良多完成细节,如平安、多线程等。用J2EE开辟N层使用包含将二层化布局中的分歧层面切分红很多层。一个N层化使用A可以为以下的每种服务供应一个分隔的层:显现:在一个典范的Web使用中,客户端呆板上运转的扫瞄器卖力完成用户界面。静态天生显现:只管扫瞄器能够完成某些静态内容显现,但为了兼容分歧的扫瞄器,这些静态天生事情应当放在Web服务器端举行,利用JSP、Servlets,大概XML(可扩大标志言语)和(可扩大款式表言语)。营业逻辑:营业逻辑合适用SessionEJBs(前面将先容)来完成。数据会见:数据会见合适用EntityEJBs(前面将先容)和JDBC来完成。背景体系集成:同背景体系的集成大概必要用到很多分歧的手艺,至于何种最好必要依据背景体系的特性而定。
您大概入手下手惊奇:为何有这么多的层?现实上,多层体例可使企业级使用具有很强的伸缩性,它同意每层专注于特定的脚色。比方,让Web服务器卖力供应页面,使用服务器处置使用逻辑,而数据库服务器供应数据库服务。因为J2EE创建在Java2平台尺度版(J2SE)的基本上,以是具有了J2SE的一切长处和功效。包含“编写一次,各处可用”的可移植性、经由过程JDBC会见数据库、同原有企业资本举行交互的CORBA手艺,和一个经由考证的平安模子。在这些基本上,J2EE又增添了对EJB(企业级Java组件)、Javaservlets、Java服务器页面(JSPs)和XML手艺的撑持。散布式布局与WebLogic使用服务器J2EE供应了一个框架--一套尺度API--用于开辟散布式布局的使用,这个框架的实践完成留给了第三方厂商。部分厂商只是专注于全部J2EE架构中的的特定组件,比方Apache的Tomcat供应了对JSP和servlets的撑持,BEA体系公司则经由过程其WebLogic使用服务器产物为全部J2EE标准供应了一个较为完全的完成。WebLogic服务器已使创建和部署伸缩性较好的散布式使用的历程年夜为简化。WebLogic和J2EE代你处置了大批惯例的编程义务,包含供应事件服务、平安范畴、牢靠的动静、名字和目次服务、数据库会见和毗连池、线程池、负载均衡和容错处置等。经由过程以一种尺度、易用的体例供应这些大众服务,象WebLogic服务器如许的产物作育了具有更好伸缩性和可保护性的使用体系,使其为大批的用户供应了增加的可用性。J2EE手艺在接上去的部分里,我们将形貌组成J2EE的各类手艺,而且懂得WebLogic服务器是怎样在一个散布式使用中对它们举行撑持的。最经常使用的J2EE手艺应当是JDBC、JNDI、EJB、JSP和servlets,对这些我们将作更细心的考查。1、JavaDatabaseConnectivity(JDBC)JDBCAPI以一种一致的体例来对林林总总的数据库举行存取。和ODBC一样,JDBC为开辟职员埋没了分歧数据库的分歧特征。别的,因为JDBC创建在Java的基本上,因而还供应了数据库存取的平台自力性。JDBC界说了4种分歧的驱动程序,现分述以下:范例1:JDBC-ODBCBridge在JDBC呈现的早期,JDBC-ODBC桥明显长短常有有用意义的,经由过程JDBC-ODBC桥,开辟职员可使用JDBC来存取ODBC数据源。不敷的是,他必要在客户端安装ODBC驱动程序,换句话说,必需安装MicrosoftWindows的某个版本。利用这一范例你必要就义JDBC的平台自力性。别的,ODBC驱动程序还必要具有客户真个把持权限。
范例2:JDBC-nativedriverbridgeJDBC当地驱动程序桥供应了一种JDBC接口,它创建在当地数据库驱动程序的顶层,而不必要利用ODBC。JDBC驱动程序将对数据库的API从尺度的JDBC挪用转换为当地挪用。利用此范例必要就义JDBC的平台自力性,还请求在客户端安装一些当地代码。范例3:JDBC-networkbridgeJDBC收集桥驱动程序不再必要客户端数据库驱动程序。它利用收集上的两头服务器来存取数据库。这类使用使得以下手艺的完成有了大概,这些手艺包含负载平衡、毗连缓冲池和数据缓存等。因为第3品种型常常只必要绝对更少的下载工夫,具有平台自力性,并且不必要在客户端安装并获得把持权,以是很合适于Internet上的使用。范例4:PureJavadriver第4品种型经由过程利用一个纯Java数据库驱动程序来实行数据库的间接会见。此范例实践上在客户端完成了2层布局。要在N-层布局中使用,一个更好的做法是编写一个EJB,让它包括存代替码并供应一个对客户端具无数据库自力性的服务。WebLogic服务器为一些一般的数据库供应了JDBC驱动程序,包含Oracle,Sybase,MicrosoftSQLServer和Informix。它也带有一种JDBC驱动程序用于Cloudscape,这是一种纯Java的DBMS,WebLogic服务器中带有该数据库的评价版本。以下让我们看一个实例。JDBC实例在这个例子中我们假定你已在Cloudscape中创建了一个PhoneBook数据库,而且包括一个表,名为CONTACT_TABLE,它带有2个字段:NAME和PHONE。入手下手的时分先装载CloudscapeJDBCdriver,并哀求drivermanager失掉一个对PhoneBookCloudscape数据库的毗连。经由过程这连续接,我们能够机关一个Statement对象并用它来实行一个复杂的SQL查询。最初,用轮回来遍历了局集的一切数据,并用尺度输入将NAME和PHONE字段的内容举行输入。
importjava.sql.*;publicclassJDBCExample{publicstaticvoidmain(Stringargs[]){try{Class.forName("COM.cloudscape.core.JDBCDriver");Connectionconn=DriverManager.getConnection("jdbc:cloudscape:PhoneBook");Statementstmt=conn.createStatement();Stringsql="SELECTname,phoneFROMCONTACT_TABLEORDERBYname";ResultSetresultSet=stmt.executeQuery(sql);Stringname;Stringphone;while(resultSet.next()){name=resultSet.getString(1).trim();phone=resultSet.getString(2).trim();System.out.println(name+","+phone);}}catch(Exceptione){//Handleexceptionheree.printStackTrace();}}}
接着我们来看一看JDBC是怎样在企业使用中的举行利用。
JDBC在企业级使用中的使用以上实例实际上是很基础的,大概有些微乎其微。它假定了一个2层布局。在一个多层的企业级使用中,更年夜的多是在客户端和一个EJB举行通讯,该EJB将创建数据库毗连。为了完成和改善可伸缩性和体系功能,WebLogic服务器供应了对毗连缓冲池connectionpool的撑持。Connectionpool削减了创建和开释数据库毗连的损耗。在体系启动今后便可创建如许的缓冲池,今后仍旧再有对数据库的哀求,WebLogic服务器能够很复杂地从缓冲池中掏出数据。数据缓冲池能够在WebLogic服务器的weblogic.properties文件中举行界说。在企业级使用的另外一个罕见的数据库特征是事件处置。事件是一组声名statement,它们必需做为统一个statement来处置以包管数据完全性。缺省情形下JDBC利用auto-commit事件形式。这能够经由过程利用Connection类的setAutoCommit()办法来完成。如今我们已对JDBC有了一些熟悉,上面该转向JavaNamingandDirectoryInterface(JNDI)了2、JNDIAPI被用于实行名字和目次服务。它供应了分歧的模子来存取和操纵企业级的资本如DNS和LDAP,当地文件体系,后者在使用服务器中的对象。在JNDI中,在目次布局中的每个结点称为context。每个JNDI名字都是相对context的。这里没有相对名字的观点存在。对一个使用来讲,它能够经由过程利用InitialContext类来失掉其第一个context:
Contextctx=newInitialContext();
使用能够经由过程这个初始化的context经有这个目次树来定位它所必要的资本或对象。比方,假定你在Weblogic服务器中睁开了一个EJB并将home接口绑定到名字myApp.myEJB,那末该EJB的某个客户在获得一个初始化context今后,能够经由过程以下语句定位home接口:
MyEJBHomehome=ctx.lookup("myApp.myEJB");
在这个例子中,一旦你有了对被哀求对象的参考,EJB的home接口就能够在它下面挪用办法。以上关于JNDI的会商只是冰山之一角罢了。假如要更进一步地在context中查找对象,JNDI也供应了一些办法来举行以下操纵: 将一个对象拔出或绑定到context。这在你睁开一个EJB的时分是很无效的。从context中移往对象。列出context中的一切对象。创立或删除子一级的context。接上去,我们要入手下手存眷EJB了。
3、EnterpriseJavaBeans(EJB)J2EE手艺之以是博得某体普遍器重的缘故原由之一就是EJB。它们供应了一个框架来开辟和实行散布式商务逻辑,由此很明显地简化了具有可伸缩性和高度庞大的企业级使用的开辟。EJB标准界说了EJB组件在什么时候怎样与它们的容器举行交互感化。容器卖力供应公用的服务,比方目次服务、事件办理、平安性、资本缓冲池和容错性。EJB标准界说了3中基础的bean范例:Statelesssessionbeans:供应某种单一的服务,不保持任何形态,在服务器妨碍产生时没法持续存在,性命期绝对较短。比方,一个statelesssessionbean大概被用于实行温度转换盘算。Statefulsessionbean:T供应了与客户真个会话交互,能够存储形态从而代表一个客户。典范例子是购物车。Statefulsessionbean在服务器妨碍时没法持续保存,性命气绝对较短。每个实例只用于一个单个的线程。Entitybeans:供应了分歧性数据的暗示--一般寄存在数据库中--在服务器妨碍产生后能持续存在。多用户情形下可使用EJB来暗示不异的数据。entityEJB的一个典范例子是客户的帐号信息。只管有以上的区分,一切的EJB仍是有很多的配合的地方。它们都处置homeinterface。它界说了一个客户端是怎样创立与灭亡EJB的。能够在bean中对界说了客户端办法的远程接口举行挪用;bean类则实行了次要的商务逻辑。形貌EJB的开辟已超越了本文的局限。可是,假如一个EJB已被开辟了大概从第三方举行了购置,它就必需在使用服务器中举行公布。WebLogicServer5.1带有一个EJBDeployerTool来帮忙处置EJB的公布。当你利用EJBDeployerTool的时分,你要界说客户端所用的JNDI名字来定位EJB。DeployerTool将天生wrapper类来处置和容器的通讯和在一个jar文件中把被哀求的Java类绑定在一同。一旦EJB被公布,客户端就能够利用它的JNDI名字来定位EJB。起首,它必需失掉一个到home接口的reference。然后,客户端可使用该接口,挪用一个create()办法来失掉服务器上运转的某个bean实例的句柄;最初,客户端可使用该句柄在bean中挪用办法。懂得EJB后,让我们再来看JSP。4、JavaServerPages(JSPs)我们两头大概已有很多人已熟习Microsoft的ActiveServerPages(ASP)手艺了。JSP和ASP绝对应的,但更具有平台对峙性。他们被计划用以匡助Web内容开辟职员创立静态网页,而且只必要绝对较少的代码。即便Web计划师不明白怎样编程也能够利用JSP,由于JSP使用是很便利的。JSP页面由HTML代码和嵌进个中的Java代码所构成。服务器在页面被客户端所哀求今后对这些Java代码举行处置,然后将天生的HTML页面前往给客户真个扫瞄器。上面我们来看一个JSP的复杂实例。它只显现了服务器确当前日期和工夫。固然,对语法的详细注释已超越了本文的局限,但我们仍是能够很直不雅地看到,Java代码被放在标记的两头,而Java的表达式则放在标记之间。
DateJSPsampleThecurrentdateis.
您大概偶然候传闻过JHTML。这是JSP之前的一种较老的尺度。WebLogic服务器既可撑持JSP,又可撑持JHTML。请注重,在缺省情况下,JSP在WebLogic服务器中并没有处于无效形态。要使之无效,你能够编纂weblogic.properties文件。假如Web服务器还没有处于无效形态,则要先使之无效。Servlet的情形和JSP是一样的。5、Javaservletsservlet供应的功效年夜多与JSP相似,不外完成的体例分歧。JSP一般是年夜多半HTML代码中嵌进大批的Java代码,而servlets全体由Java写成而且天生HTML。servlet是一种小型的Java程序,它扩大了Web服务器的功效。作为一种服务器真个使用,当被哀求时入手下手实行,这和CGIPerl剧本很类似。Servlets和CGI剧本的一个很年夜的区分是:每个CGI在入手下手的时分都请求入手下手一个新的历程--而servlets是在servlet引擎中以分别的线程来运转的。因而servlets在可伸缩性上供应了很好的改善。在开辟servlets的时分,您经常必要扩大javax.servlet.http.HttpServlet类,而且override一些它的办法,个中包含:
service():作为dispatcher来完成命令-界说办法doGet():处置客户真个HTTPGET哀求。doPost():举行HTTPPOST操纵
别的的办法还包含处置分歧范例的HTTP哀求--能够参考HttpServletAPI文档。以上形貌的是尺度J2EEServletAPI的各类办法。WebLogic服务器供应了一个该API完全的完成路子。一旦你开辟了一个servlet,你就能够在weblogic.properties中加以注册并由此能够在WebLogic服务器中对它举行设置。经由过程Javaservlets,我们已抵达了J2EE次要手艺的开端了。但J2EE所供应的其实不止于这些。上面的段落中我们将扼要地看一下现存的一些手艺,包含RMI,JavaIDL和CORBA,JTA,和XML,等。6、RemoteMethodInvocation(RMI)正如其名字所暗示的那样,RMI协定是在远程对象上挪用一些办法。它利用了一连序列体例在客户端和服务器端传送数据。RMI是一种被EJB利用的更上层的协定。7、JavaIDL/CORBA在JavaIDL的撑持下,开辟职员能够将Java和CORBA集成在一同。他们能够创立Java对象并使之可在CORBAORB中睁开,大概他们还能够创立Java类并作为和别的ORB一同睁开的CORBA对象的客户。后一种办法供应了别的一种路子,经由过程它Java能够被用于将你的新的使用和legacy体系相集成。
8、JavaTransactionArchitecture(JTA)/JavaTransactionService(JTS)JTA界说了一种尺度的API,使用体系由此能够存取各类事件监控。JTS是CORBAOTS事件监控的基础的完成。JTS划定了事件办理器的完成体例。该事件办理器是在高层撑持JavaTransactionAPI(JTA)标准,而且在较底层完成OMGOTSspecification的Java映像。JTS事件办理器为使用服务器、资本办理器、自力的使用和通讯资本办理器供应了事件服务。9、JavaMailandJavaBeansActivationFrameworkJavaMail是用于存取邮件服务器的API,它供应了一套邮件服务器的笼统类。不但撑持SMTP服务器,也撑持IMAP服务器。JavaMail使用JavaBeansActivationFramework(JAF)来处置MIME-编码的邮件附件。MIME的字撙节能够被转换成Java对象,大概转换自Java对象。由此年夜多半使用都能够不必要间接利用JAF。10、JavaMessagingService(JMS)JMS是用于和面向动静的两头件互相通讯的使用程序接口(API)。它既撑持点对点的域,有撑持公布/定阅(publish/subscribe)范例的域,而且供应对以下范例的撑持:经承认的动静传送,事件型动静的传送,分歧性动静和具有耐久性的定阅者撑持。JMS还供应了另外一种体例来对您的使用与legacybackend体系相集成。11、ExtensibleMarkupLanguage(XML)XML是一种能够用来界说别的标志言语的言语。它被用来在分歧的商务过程当中共享数据。XML的开展和Java是互相自力的,可是,它和Java具有的不异方针恰是平台自力性。经由过程将Java和XML的组合,您能够失掉一个完善的具有平台自力性的办理计划。今朝正有很多分歧的公司在为Java和XML的组合而勉力。假如要懂得更多的这方面的信息,能够会见Sun的Java-XML页面,大概IBMdeveloperWorks的XMLZone。
不得不提一下的是:.net是看到java红,而开发出来的工具。 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台 是一种为 Internet发展的计算机语言 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading) 让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢? 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
页:
[1]