|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
先说优点,首先和C,C++这些语言比起来,java很简单,去掉指针的java,非常好理解,自动垃圾回收机制也很好,自从JDK1.5推出以后,性能上又有了很大提高。js|教程在进修怎样用Java编写你的JSP页之前,你必要懂得叫做“举动(actions)”的服务器真个JSP元素,它实行服务器真个义务而不需我们编写Java代码。action标签能够被初级的页面计划者利用,那些大概其实不熟习Java而又想显现存于JavaBeans组件中的值的剧本编写者也能够利用它。正如后面提到的,年夜多半标签都是基于以组件为中央的web开辟模子的。起首,我要形貌一些JSP供应的action标签,然后展现一个仅仅利用标签来从一个JavaBean中显现信息的JSP页的例子DD不必要编写Java代码。
载进一个JavaBean
记着,JSP模子离不开JavaBeans,因而多半JSP标签假定你将用到存于bean中的信息。在你用到一个JavaBean之前,你必需挪用标签<jsp:usebean>来声明你将利用它。前面你将学到,此标签是不是会在页面内天生一个新的bean实例(这个实例大概已在后面的会话或使用中天生了),取决于你为这个bean声明的感化域(性命周期)。
<jsp:usebean>标签要包括几个参数,它们分离申明:
该JavaBean所附属的类
该JavaBean实例的称号
该JavaBean的感化域(性命周期)
比方:
<jsp:usebeanID="myBeanInstance"CLASS="com.myPackage.myBeanClass"SCOPE="request">
...body...
</jsp:usebean>
在这里<jsp:usebean>标签后是一段在bean创立后被挪用的主体部分,然后是一个停止标签</jsp:usebean>。假如这个主体是空的,你也能够选择上面这类复杂的情势:
<jsp:usebeanID="myBeanInstance"CLASS="com.myPackage.myBeanClass"SCOPE="request"/>
这个示例程序会天生一个在com.myPackage.myBeanClass类中界说过的bean的实例,在该页中定名为myBeanInstance;它只在其性命周期DD对此JSP页的一个HTTP哀求以内存在。这个bean如今就能够被该页利用了。
初始化一个JavaBean
并非一切的JavaBeans都能够被复杂的创立然后利用,有一些还必要在利用之行进行初始化。在<jsp:useBean>和</jsp:useBean>标签的主体部分中,你能够用<jsp:setProperty>标签初始化bean的属性。你能够把bean的属性设置为指定的值或从HTTP哀求中传送来的值,好比来自一个已提交的表单。
要初始化bean的属性myProperty为一个指定值,你能够用上面的格局:
<jsp:usebeanID="myBeanInstance"CLASS="com.myPackage.myBeanClass"SCOPE="request">
<jsp:setPropertyNAME="myBeanInstance"PROPERTY="myProperty"VALUE="123"/>
</jsp:usebean>
上面的格局用来把一样的bean属性初始化为从HTML表单位素或一个URL查询字串中传送来的值:
<jsp:usebeanID="myBeanInstance"CLASS="com.myPackage.myBeanClass"SCOPE="request">
<jsp:setPropertyNAME="myBeanInstance"PROPERTY="myProperty"
PARAM="myFormElementName"/>
</jsp:usebean>
注重,不克不及在一个<jsp:setProperty>标签中同时利用VALUE和PARAM属性标记。
别的,在<jsp:usebean>举动的主体中利用<jsp:setProperty>时,在页面内你能够独自利用它。在此之前,必须先用<jsp:useBean>标签订义一个有得当感化域的bean。
Bean的感化域
<jsp:useBean>标签的SCOPE属性完成很复杂的功效:它设置相干的bean的感化域,有四个大概的值,以下表(表1)所示。你能够依据情形在你的JSP使用中利用具有感化域的JavaBeans。
表1.JSP中的感化域及响应的保持情形
感化域形貌
Page对象只可被来自它地点页的一个客户机程序存取。
request对象在一个客户哀求的保存工夫内被一个客户机程序存取。
session对象在全部用户会话的保存工夫内被来自该使用程序中任何中央的一个客户机程序存取。
application对象在使用程序的保存工夫内能够被使用程序内来自任何页面的客户机程序存取。
分歧的对象保存周期会影响到<jsp:useBean>标签怎样创立或从头猎取bean实例。当客户哀求停止,输入被送回扫瞄器后,pagebean和requestbean就会被烧毁。以是<jsp:useBean>标签必需为每一个新的哀求创立一个新的实例。只管云云,当你创立一个新的sessionbean,这个bean的实例会保存到会话的保存周期停止,或直到你明白烧毁它为止。因此<jsp:useBean>标签会在以后会话中不存在实例时创立bean的一个新的实例;不然,它就只是复杂地从头获得以后实例。一样的划定规矩也利用于使用程序的JavaBeans,除非它们在使用程序从头载进或服务重视新启动时停止。
假如你是SSJS开辟者,吸取一些SSJS会话办理的类似的地方是很有匡助的。在SSJS中,pagebean与request对象的感化域不异;sessionbean与client对象感化域不异;applicationbean与project对象感化域不异。比方,假如你将数值存储在一个sessionbean中,以后你就能够单用户地从任何一个JSP页存取这个数值,就像在SSJS中把数值存在client对象中的性子一样。但是,JSP供应了比SSJS加倍天真的形态坚持机制,由于你可以界说任何数目的page、request、session和applicationbeans。而在SSJS中,request、client和project对象都是单一的。
注重,在SSJS中没有与requestbean绝对应的对象。这是由于与SSJS分歧,JSP同意在一个客户哀求内实行多个页面。前面将对这一特征作更多会商。
显现静态内容
一旦创立了一个bean,你就能够用它在JSP页中天生静态内容。JSP界说了一个<jsp:getProperty>标签用来显现bean的属性,这个bean能够是在页面内用<jsp:useBean>标签订义的,也能够是先前在使用程序中被界说的sessionbean或applicationbean。<jsp:getProperty>标签有两个参数:NAME和PROPERTY。NAME指明先前在<jsp:useBean>标签中界说的源对象,PROPERTY暗示要显现的该对象的属性值。比方:
<jsp:usebeanID="myBeanInstance"CLASS="com.myPackage.myBeanClass"SCOPE="request"/>
<H2>myProp=<jsp:getPropertyNAME="myBeanInstance"PROPERTY="myProp"></H2>
正如你看到的,你能够把HTML标签与JSP标签夹杂利用来静态地发生和布置HTML内容。
重定向到一个内部页面
JSP界说了一个标签<jsp:request>,你可使用它来重定向到一个内部页面,有两种办法可供选择:指定FORWARD参数或指定INCLUDE参数。
利用FORWARD参数,能够重定向到一个无效的URL。这类办法能够无效地在重定向产生处中断以后页的处置历程,但在这之前的处置还要举行。这一点与CGI、SSJS、ASP和JavaScript中利用的典范的重定向非常类似。
利用INCLUDE参数,你不但能够重定向到另外一网页,并且当完成了被挪用页内的处置后还能从头前往挪用页。举个例子,你挪用另外一个可静态天生HTML的JSP页,让它天生HTML代码,而当前往时,这些HTML会被拔出挪用页中的<jsp:request>标签处。实践上,被挪用页其实不晓得它正被另外一JSP页挪用,它只是看到一个HTTP哀求,然后前往一些HTML文本作为呼应。
请记着,你可使用INCLUDE办法来会见静态的HTML页、JSP页、JavaServlets、SSJS页和ASP页等任何呼应HTTP哀求的资本,以天生一个你想要包括于你的网页中的呼应。可是注重,假如你所会见的资本前往一个完全的HTML页,包括有<HTML>和<BODY>标签,那末你极可能得不到你想要的了局。
一个复杂的例子
在例1及第了一个范例为jsp.beans.samples.SuperSimpleBean的bean的例子,定名为ssb。因为已将其感化域设定为session,以是它关于其他的usersession是可用的。换句话说,在它创立后,我能够在使用程序的任何一个页顶用称号来会见它。我还将它的属性初始化为counter。然后就能够用<jsp:getProperty>标签在HTML页中显现counter的值了。在给定一些特定的bean属性称号后,上面的代码关于HTML计划者来讲是很简单编写的。
例1
<HTML>
<HEAD>
<METANAME="GENERATOR"Content="NetObjectsScriptBuilder2.01">
<TITLE>CounterPage</TITLE>
</HEAD>
<BODY>
<jsp:useBeanID="ssb"SCOPE="session"CLASS="jsp.beans.samples.SuperSimpleBean"/>
<jsp:setPropertyNAME="ssb"PROPERTY="counter"VALUE="2"/>
<h2>Counter:<jsp:getPropertyNAME="ssb"PROPERTY="counter"/></h2>
</BODY>
</HTML>
用winrar打包j2ee的程序和用IDE打包应用程序是一样的。按照你的想法,你是不是也希望服务器都整合由一家公司提供呢? |
|