仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 384|回复: 8
打印 上一主题 下一主题

[学习教程] JAVA网页设计jsp Servlet基本进门进修:JSP举措

[复制链接]
分手快乐 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:11:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
主要缺点就是:速度比较慢,没有C和C++快js|servletJSP举措使用XML语法格局的标志来把持Servlet引擎的举动。使用JSP举措能够静态地拔出文件、重用JavaBean组件、把用户重定向到别的的页面、为Java插件天生HTML代码。

  JSP举措包含:

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>

  13.2jsp: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;
}
}

  13.3关于jsp:useBean的进一步申明

  利用Bean最复杂的办法是先用上面的代码装载Bean:
<jsp:useBeanid="name"class="package.class"/>

  然后经由过程jsp:setProperty和jsp:getProperty修正和提取Bean的属性。不外有两点必需注重。第一,我们还能够用上面这类格局实例化Bean:
<jsp:useBean...>
Body
</jsp:useBean>

  它的意义是,只要当第一次实例化Bean时才实行Body部分,假如是使用现有的Bean实例则不实行Body部分。正以下面将要先容的,jsp:useBean并不是老是意味着创立一个新的Bean实例。

  第二,除id和class外,jsp:useBean另有其他三个属性,即:scope,type,beanName。下表扼要申明这些属性的用法。属性用法
id定名援用该Bean的变量。假如可以找到id和scope不异的Bean实例,jsp:useBean举措将利用已有的Bean实例而不是创立新的实例。
class指定Bean的完全包名。
scope指定Bean在哪一种高低文内可用,能够取上面的四个值之一:page,request,session和application。
默许值是page,暗示该Bean只在以后页面内可用(保留在以后页面的PageContext内)。
request暗示该Bean在以后的客户哀求内无效(保留在ServletRequest对象内)。
session暗示该Bean对以后HttpSession内的一切页面都无效。
最初,假如取值application,则暗示该Bean对一切具有不异ServletContext的页面都无效。
scope之以是很主要,是由于jsp:useBean只要在不存在具有不异id和scope的对象时才会实例化新的对象;假如已有id和scope都不异的对象则间接利用已有的对象,此时jsp:useBean入手下手标志和停止标志之间的任何内容都将被疏忽。

type指定援用该对象的变量的范例,它必需是Bean类的名字、超类名字、该类所完成的接口名字之一。请记着变量的名字是由id属性指定的。
beanName指定Bean的名字。假如供应了type属性和beanName属性,同意省略class属性。

  13.4jsp: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属性和哀求参数,假如二者名字不异则主动赋值。

  上面是一个使用JavaBean盘算素数的例子。假如哀求中有一个numDigits参数,则该值被传送给Bean的numDigits属性;numPrimes也相似。

  JspPrimes.jsp
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
<HTML>
<HEAD>
<TITLE>在JSP中利用JavaBean</TITLE>
</HEAD>

<BODY>

<CENTER>
<TABLEBORDER=5>
<TR><THCLASS="TITLE">
在JSP中利用JavaBean</TABLE>
</CENTER>
<P>

<jsp:useBeanid="primeTable"class="hall.NumberedPrimes"/>
<jsp:setPropertyname="primeTable"property="numDigits"/>
<jsp:setPropertyname="primeTable"property="numPrimes"/>

Some<jsp:getPropertyname="primeTable"property="numDigits"/>
digitprimes:
<jsp:getPropertyname="primeTable"property="numberedList"/>

</BODY>
</HTML>

  注:NumberedPrimes的代码略。

  13.5jsp: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%>"/>

  13.7jsp:plugin举措

  jsp:plugin举措用来依据扫瞄器的范例,拔出经由过程Java插件运转JavaApplet所必须的OBJECT或EMBED元素。

  附录:JSP正文和字符援用商定

  上面是一些特别的标志或字符,你能够使用它们拔出正文或大概被视为具有特别寄义的字符。语法用处
<%--comment--%>JSP正文,也称为“埋没正文”。JSP引擎将疏忽它。标志内的一切JSP剧本元素、指令和举措都将不起感化。
<!--comment-->HTML正文,也称为“输入的正文”,间接呈现在了局HTML文档中。标志内的一切JSP剧本元素、指令和举措一般实行。
<\%在模板文本(静态HTML)中实践上但愿呈现“<%”的中央利用。
%\>在剧本元素内实践上但愿呈现“%>”的中央利用。
\利用单引号的属性内的单引号。不外,你既可使用单引号也能够利用双引号,而别的一种引号将具有一般寄义。
\"利用双引号的属性内的双引号。拜见“\”的申明。
诸如RMI,EJB等一些技术并不是你说的那么复杂,而是它们把一些复杂的工具封装成不复杂的工具了,理解这些工具是需要些时间。我问你,.net里有这些工具吗?要简单多少?。
灵魂腐蚀 该用户已被删除
沙发
发表于 2015-1-20 16:21:13 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
柔情似水 该用户已被删除
板凳
发表于 2015-2-4 21:55:40 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
精灵巫婆 该用户已被删除
地板
发表于 2015-2-8 06:39:39 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
不帅 该用户已被删除
5#
发表于 2015-2-8 16:39:02 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
莫相离 该用户已被删除
6#
发表于 2015-2-25 20:50:18 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
谁可相欹 该用户已被删除
7#
发表于 2015-3-8 03:46:56 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
活着的死人 该用户已被删除
8#
发表于 2015-3-15 20:23:53 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
admin 该用户已被删除
9#
发表于 2015-3-22 04:07:53 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-28 17:26

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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