仓酷云

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

[学习教程] JAVA网站制作之JSP 最好理论:组合 JavaBean 组件和 J...

[复制链接]
飘灵儿 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:19:56 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
C#是盗用了Java的源代码,仿照开发的,原因是Java是开源的啊,盗了也白盗,还有一点,开发C#语言的团队是就是开发Java语言的团队,是微软重金挖过去的啊jsJSP最好理论:组合JavaBean组件和JSP手艺

利用JavaBean和JSP参数在Web页面之间传送数据
级别:进门
BrettMcLaughlin(brett@oreilly.com)
作家,OReillyandAssociates
2003年7月

Web架构计划师BrettMcLaughlin演示了JavaBean组件和JSP手艺的分离怎样使您可以在Web页面之间存储并传送数据,和如许做怎样能完成更加静态的站点计划。
到今朝为止,我们在JSP最好理论系列文章中侧重会商的都是较为基础的主题。在前两篇文章中,您进修了怎样利用JSPinclude机制来将内部内容引进到您的网站或Web使用程序。我们利用了两种分歧的include伪指令:静态include命令和静态jsp:include标志。

迄今为止,还无需创立父页面(在我们的示例中是一个网站主页面)和所包括内容之间的任何范例的通讯。可是这类计划过于复杂。当要对实践Web站点或Web使用程序接口举行编程时,您一般必要一种通讯机制在父页面和所包括文件之间传送数据。比方,您的网站大概有一个题目或动静是源自立页面的,并必要将它供应给页面头或页面尾。在这篇文章中,您将进修怎样在页面之间传送数据,和怎样在所包括的页面中利用该数据。

注:本系列文章中的一切最好理论都基于JavaServerPages手艺。要运转个中任何一个理论示例,必要在当地呆板或测试服务器上安装切合JSP手艺的Web容器。您还必要利用文本编纂器或IDE来对JSP页面举行编码。

用于存储数据的JavaBean组件
让我们研讨一下如许一个网站:个中的每一个页面都有冗长的“口号”(好比“Books:Ashelffulloflearning”或“CDs:Musicworthlisteningto”)和题目。父页面(偶然叫做主页面)断定了每一个页面的口号,而页面头(包括的页面)要处置HTML以输入该口号。为使该计划事情,主页面必需可以将口号传送到页面头,并且页面头必需可以承受页题目并按哀求显现它。

起首我们必要某种用于存储被传送数据的对象。可巧的是(并不是偶尔)JavaBean组件既合适该目标又与JSP手艺十分婚配。bean只必要用取值办法(accessor)和赋值办法(mutator)来处置数据。您大概从别的Java编程履历中得知,get()是个取值办法,由于它会见数据,而set()是个赋值办法,由于它修正数据。

清单1显现了我们所需的那种bean的代码。PageHeaderInfobean包括了有关网站页面头的信息。

清单1.PageHeaderInfoJavaBean

<![CDATA[
packagecom.newInstance.site.beans;

importjava.io.Serializable;

publicclassPageHeaderInfoimplementsSerializable{

/**Thetitleofthepage*/
privateStringpageTitle;

/**Thesloganofthepage*/
privateStringpageSlogan;

publicStringgetPageTitle(){
returnpageTitle;
}

publicvoidsetPageTitle(StringpageTitle){
this.pageTitle=pageTitle;
}

publicStringgetPageSlogan(){
returnpageSlogan;
}

publicvoidsetPageSlogan(StringpageSlogan){
this.pageSlogan=pageSlogan;
}
}
]]>



关于第一个实习,请将该文件保留为PageHeaderInfo.java,然后对它举行编译。接上去,将失掉的类文件PageHeaderInfo.class放进Web使用程序的WEB-INF/classes目次。请确保包含了包条理布局,可是可随便变动包名。这个已编译类的示例路径以下:

$<TOMCAT-ROOT>/webapps/$<WEB-APP-NAME>/WEB-INF/classes/com/newInstance/
site/beans/PageHeaderInfo.class



