JAVA网页设计谈JSP与XML的交互
因为能用到多少功能就用多少,不能用就不用!总的来说:要简单要性能好,可以不用框架。你说java复杂,就是因为你把java(j2ee)与这些框架混在了一起。js|xml|交互 利用JavaServerPages有三种分歧的办法用于处置XML文档,每种办法都有益于进步分别页面代码与XML数据的程度,有益于简化开辟网页的庞大度而且改良进步组件与页面代码的可重用性。JavaServerPages(JSP)和XML是Sun的J2EE的两个相当紧急的组件。JSP是用于创立使用程序服务器端程序的无效工具,而客户能够是一个扫瞄器,一个设备或别的的使用程序。你可使用XML形貌数据并在接洽服务器与体系的其他部分之间传送。假如你细心思索Web服务的笼统观点的话,JSP能够被以为是完成手艺而XML则是数据封装和动静传送手艺。JSP页面能够经由过程三种体例利用XML:间接利用XML文件,利用JavaBeans来实行XML处置大概经由过程标志库利用XML。
1、间接利用XML
我们能够在JSP页面中间接利用XML,这要分为三类:
1.JSP能够读取XML文件而且基于这些数据实行举措。比方:一使用程序能够读取具有某些特定布局的数据的XML文件。
2.JSP能够创立XML文件以发送数据到客户程序或别的的使用程序。JSP能够转换XML文件,这个变更能够是交给XSLT处置,由JSP作为把持器,大概经由过程非XSLT办理计划来完成。在这两种情形下,JSP的感化都是读取XML文件,转换它并天生一个输入。
由于JSP包括内嵌的Java程序,以是它能够间接地挪用一个剖析程序来读/写xml数据。这长短常分歧理的办法,由于数据和代码逻辑其实不能很好的被分别开。别的,如许的程序也很难读得懂。以是,上面我将先容第二办法:利用JavaBeans。
2、利用JavaBeans
JSP能够经由过程<jsp:usebean>标志与JavaBeans严密的整合起来。上面的程序片断树模了怎样利用在JSP页面中的一个JavaBean来设置并猎取属性。
<jsp:useBeanid="cb"scope="session"class="xmlrep.Customer"/>
<jsp:setPropertyname="cb"property="id"value="45"/>
<B>FirstNameis:</B>
<%=cb.getFname()%>
<p>
<B>LastNameis:.</B>
<%=cb.getLname()%>
JSP与JavaBeans整合的特性就是能够主动把超文本标记言语的表单位素翻译成JavaBean属性。假如有一个HTML表单而且想让它向JavaBean提交表单内容,你能够写上面的代码:
<jsp:setPropertyname="cb"property="*"/>
name属性包括JSP页面已援用Bean的值。后面<jsp:useBean>标志设置称号为"cb"。与设置独自的Bean属性分歧,你可使用星号来标记"全体的"属性。JSP页面主动地映照HTML表单值为同名的Bean属性。假如你读取每一个HTML表单位素,然后挪用响应属性的Bean设置办法,那末了局也将是不异的。
能够看到,类XML的标志同意JSP页面会见JavaBeans。我们经由过程尽量多的把封装的代码变化成可重用组件(JavaBeans),就能够把JSP页面中代码优化到最小的水平。你可使用通用的语法剖析程序,像Xerces大概JAXPI,在独自的JavaBeans里与XML文件交互感化--而且你能够在不修改JSP页面的情形下改动剖析程序。别的,Beans还可使用XSLT来实行XML文件的转换。
利用JSP和JavaBeans来完成的这些笼统的举措比间接在JSP页面中拔出原始的Java程序要好很多,可是你仍旧必要熟习Java程序,以便随时改动JSP页面。使用程序的分歧性与层次性依托JavaBeans互助创立一个一致的输入了局的优劣水平。比方,Bean中的缺点大概会形成全部XML输入有效。依托Beans指定资本的办法,大概同时带来实行功能的成绩。
3、经由过程标志库JSP与XML交互
这也就是在前文中重点提到的,可是由于它其实太主要了,以是在本文中我必需也要提到。标志库能够界说呈现在JSP页面中的作为类XML元素的自界说标签,能够把特定的Java代码与每一个标志都联系关系起来。比方,假定你能够会见一个天色情形数据库,并且你必要输入如今的天色情况。那末,你能够在JSP中拔出JDBC程序代码间接查询数据库(固然这并非一个好的选择),把这些代码封装到一个JavaBean内,大概把它包装成一个标志库。利用最初一个选择,你的JSP页面内的程序代码看上往就像:
<%@tagliburi="theTLDfile"prefix="foo"%>
Currentweatheris<foo:Weather/>
注重在上述程序代码中看不就任何Java代码的踪影。作为一个页面计划职员,你利用一种熟习的语法就像<foo:weather/>,这些与别的的任何标志看起来十分类似。在页面中包括如今的天色情况的HTML字符串的中央拔出它。
标志库有一个联系关系的XML格局的形貌符文件,名叫TagLibraryDescriptor(标志库形貌符,TLD)。在TLD文件中的每一个标志都有一个条目,包含它的称号,版本和别的的任选信息。在JSP页面内,你能够用"<%@_taglibprefix="foo"%>"指令指定TLD文件。属性"prefix"用来指定一个前缀,用来在JSP页面内利用特定的库来援用任何标志。那为何我们要利用标志<foo:Weather/>而不单单是<Weather/>。TLD文件的准确地位依附于正在利用的使用程序服务器。
一个标志库标志能够取代为了完成这段程序逻辑的响应的Java程序代码。每一个标志都相称于一个不异称号的Java类。这个类必需完成TagSupport接口,包括捕捉事务触发器办法作为处置这个页面的JSP引擎。当它第一次碰到这个标志的时分,引擎就会挪用doStartTag()办法。可使这个办法为空大概当必要的时分才实行使用程序逻辑。当该办法前往SKIP_BODY时,那末引擎跳过这个标志体。当它前往EVAL_BODY_INCLUDE时,引擎将会处置这个标志和它的子标志。相似地,JSP引擎在剖析了却束标志以后就会挪用doEndTag()办法。doAfterBody()办法让你能够在引擎处置元素体以后实行举措,可是必需在doEndTag()办法感化之前。上面就是完成天色情况的Weather类的一个样本程序代码:
importjavax.servlet.jsp.*;
importjavax.servlet.jsp.tagext.*;
importjava.io.*;
publicclassWeatherextendsTagSupport{
publicintdoStartTag(){
try{
JspWriterout=pageContext.getOut();
out.print("sunnyandcloudymixedwith"+
"rainandsunshine.");
}catch(IOExceptione){
System.out.println("Error"+e);
}
return(SKIP_BODY);
}
}
当引擎碰到"<somePrefix:Weather/>"标志的时分,它会在标志库内搜刮一个同名的类。假如doStartTag()办法被完成的话(在本例中是如许的),它就会被挪用。这就使字符串包括顺应显现的天色情形。由于办法前往了SKIP_BODY,JSP读取器挪动到标志的开端。
最复杂的利用JSP和标志库的办法就是利用ApacheTomcat引擎。这个引擎也充任Servlet和JSP使用程序接口的援用完成。
当利用标志库时,JSP页面看上往就十分像XML文件了。当JSP页面被处置时,引擎实行与标志相干联的程序代码(实践上,起首挪用JSP引擎把JSP页面翻译成一个servlet,然后再编译servlet。与标志库相干联的办法都被包括在servlet中。),一个熟习XML的人就能够计划并利用林林总总的页面结构举行实验,而不用改动任何Java程序代码。固然,代码与数据的分别的水平仍是次要依附标志库元素计划的优劣水平。
他们对jsp,servlet,javabean进行封装就是为了展示他们的某个思想,与java的开发并没有必然的关系,也不见得在所以情况下,别人使用起来会简单。 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。 是一种使用者不需花费很多时间学习的语言 让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
页:
[1]