|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
有了这样一个呼声:让java代替C语言成为基本语言。这些足以说明java简单易学的这个优点。其次,java的功能强大,前面我也提到了,EJB3.0的推出使java成为了大型项目的首选。jsJSP举措包含:
jsp:include:在页面被哀求的时分引进一个文件。
jsp:useBean:寻觅大概实例化一个JavaBean。
jsp:setProperty:设置JavaBean的属性。
jsp:getProperty:输入某个JavaBean的属性。
jsp:forward:把哀求转到一个新的页面。
jsp:plugin:依据扫瞄器范例为Java插件天生OBJECT或EMBED标志。
13.1jsp:include举措
该举措把指定文件拔出正在天生的页面。其语法以下:
<jsp:includepage="relativeURL"flush="true"/>
后面已先容过include指令,它是在JSP文件被转换成Servlet的时分引进文件,而这里的jsp:include举措分歧,拔出文件的工夫是在页面被哀求的时分。jsp:include举措的文件引进工夫决意了它的效力要略微差一点,并且被援用文件不克不及包括某些JSP代码(比方不克不及设置HTTP头),但它的天真性却要好很多。
比方,上面的JSP页面把4则旧事择要拔出一个“WhatsNew?”页面。改动旧事择要时只需改动这四个文件,而主JSP页面却能够不作修正:
WhatsNew.jsp
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
<HTML>
<HEAD>
<TITLE>WhatsNew</TITLE>
</HEAD>
<BODYBGCOLOR="#FDF5E6"TEXT="#000000"LINK="#0000EE"
VLINK="#551A8B"ALINK="#FF0000">
<CENTER>
<TABLEBORDER=5BGCOLOR="#EF8429">
<TR><THCLASS="TITLE">
WhatsNewatJspNews.com</TABLE>
</CENTER>
<P>
Hereisasummaryofourfourmostrecentnewsstories:
<OL>
<LI><jsp:includepage="news/Item1.html"flush="true"/>
<LI><jsp:includepage="news/Item2.html"flush="true"/>
<LI><jsp:includepage="news/Item3.html"flush="true"/>
<LI><jsp:includepage="news/Item4.html"flush="true"/>
</OL>
</BODY>
</HTML>
jsp:useBean举措
jsp:useBean举措用来装载一个将在JSP页面中利用的JavaBean。这个功效十分有效,由于它使得我们既能够发扬Java组件重用的上风,同时也制止了丧失JSP区分于Servlet的便利性。jsp:useBean举措最复杂的语法为:
<jsp:useBeanid="name"class="package.class"/>
这行代码的寄义是:“创立一个由class属性指定的类的实例,然后把它绑定到其名字由id属性给出的变量上”。不外,就象我们接上去会看到的,界说一个scope属性可让Bean联系关系到更多的页面。此时,jsp:useBean举措只要在不存在一样id和scope的Bean时才创立新的对象实例,同时,取得现有Bean的援用就变得很有需要。
取得Bean实例以后,要修正Bean的属性既能够经由过程jsp:setProperty举措举行,也能够在Scriptlet中使用id属性所定名的对象变量,经由过程挪用该对象的办法显式地修正其属性。这使我们想起,当我们说“某个Bean有一个范例为X的属性foo”时,就意味着“这个类有一个前往值范例为X的getFoo办法,另有一个setFoo办法以X范例的值为参数”。
有关jsp:setProperty举措的具体情形在前面会商。但如今必需懂得的是,我们既能够经由过程jsp:setProperty举措的value属性间接供应一个值,也能够经由过程param属性声明Bean的属性值来自指定的哀求参数,还能够列出Bean属性标明它的值应当来自哀求参数中的同名变量。
在JSP表达式或Scriptlet中读取Bean属性经由过程挪用响应的getXXX办法完成,大概更一样平常地,利用jsp:getProperty举措。
注重包括Bean的类文件应当放到服务器正式寄存Java类的目次下,而不是保存给修正后可以主动装载的类的目次。比方,关于JavaWebServer来讲,Bean和一切Bean用到的类都应当放进classes目次,大概封装进jar文件后放进lib目次,但不该该放到servlets下。
上面是一个很复杂的例子,它的功效是装载一个Bean,然后设置/读取它的message属性。
BeanTest.jsp
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
<HTML>
<HEAD>
<TITLE>ReusingJavaBeansinJSP</TITLE>
</HEAD>
<BODY>
<CENTER>
<TABLEBORDER=5>
<TR><THCLASS="TITLE">
ReusingJavaBeansinJSP</TABLE>
</CENTER>
<P>
<jsp:useBeanid="test"class="hall.SimpleBean"/>
<jsp:setPropertyname="test"
property="message"
value="HelloWWW"/>
<H1>Message:<I>
<jsp:getPropertyname="test"property="message"/>
</I></H1>
</BODY>
</HTML>
SimpleBean.java
BeanTest页面用到了一个SimpleBean。SimpleBean的代码以下:
packagehall;
publicclassSimpleBean{
privateStringmessage="Nomessagespecified";
publicStringgetMessage(){
return(message);
}
publicvoidsetMessage(Stringmessage){
this.message=message;
}
}
jsp:setProperty举措
jsp:setProperty用来设置已实例化的Bean对象的属性,有两种用法。起首,你能够在jsp:useBean元素的表面(前面)利用jsp:setProperty,以下所示:
<jsp:useBeanid="myName".../>
...
<jsp:setPropertyname="myName"
property="someProperty".../>
此时,不论jsp:useBean是找到了一个现有的Bean,仍是新创立了一个Bean实例,jsp:setProperty城市实行。第二种用法是把jsp:setProperty放进jsp:useBean元素的外部,以下所示:
<jsp:useBeanid="myName"...>
...
<jsp:setPropertyname="myName"
property="someProperty".../>
</jsp:useBean>
此时,jsp:setProperty只要在新建Bean实例时才会实行,假如是利用现有实例则不实行jsp:setProperty。
jsp:setProperty举措有上面四个属性:属性申明
namename属性是必须的。它暗示要设置属性的是哪一个Bean。
propertyproperty属性是必须的。它暗示要设置哪一个属性。有一个特别用法:假如property的值是“*”,暗示一切名字和Bean属性名字婚配的哀求参数都将被传送给响应的属性set办法。
valuevalue属性是可选的。该属性用来指定Bean属性的值。字符串数据会在方针类中经由过程尺度的valueOf办法主动转换成数字、boolean、Boolean、byte、Byte、char、Character。比方,boolean和Boolean范例的属性值(好比“true”)经由过程Boolean.valueOf转换,int和Integer范例的属性值(好比“42”)经由过程Integer.valueOf转换。
value和param不克不及同时利用,但可使用个中恣意一个。
paramparam是可选的。它指定用哪一个哀求参数作为Bean属性的值。假如以后哀求没有参数,则甚么事变也不做,体系不会把null传送给Bean属性的set办法。因而,你可让Bean本人供应默许属性值,只要当哀求参数明白指定了新值时才修正默许属性值。
比方,上面的代码片段暗示:假如存在numItems哀求参数的话,把numberOfItems属性的值设置为哀求参数numItems的值;不然甚么也不做。
<jsp:setPropertyname="orderBean"
property="numberOfItems"
param="numItems"/>
假如同时省略value和param,其效果相称于供应一个param且其值即是property的值。进一步使用这类借助哀求参数和属性名字不异举行主动赋值的头脑,你还能够在property(Bean属性的名字)中指定“*”,然后省略value和param。此时,服务器会检察一切的Bean属性和哀求参数,假如二者名字不异则主动赋值。
jsp:getProperty举措
jsp:getProperty举措提取指定Bean属性的值,转换成字符串,然后输入。jsp:getProperty有两个必须的属性,即:name,暗示Bean的名字;property,暗示要提取哪一个属性的值。上面是一个例子,更多的例子能够在前文找到。
<jsp:useBeanid="itemBean".../>
...
<UL>
<LI>Numberofitems:
<jsp:getPropertyname="itemBean"property="numItems"/>
<LI>Costofeach:
<jsp:getPropertyname="itemBean"property="unitCost"/>
</UL>
13.6jsp:forward举措
jsp:forward举措把哀求转到别的的页面。jsp:forward标志只要一个属性page。page属性包括的是一个绝对URL。page的值既能够间接给出,也能够在哀求的时分静态盘算,以下面的例子所示:
<jsp:forwardpage="/utils/errorReporter.jsp"/>
<jsp:forwardpage="<%=someJavaExpression%>"/>
什么时候上述的三种开发工具能和三为一,什么时候java的竞争力才更强,才有机会拉拢更多的程序员投入到对java的开发上,因为到时的开发工具将会比.net的更简单。还有一点也很关键,什么时候java推出的jsf能成为真正意义上的标准。 |
|