可使用相似于此的路径使该类可被Web使用程序中的servlet、JSP页面和别的类利用。假如到今朝为止您依照形貌的那样实行了一切步骤,那末如今能够将数据添补到PageHeaderInfobean中,然后在各个JSP页面中检索它。

传送已存储的数据
在我们的网站计划中,页面头包括了将各个口号传送给分歧页面的代码。您大概记得前一篇文章中提过,页面头(header.jsp)是个包括的文件,由jsp:include元素办理。由于我们利用的是静态jsp:include标志而非静态include伪指令,因而很简单将数据传送到页面头。jsp:param元素供应了这项功效,能够将该元素嵌套在jsp:include元素中。清单2演示了怎样利用这些元素将数据传送给站点主页面的header.jsp文件。

清单2.在JSP页面之间传送数据

<![CDATA[
<%@pagelanguage="java"contentType="text/html"%>
<html>
<head>
<title>newInstance.com</title>
<metahttp-equiv="Content-Type"
content="text/html;charset=iso-8859-1"/>
<linkhref="/styles/default.CSS"rel="stylesheet"type="text/css"/>
</head>

<body>
<jsp:includepage="header.jsp"flush="true">
<jsp:paramname="pageTitle"value="newInstance.com"/>
<jsp:paramname="pageSlogan"
value="JavaandXML::Turningtheoryintopractice"/>
</jsp:include>
<%@includefile="/navigation.jsp"%>
<jsp:includepage="bookshelf.jsp"flush="true"/>

<jsp:includepage="/mt-blogs/index.jsp"flush="true"/>

<%@includefile="/footer.jsp"%>
</body>
</html>
]]>



您能够看到,题目是作为口号传进的。

您也许已注重到:设置用于传送数据的页面时实践上不用利用JavaBean组件,由于bean只用于吸收数据。可是我老是先对bean举行编码,这是有事理的。JSP参数名必需与JavaBean特征名相婚配,先对bean举行编码确保了您在对JSP页面举行编码时能准确设置这些参数名。

吸收数据
对JSP参数和JavaBean特征举行编码而且将数据传送给header.jsp页面以后,该页面能够入手下手吸收数据了。清单3显现了header.jsp页面。个中年夜部分代码是HTML,可是请务必注重JSP语句,在您研讨了代码以后我将对此举行申明。

清单3.将数据传送给别的JSP页面

<![CDATA[
<!--Beginheadersection-->
<%@pagelanguage="java"contentType="text/html"%>
<jsp:useBeanid="pageHeaderInfo"
class="com.newInstance.site.beans.PageHeaderInfo">
<jsp:setPropertyname="pageHeaderInfo"property="*"/>
</jsp:useBean>

<tablewidth="100%"border="0"cellspacing="0"cellpadding="0">
<tr>
<tdwidth="91"height="50"align="right"valign="top"
bgcolor="#330066"><fontcolor="#FFFFFF"></font></td>
<tdcolspan="3"align="left"valign="top"
bgcolor="#000000"><tablewidth="100%"height="60"border="0"
cellpadding="0"cellspacing="0">
<tr>
<tdwidth="261"rowspan="2"></td>
<tdclass="pagetitle"width="249"height="55"align="right"
valign="bottom"><jsp:getPropertyname="pageHeaderInfo"
property="pageSlogan"/></td>
<tdwidth="10"height="55"></td>
</tr>
<tr>
<tdheight="5"></td>
</tr>
</table></td>
<tdwidth="141"bgcolor="#000000">
<fontcolor="#FFFFFF"></font>
</td>
</tr>
<!--Endheadersection-->
]]>



第一段代码将该页面标识为JSP页面,然后声明该页面必要会见PageHeaderInfobean,这是经由过程利用jsp:useBean标志完成的。id为JSP页面可使用的bean设置了一一般名,class是bean的全限制Java类名。jsp:useBean标志中嵌套的是jsp:setProperty标志,它指定了该bean(由其别号标识)应该利用任何哀求数据设置一切可用的特征。这意味着关于bean中的每一个特征(比方pageTitle和pageSlogan),都要有一个婚配的哀求参数。这些哀求参数能够来自利用Web扫瞄器的客户机,也能够来自包括此JSP页面的别的页面。在本例中,唯一的哀求数据就是由父页面创立的。关于我们的示例站点而言,主页面(index.jsp)发送pageTitle和pageSlogan,它们分离被设置成“newInstance.com”和“JavaandXML:Turningtheoryintopractice”。

