a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 311|回复: 0

[专业语言] JAVA认证:J2EE学习中值得研究的开源项目详解

[复制链接]
发表于 2012-8-4 12:44:44 | 显示全部楼层 |阅读模式
这篇文章写在我研究J2SE、J2EE近三年后。前3年我研究了J2SE的Swing、Applet、Net、RMI、Collections、 IO、JNI……研究了J2EE的JDBC、Sevlet、JSP、JNDI…..不久我发现这些仿佛太浅陋了:首先,我发现自己知道的仅仅是java提 供的年夜量的API,根柢不能很好地使用它; 其次,我根柢就没有学到任何有助于写轨范的常识,此时我也只不外能写个几页的小轨范。出于这个幼稚的设法我研究了JDK中Collections、 Logger、IO…..的源代码,发现这个世界真的很神奇,竟然有如斯的高手――操作java说话最最根基的语法,缔造了这些优异的 Framework。6 p9 i) J, X6 a% I( @- s7 l
年夜此一发不成收拾,我继续研究了J2EE的部门,又发现这是一个我根柢不能理解的标的目的(曾经有半年裹足不前),为什么只有接口没有实现啊!后出处于 一向使用Tomcat、Derby等软件俄然发现:哦!原本J2EE仅仅是一个尺度,只是一个架构。真正的实现是分歧供给商供给的。2 H( l3 v( y+ S) T
接着我研究了MOM4J、OpenJMS、Mocki、HSQLD……发现这些就是J2EE的实现啊!原本软件竟会如斯复杂,竟会如斯做….规范和 实现又是若何成为一体的呢?经由过程膳缦沔的研究发现:原本J2EE后面竟然有太多太多理念、太多太多的相似!这些相似就是其背后的理念――设计模式!(很幸 运,在我学java的时辰,我一捌揭捉java的一个标的目的就会睹突皓关于设计模式的书!很幸运,到能领略一点的时辰能真正知道这是为什么!)其实模式就是一 种思维体例、就是一种理念……模式是要运用到轨范中的,只有年夜真正的项目中才能体味模式的寄义……
' ~1 Q9 f; R/ v) w; f, G8 @学得越多,发现懂得越少!在进修过程中发现一些很有用,很值得进修的开源项目,今天在此举荐给巨匠。
) f. r4 Y; Y3 d一、JavaServlet和JSP标的目的
9 c' P* K% X3 l6 C: q3 l7 [1 j良多人都是年夜Servlet和JSP步入J2EE的。它就是J2EE的默示层,用于向客户呈现处事器上的内容。J2EE很主要的方面。不罗嗦了!年夜 家都知道的!下面就瞥绶举荐吧!
2 Q( h5 n. ~7 \1 B" `$ f# v1. Jakarta Tomcat4 d) B  }4 |/ O3 c7 t6 M
Apache基金会供给的免费的开源的Serlvet容器,它是的Jakarta项目中的一个焦点项目,由Apache、Sun和其它一些公司(都 是IT界的年夜鳄哦)及小我配合开发而成,全世界绝年夜部门Servlet和Jsp的容器都是使用它哦!因为Sun的介入和撑持,最新的Servlet和 Jsp规范总能在Tomcat中获得浮现。+ E! g" G8 j4 Z' K, x9 V; R3 G
不外它是一个很是很是全的Serlvet容器,全数源码可能有4000页,对于初学者或者一般的熟行可能仍是斗劲年夜了!在你有能力时举荐研究!下载 地址:http://jakarta.apache.org/tomcat/index.html; [1 f  K2 r6 B. M8 n/ Z
下面举荐两个小一点的吧!; V, w/ T; C) P& }& B. u' ~5 T
2. Jetty% X% P. W  ?& Q* F4 W
Jetty是一个开放源码的HTTP处事器和Java serverlet容器。源代码只有1000页摆布,很值灯揭捉究。有乐趣可以去http://jetty.mortbay.com/下载看看。我曾经翻了 一下,只是今朝没有时刻。(都化在博客上了,等博客根基定型,且内容完整了,再干我热衷的事务吧!)
% a( e: `, b% \) Q; ?: P3. Jigsaw
! q9 q6 H( q4 S% l1 N/ [( |0 UJigsaw是W3C开发的HTTP,基于Java 的处事器,供给了未来 Web 手艺成长的蓝图。W3C知道吧!(太有名气了,良多尺度都是它制订的!有空经常去看看吧!)下载网址:http://www.w3.org/Jigsaw 代码仅仅1000页摆布。" I, N* c7 C3 M( t1 m- d7 ~; c2 o) R
4. Jo!, m7 v( ]0 t; Y# |" c5 K  ^9 \
Jo!是一个纯Java的实现了Servlet API 2.2, JSP 1.1, 和HTTP/1.1的Web处事器。它的特征搜罗撑持servlet tag,撑持SSI,高级线程打点,虚拟主机,数据缓存,自动压缩text或HTML文件进行传输,国际化撑持,自动年夜头加载Servlet、Jsp,自 动年夜头加载web工程文件(WARs),撑持WAR热部署和一个Swing节制台。jo!可以被用做jboss和jakarta avalon-phoenix的web容器。下载地址http://www.tagtraum.com/ 。我死力举荐巨匠在研究Tomcat之前研究该软件,主若是其比Tomcat小多了,且开发者供给斗劲全的手册。该标的目的研究这两个也就可以了!
7 I! u/ R' W! M! ~二、JDBC标的目的
6 o' V' K1 T# s3 \9 R良多人都喜欢JDBC,数据库吗!很深邃的工具,一听就可以糊弄人。其实等你真正研究了数据库的实现后发现,接口其拭魅真的太简单,太完美了!要想设 计如斯优异的框架仍是需要进修的。下面就举荐几个数据库的实现吧!
- J- I* A6 [! r- |1 t1. Hypersonic SQL! A. |( m! r$ b0 C6 G
Hypersonic SQL开源数据库标的目的斗劲风行的纯Java开发的关系型数据库。仿佛不是JDBC兼容的,JDBC的良多高级的特征都没有撑持,不外幸好撑持ANSI- 92 尺度 SQL语法。我举荐它主若是它的代码斗劲少1600页摆布,如斯小的数据库值灯揭捉究,而且他占的空间很小,年夜约只有160K,拥有快速的数据库引擎。举荐 你的第一个开源数据库。下载地址:http://hsqldb.sourceforge.net/。9 m# H$ i) t3 p% T5 i; [" u
2. Mckoi DataBase
" d4 }* [. i( [, Z6 u  dMcKoiDB 和Hypersonic SQL差不多,它是GPL 的license的纯Java开发的数据库。他的 JDBC Driver 是使用 JDBC version 3 的 Specifaction。 他也是遵循 SQL-92 的尺度,也尽量撑持新的 SQL 特色, 而且撑持 Transaction 的功能。两个可以选一个吧!下载地址:http://mckoi.com/database/。
! T6 E$ h0 F2 n" |2 i  z8 ~3 a3. Apache Derby- W2 Q1 v. ]9 w; \# L# c
学Java的数据库我建议使用Apache Derby ,研究数据库想成为一个数据库的高手我建议你先研究Apache Derby。Apache Derby是一个高质量的、纯 Java开发的嵌入式关系数据库引擎,IBM® 将其捐募给Apache开放源码社区,同时IBM的产物CloudSpace是它对应的产物。Derby是基于文件系统,具有高度的可移植性,而且是轻量 级的,这使得它很是便于发布。主若是没有商业用户的很好的界面,没有其太多的功能。不外对于我们使用数据库、研究数据库仍是极其有用的。对于中小型的企业 说诚恳话你也不要用什么Oracle、SqlServer了,用Derby就可以了,况且是开源的呢!只要能阐扬其利益也不轻易啊!下载地 址:http://incubator.apache.org/derby。
% P# q1 r4 \- t) T不外在没有足够的能力前,不要试图读懂它!注释和源代码15000页摆布,我一年的阅读量!能读下来而且能真正体味它,绝对高手!你能读完 Derby的源代码只有两种可能:1.你成为顶尖的高手――至少是数据库这部门; 2.你疯了。选择吧!!!!作为我自己我先选择Hypersonic SQL这样的数据库先研究,能过这一关,再继续研究Derby!不就是一年的阅读量吗!我可以化3年去研究若何做一个数据库其实仍是很值得的!有的人搞 IT一辈子自己什么都没有做,也到净有研究别人的工具!: f, l% F1 [4 h5 I( [1 Z
作为一个IT落伍于别国若干年的、年夜事IT的下流财富“外包”的国家的IT年夜业人员,我认为仍是先研究别人的优异的工具斗劲好!可以先研究别人的, 然后消化,学为己用!一心凭空诬捏其实遗憾!
1 k2 H% V: @' {. g! \/ v: }三、JMS标的目的2 w( \4 Z0 y2 F% N
JMS可能对巨匠来说是一个斗劲目生的标的目的!其实JMS是一个斗劲轻易理解,轻易上手的标的目的。主若是Java动静处事,API也是相当简单的。不外 在企业应用中相当普遍。下面就介绍几个吧!
0 j! a- ?- \4 K% u- X# ]1. MOM4J
/ y. W3 H% X( L9 T4 IMOM4J是一个完全实现JMS1.1规范的动静中心件而且向下兼容JMS1.0与1.02。它供给了自己的动静措置存储使它自力于关系数据与语 言,它的客户端可以用任何说话开发。它可以算是一个小麻雀,很全实现也斗劲简单!它包含一个命名处事器,一个动静处事器,同时供给自己的持续层。设计也相 当的巧妙,完全操作操作系统中文件系统设计的不美观念。代码也很少,250页摆布,比来我在写该实现的源代码阅读方面的书,但愿明年年中能与巨论碰头!下载地 址:http://mom4j.sourceforge.net/index.html。
4 f  e. t4 n3 h5 ?% i$ Q" S2 ]! o* R2. OpenJMS
, o  ]% m, P$ k" D# Q- hOpenJMS是一个开源的Java Message Service API 1.0.2 规范的实现,它包含有以下特征:
% R) g6 k8 w3 H* u" a; }" x1. 它既撑持获得点(point-to-point)(PTP)模子和发布/订阅(Pub/Sub)模子。" z- G2 [' |5 D) G  D5 [6 Z& D
2. 撑持同步与异步动静发送 。( m( O- ?% y' E. i- A# }6 `0 Z9 h
3. JDBC持久性打点使用数据库表来存储动静 。. V, [, d. r8 u7 h
4. 可视化打点界面。
3 i  I" q+ w* h; S  j0 c5 U5. Applet撑持。
8 p8 V0 F) ^$ k. o& u7 D1 I6. 能够与Jakarta Tomcat这样的Servlet容器连系。
* \$ K4 `- |. V7 I' R3 D" f$ l7. 撑持RMI, TCP, HTTP 与SSL和谈。4 Y. b6 q1 t9 @+ L* Y
8. 客户端验证 。
% \# X0 o6 j& L) R9 c9. 供给靠得住动静传输、事务和动静过滤。
, W! d) ?  Q: l2 e% s很好的JMS标的目的的开源项目!我今朝也在研究它的源代码!进修它可以趁逼揭捉究JNDI的实现、以及收集通信的细节。这是我JMS标的目的研究的第二个开 源项目。代码量1600页摆布吧!下载地址:http://openjms.sourceforge.net/index.html& }% }5 }* v. |( H
3. ActiveMQ1 R2 e( Q: k4 u
ActiveMQ是一个开放源码基于Apache 2.0 licenced 发布并实现了JMS 1.1。它能够与Geronimo,轻量级容器和任Java应用轨范无缝的给合。主若是Apache的可以肆意的使用和发布哦!小我斗劲喜欢Apache 的源代码!下载地址:http://activemq.codehaus.org/
% R( D! W& y8 h4. JORAM6 K  M7 g  e; R1 X
JORAM一个近似于openJMS分布在ObjectWeb之下的JMS动静中心件。ObjectWeb的产物也长短常值灯揭捉究的!下面我还会给 巨匠此吐矣闽ObjectWeb的产物。下载地址:http://joram.objectweb.org/
! A2 }( P9 q. f/ J; S5 q6 L  F我小我举荐:OpenJMS和ActiveMQ!0 m: B* `+ d  q2 W, @9 _" P
四、EJB标的目的6 s* V. ?( |* o7 _4 }- Q9 R
EJB一个斗劲“高级”的标的目的。Sun公司曾经以此在分布式计较规模重拳出击。不外自年夜呈现了Spring、Hibernation……后似乎没落 了!这个标的目的零丁开源的也斗劲少,首要EJB是和JNDI、JDBC、JMS、JTS、JTA连鲜ё仝一路的是以很少有零丁的。下面举荐两个不外仿佛也要下 载其它类库。7 Z8 C6 X4 x. g9 C' y* o/ b
1. EasyBeans; s0 X' v8 n8 w0 r
ObjectWeb的一个新的项目,一个轻量级的EJB3容器,虽然还没有正式发布,可是已经可以年夜它们的subversion仓库中检出代码。代 码量斗劲小600页摆布,熟读它可以对收集编程、架构、RMI、容器的状况设计斗劲体味了!即学会EJB又能进修其它设计体例何乐而不为哦!下载地 址:http://easybeans.objectweb.org/
/ N" O* L- q! ]9 Z9 h. ]3 h" n2. OpenEJB6 m: {5 m: q3 \$ t# ?
OpenEJB是一个预生成的、自包含的、可移植的EJB容器系统,可以被插入到肆意的处事器情形,搜罗应用轨范处事器,Web处事器,J2EE平 台, CORBA ORB和数据库等等。OpenEJB 被用于 Apple的WebObjects。听起来很好,我今朝没有研究过。不知道我就不举荐了。下载地址:http://www.openejb.org/& n' K0 M5 H0 T# i- x8 k
五、J2EE容器
7 c8 R% {% M" ~/ z膳缦沔谈了这么多,都是J2EE的各个标的目的的。其实J2EE是一个规范,J2EE的产物一般要求专业供给商必需供给它们的实现。这些实现自己就是 J2EE容器。市场优势行的J2EE容器良多,在开源规模风行的只有很少,很少。其中最闻名的是JBoss。
, R/ y, @' b8 B5 I% K/ L4 o4 @1. JBoss
$ _% H/ k& m0 t3 H0 s5 i4 j& e* d在J2EE应用处事器规模,Jboss是成长最为迅速的应用处事器。因为Jboss遵循商业友好的LGPL授权分发,而且由开源社区开发,这使得 Jboss广为风行。此外,Jboss应用处事器还具有良多优异的特质。& z" ?4 c- s: e3 `, j$ e
其一,它将具有概缦泓性的JMX微内查处事作为其总线结构;! ?9 w! {8 y/ z# P3 S: C
其二,它自己就是面向处事的架构(Service-Oriented Architecture,SOA);# O7 u1 h# I3 d" Y$ m, d. C  h) H
其三,它还具有统一的类装载器,年夜而能够实现应用的热部署和热卸载能力。是以,它是高度模块化的和松耦合的。Jboss用户的积极反馈告诉我 们,Jboss应用处事器是健壮的、高质量的,而且还具有精采的机能。为知足企业级市场日益增添的需求,Jboss公司年夜2003年起头就推出了 24*7、专业级产物撑持处事。同时,为拓展Jboss的企业级市场,Jboss公司还签定了良多渠道合作伙伴。好比,Jboss公司同HP、 Novell、Computer Associates、Unisys等都是合作伙伴。0 k$ q5 O2 M+ j9 p/ A% t
在2004年6月,Jboss公司公布揭晓,Jboss应用处事器经由过程了Sun公司的J2EE认证。这是Jboss应用处事器成长史上至今为止最主要的 里程碑。与此同时,Jboss一向在紧跟最新的J2EE规范,而且在某些手艺规模引领J2EE规范的开发。是以,无论在商业规模,仍是在开源社 区,Jboss成为了第一个经由过程J2EE 1.4认证的主流应用处事器。此刻,Jboss应用处事器已经真正成长成具有企业强度(即,撑持关头级使命的应用)的应用处事器。
- K* d* _6 l$ a  w1 `Jboss 4.0作为J2EE认证的主要成不美观之一,已经于2004年9月顺遂发布了。同时,Jboss 4.0还供给了Jboss AOP(Aspect-Oriented Programming,面向方面编程)组件。迩来,AOP吸引了年夜量开发者的关注。它供给的新的编程模式使得用户能够将方面(好比,事务)年夜底层营业逻 辑平分手出来,年夜而能够缩短软件开发周期。用户能够零丁使用Jboss AOP,即能够在Jboss应用处事器外部使用它。或者,用户也可以在应用处事器情形中使用它。Jboss AOP 1.0已经在2004年10月发布了。 很有名吧!可以下载一个用一下,下载地址:http://www.jboss.org/# u( @4 v$ T( E) B
关于JBoss的使用资料也很是多,甚至比商业软件的还多。有机缘研究吧!, q8 V( m! m2 s  E& ?# |
2. JOnAS  j( {( n& @8 P7 ~/ `
JOnAS是一个开放源代码的J2EE实现,在ObjectWeb协会中开发。整合了Tomcat或Jetty成为它的Web容器,以确保合适 Servlet 2.3和JSP 1.2规范。JOnAS处事器依靠或实现以下的Java API:JCA、JDBC、JTA 、JMS、JMX、JNDI、JAAS、JavaMail 。下载地址:http://jonas.objectweb.org/- D8 ~0 |& `2 B7 C* w% E
3.Apache Geronimo
; G5 x7 {6 `3 FApache Geronimo 是 Apache 软件基金会的开放源码J2EE处事器,它集成了众多前进前辈手艺和设计理念。 这些手艺和理念年夜多源自自力的项目,设置装备摆设和部署模子也各不不异。 Geronimo能将这些项目捉式的设置装备摆设及部署完全整合到一个统一、易用的模子中。作为合适J2EE尺度的处事器,Geronimo供给了丰硕的功能集 和无责任 Apache 许可,具备“当即部署”式J2EE 1.4容器的各类利益,其中搜罗:+ z( g' s, l4 J3 w( q! w
1. 合适J2EE1.4尺度的处事器 。) y. k" N) X* V: I, F; @
2. 预集成的开放源码项目 。
& y7 W3 ^2 t2 K1 W+ g3. 统一的集成模子 。
) R/ j4 c$ M2 a4 h( p2 D4. 可伸缩性、可打点性和设置装备摆设打点功能。
! ]" ]; K6 ^9 H0 [- h1 V9 ?我一向斗劲举荐Apache的产物。主若是可以肆意自由地使用。下载地址:http://incubator.apache.org /projects/geronimo/
2 V- J  Z8 @, H4 C六、其它
  B& I% g: F# a+ L0 r9 |讲了这么多巨匠可能很厌恶了!是不是良多良多啊!其实否则,我们不会的太多太多了!不会的太多太多了。不管你是不是J2EE高手,仍是J2SE高 手,有些工具你要绝对很精明的。例如:1.Java的Collections Framework就是java的数据结构了,不仅要吃透它,还要能按照需要扩展它,操作其思惟建树一个自己的数据结构。2.收集编程必定要会吧,此刻以 及往后良多轨范都是不在统一台机械上的,不会拓馇怎么行哦!3.IO必定要会的吧!你的轨范莫非不用输入输出数据啊!整个IO包加NIO也有600多页的 源代码哦!4.JDBC你要会吧!数据库都不会,在你的企业应用中你的数据又保留到哪里啊!文件中――太落伍了吧!典型的没有学过J2EE。尽管数据库背 后也是采用文件保留的。5.Serverlet、JSp你若是做网页做网站,必定要做到。问你一个简单的问题,网页中若何实现分页啊!有具体体例的就在本 文章后讲话吧!6. Ant要会吧!java说话中发布的工具,近似与c中的make工具。7.JUnit用过吧!单元测试软件。你不要啊!你的软件就没有bug!你牛!(建 议巨匠研究研究其源代码,很有用的框架,包含年夜量的设计模式,源代码不到100页!看了只能感伤――高手就是高手)细心的伴侣可以看到在你使用的良多 IDE工具中都有JUnit哦!就是它。
- t: |* d; p+ c; o一切的一切才刚刚起头!有乐趣,有需要你可以研究数据库毗连池的框架,如:C3P0、Jakarta DBCP、 DBPool….可以研究J2EE框架Spring……. Web框架Struts……持久层框架Hibernate…..甚至开发工具Eclipse…..Sun率领的点对点通信的JXTA…..报表工具 JFreeChart、JasperReports…..分布式收集编程的CORBA、收集通信的JGROUPS、XML解析的xerces…..(在不 经意间开源已经步入你的电脑,不信啊!你JDK的安装目录jdk1.6.0 src com sun org apache就是Xerces,一个XML解析的闻名的开源 项目)
' n8 U2 p9 w- I) ]$ _' M; p不管怎么样我仍是建议年夜根基的做起,学精J2SE,熟读它的源码,切确体味其设计理念,然后分头击破J2EE――一口吃不成一个胖子!不要贪多贪 广!脚结壮地就可以了!
. L" q7 m' I3 M- L+ s </p>三、通过标记库JSP与XML交互 4 [& e/ A! Q% B3 o( N+ l" [0 |
  这也就是在前文中重点提到的,但是因为它实在太重要了,所以在本文中我必须也要提到。标记库可以定义出现在JSP页面中的作为类XML元素的自定义标签,可以把特定的Java代码与每个标记都关联起来。 例如,假定你可以访问一个天气情况数据库,而且你需要输出现在的天气状况。 那么,你可以在JSP中插入JDBC程序代码直接查询数据库(虽然这并不是一个好的选择),把这些代码封装到一个JavaBean内,或者把它包装成一个标记库。 使用最后一个选择,你的JSP页面内的程序代码看上去就像:  k0 W0 L6 n5 Q' U, i; [: M
  < %@taglib uri="the TLD file" prefix="foo" %>
8 }5 N- q2 O/ U# e( Z# B  Current weather is < foo:Weather/>& e! d6 ^7 k1 D7 A' o' C( P
  注意在上述程序代码中看不到任何Java代码的踪迹。 作为一个页面设计人员,你使用一种熟悉的语法就像< foo:weather/>,这些与其它的任何标记看起来非常相似。 在页面中包含现在的天气状况的HTML字符串的地方插入它。
  v  J- L2 h2 H5 f% p1 _  k+ `) O2 g  标记库有一个关联的XML格式的描述符文件,名叫Tag Library Descriptor(标记库描述符,TLD)。 在TLD文件中的每个标记都有一个条目,包括它的名称,版本和其它的任选信息。 在JSP页面内,你可以用" < %@_taglib prefix = " foo " %> "指令指定TLD文件。 属性" prefix "用来指定一个前缀,用来在JSP页面内使用特定的库来引用任何标记。 那为什么我们要使用标记< foo:Weather/>而不仅仅是< Weather/>。 TLD文件的精确位置依赖于正在使用的应用程序服务器。8 g/ n8 b2 n: _2 W% l
  一个标记库标记可以代替为了完成这段程序逻辑的相应的Java程序代码。 每个标记都相当于一个相同名称的Java类。 这个类必须实现TagSupport接口,包含捕获事件触发器方法作为处理这个页面的JSP引擎。 当它第一次遇到这个标记的时候,引擎就会调用doStartTag ()方法。 可以使这个方法为空或者当需要的时候才执行应用程序逻辑。 当该方法返回SKIP_BODY时,那么引擎跳过这个标记体。 当它返回EVAL_BODY_INCLUDE时,引擎将会处理这个标记以及它的子标记。 类似地,JSP引擎在分析了结束标记之后就会调用doEndTag ()方法。 doAfterBody ()方法让你可以在引擎处理元素体之后执行动作,但是必须在doEndTag ()方法作用之前。 下面就是实现天气状况的Weather类的一个样本程序代码:" E, C' a& Y) ?8 {1 E% Y" j
  import javax.servlet.jsp.*;' a& e7 t8 l& }
  import javax.servlet.jsp.tagext.*;% A% ?( M. l( R" L" V* Y/ J
  import java.io.*;
6 f+ \1 i* Y; C9 R5 f  public class Weather extends TagSupport {
( Y1 W0 G% E: S7 f  public int doStartTag() {
  Y) c7 t5 R1 R3 x' S! p  try {5 L# t0 ]1 v% l& G) }
  JspWriter out = pageContext.getOut();. t) o8 U; k. P3 A8 [
  out.print(" sunny and cloudy mixed with " +$ ~& a# \$ t. ^: A
  "rain and sunshine. ");: H: q9 Y/ w) \# j% k6 x2 `
  } catch (IOException e) {1 h9 I* \& v6 R% u* [% k
  System.out.println("Error " + e);3 b1 \5 I) K% a. v' C; S
  }, ]- j4 j; b3 Z9 ^8 S* ]
  return (SKIP_BODY);
6 ?( t6 m/ y) y: j" w2 b/ f; i  }
8 _4 B6 C7 y8 ~/ g  Y' n  z  }1 A" d  g4 E1 A" c# S! H
  当引擎遇到" < somePrefix:Weather/> "标记的时候,它会在标记库内搜索一个同名的类。 如果doStartTag ()方法被实现的话(在本例中是这样的),它就会被调用。 这就使字符串包含适应显示的天气情况。 因为方法返回了SKIP_BODY,JSP读取器移动到标记的末尾。
8 x! R1 l' K) i$ ^% D( q  最简单的使用JSP和标记库的方法就是使用Apache Tomcat引擎。 这个引擎也充当Servlet和JSP应用程序接口的引用实现。
) f) C; T  y3 ~6 l9 _  当使用标记库时,JSP页面看上去就非常像XML文件了。 当JSP页面被处理时,引擎执行与标记相关联的程序代码(实际上,首先调用JSP引擎把JSP页面翻译成一个servlet,然后再编译servlet。 与标记库相关联的方法都被包含在servlet中。),一个熟悉XML的人就可以设计并使用各种各样的页面布局进行试验,而不必改变任何Java程序代码。当然,代码与数据的分离的程度还是主要依赖标记库元素设计的好坏程度。
6 w& S& B: ~2 w7 W; T* P  JavaServer Pages ( JSP)和XML是Sun的J2EE的两个至关紧要的组件。 JSP是用于创建应用程序服务器端程序的有效工具,而客户可以是一个浏览器,一个设备或其它的应用程序。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-6 21:04 , Processed in 0.213495 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表