添补了bean的特征值以后,该页就能够利用此数据了。关于header.jsp,这个用法是经由过程利用jsp:getProperty标志在该页面的下方完成的。jsp:getProperty带有一个name参数(标识从哪一个对象猎取数据)和一个property参数(指定应该轮询该对象的哪一个特征)。然后将该特征的值拔出到页面的输入,接上去将该输入拔出到父页面,了局发生了一个无缝的静态页面口号。就这么复杂,您能够在JSP页面之间传送数据了!您能够将恣意多的bean增加到JSP页面中,每一个bean都能够有没有限多的特征,连最庞大的哀求数据都能满意。

办理变动
每一个开辟职员最烦的就是举行变动。恰好当您依照但愿的体例对bean举行编码,准确地设置了一切特征,而且JSP页面筹办利用它们时,您的使用程序或站点需求却产生变更,就仿佛不成制止地要举行变动。假如这些变动请求增加新特征(它们一般会云云),那末您必需编纂JavaBean源代码,从头编译它,并确保JSP能够会见这个新的bean类。可是在某些情形下,您也许甚么都不必做。假如您的页面正在存储和吸收不再利用的特征(也就是说,您不再指向给定的页面组件,即便它仍旧存在于站点目次中),您也许可让代码保存原样。现实上,我就碰着了这类情形!

我团体Web页面的header.jsp页面之前经常输入HTML站点的页面头。之前,该页面引进题目以便在页面的head的title元素中利用它。可是厥后我对此做了变动,不再利用页面头JSP页面中的页题目。可是我不用操心地将pageTitle特征从PageHeaderInfobean中撤除;现实上,我乃至没有从年夜多半将该题目发送给头页面的JSP页面中撤除jsp:param元素。我以为不值得花工夫往做,并且我晓得让这些数据留在那也没甚么害处(再说我未来有一天大概还会必要它!)。因而,假如发明您的情形一样,请别严重-将工夫花在增加很酷的新功效比花在玩弄这类杂事上要风趣的多。

下一次
一旦您熟习了在JSP页面之间传送数据,就请亲身实验编写一些有效的JavaBean代码,并看看是不是能够在本人的站点上使它们运转。经由过程玩弄这些bean和jsp:useBean、jsp:param和jsp:get/setProperty机关,您应该能弄出一些很酷的工具!鄙人一篇“最好理论”文章中,我将申明利用JSP为您的主站点引进内部内容的另外一种办法。JSTL标志仿照了友爱的include标志,而且为JSP增加了更多的天真性和功效。在那之前请好好读一下这些文章,到时分我们网上见。

从一个编程语言的普及程度来将,一个好的IDE是至关中要的,而现在的java的IDE虽然已经很好了,但是和.net比起来还是稍微差一些的,这是个客观事实。java要想普及的更好。DE是必须加以改进的。
谁可相欹 该用户已被删除
11#
发表于 2015-3-20 00:35:25 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
小女巫 该用户已被删除
10#
发表于 2015-3-12 16:46:34 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
只想知道 该用户已被删除
9#
发表于 2015-3-7 00:24:22 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
admin 该用户已被删除
8#
发表于 2015-2-27 00:50:35 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
精灵巫婆 该用户已被删除
7#
发表于 2015-2-9 05:33:12 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
愤怒的大鸟 该用户已被删除
6#
发表于 2015-2-8 01:29:25 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
第二个灵魂 该用户已被删除
5#
发表于 2015-2-6 22:26:48 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
深爱那片海 该用户已被删除
地板
发表于 2015-1-31 20:47:38 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
山那边是海 该用户已被删除
板凳
发表于 2015-1-24 16:03:57 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
不帅 该用户已被删除
沙发
发表于 2015-1-20 20:36:34 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-15 13:45

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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