JSP页面中自定义标签详解教程.docx
《JSP页面中自定义标签详解教程.docx》由会员分享,可在线阅读,更多相关《JSP页面中自定义标签详解教程.docx(26页珍藏版)》请在冰豆网上搜索。
![JSP页面中自定义标签详解教程.docx](https://file1.bdocx.com/fileroot1/2022-11/16/25ac550e-1ed8-467e-8282-dffbb14fe23a/25ac550e-1ed8-467e-8282-dffbb14fe23a1.gif)
JSP页面中自定义标签详解教程
JSP页面中自定义标签详解教程
标准JSP标签是用来调用JavaBean组件的操作,处理定向请求以简化JSP页面开发与维护。
JSP技术提供了一种封装其它动态类型的机制——自定义标签,它扩展了JSP语言。
自定义标签通常发布在标签库中,该库定义了一个自定义标签集并包含实现标签的对象。
一些功能可以通过自定义标签来实现,包括对隐含对象的操作,处理表单,访问数据库集其它企业级服务,如e-mail,目录服务,处理流控制。
JSP标签库由精通Java语言的开发者及精于访问数据机器它服务的专家来创建,由网络应用设计者来使用,以集中精力来解决表现而不是如何访问企业服务。
业就是鼓励分开库的开发者与使用者相分离,自定义标签通过封装实现了生产率的提高。
标签库在JSP技术中受到广泛注意。
要更多的了解标签库可以访问以下网址:
什么是自定义标签?
自定义标签是用户定义的JSP语言元素。
当JSP页面包含一个自定义标签时被转化为servlet,标签转化为对称为taghandler的对象的操作。
接着当servlet执行时Webcontainer调用那些操作。
自定义标签有着丰富的特点,它们可以:
1、可以通过调用页面传递的属性进行自定义;
2、可以访问对于JSP页面可能的所有对象;
3、可以修改由调用页面产生的响应。
4、可以相互间通信。
你可以创建并初始化一个JavaBean组件,创建一个变量引用标签中的bean,接着在其它的标签中引用该bean.
5、可以在一个标签中嵌套另一个,可以在JSP页面中进行复杂的交互。
JSP页面的例子
这章描述的任务包括使用及定义标签。
标签库Struts为建立一个国际化的网络应用提供了一个实现设计模式为Model-View-Control的框架。
该标签库包括全面的功能用于处理:
。
HTMLforms
。
Templates
。
JavaBeanscomponents
。
Logicprocessing
Duke’sBookstore应用程序使用了这些标签:
Strutsbean和logicsublibraries.
标签库tutorial-template定义了一系列标签集来创建应用模板。
该模板是带有占位符的JSP页面用来在每个页面显示需要改变的部分。
每一个占位符作为模板的一个parameter而引用。
例如,一个简单的模板可以包含一个标题参数及体参数来引用JSP页面中部分自定义的内容。
模板由一系列嵌套的标签。
下图显示了通过Duke’sBookstroe的网络组件发出请求的流程:
Duke’sBookstore3应用的源代码位于j2eetutorial/examples/src/web/bookstore3目录下。
要编译、部署并运行该例子,进行一下操作步骤:
1、到目录j2eetutorial/examples下编译该应用程序。
2、从http:
//jakarta.apache.org/builds/jakarta-struts/release/v1.0下载并解压Struts(版本为1.0),将struts-bean.tld,struts-logic.tld和struts.jar拷到jakarta-struts-1.0/libtoexamples/build/web/bookstore3下面
3、运行j2eeserver;
4、运行部署工具deploytool
5、运行Cloudscapedatabase;
6、如果你还没有创建bookstoredatabase,运行antcreateweb-db.
7、创建J2EE应用程序——Bookstore3App.
a.选择File-NewApplication.
b.在文件选择框中,找到j2eetutorial/examples/src/web/bookstore3.
c.在文件名框中输入Bookstore3App;
d.单击NewApplication.
e.OK.
8、创建WAR文件并将DispatcherServlet网络组建及所有的Duke’sBookstore加入到Bookstore3App.
a.选择File-New-WebComponent.
b.单击创建NewWAR文件,从复合框中选择Bookstore3App,输入Bookstore3WAR。
c.单击Edit来增加文件。
在编辑内容对话框中,导航到j2eetutorial/examples/build/web/bookstore3.选择Dispatcher.class并单击Add.增加banner.jsp,bookstore.jsp,bookdetails.jsp,catalog.jsp,showcart.jsp,cashier.jsp,receipt.jsp,initdestroy.jsp,template.jsp,screendefinitions.jsp,errorpage.jsp.增加duke.books.fig,struts-bean.tld,struts-logic.tld,tutorial-template.tld,struts.jar..增加cart,database,message,taglib,utilpackages.
d.单击Next
e.选择servlet单选按钮,
f.单击Next,
g.从Servlet类复选框中选择Dispatcher
h.单击两次Next.
i.在组件别名框中,单击增加接着输入别名。
j.单击Finish.
9、增加BookDBEJB企业Bean
a.选择File-Add-EJBJAR.
b.找到目录examples/build/web/ejb.
c.选择bookDB.jar,
d.单击AddEJBJAR.
10、给BookDBEJB增加一个引用。
a.选择Bookstore3WAR,
b.选择EJBRefs标签,
c.单击Add,
d.在代码名称栏中输入ejb/BookDBEJB,
e.在类型栏中输入Session.
f.在接口列中选择Remote,
g.在Home接口列中输入database.BookDBEJBHome,
h.在Local/Remote接口栏中输入database.BookDBEJB.
11、增加标签库URI映射
a.选择FileRefs标签,
b.在JSP标签库德自框中单击Add按钮
c.在引用栏中输入相对路径URI/tutorial-template,
d.在标签栏中输入绝对路径/WEB-INF/tutorial-template.tld,
e.对/struts-bean,struts-logic页执行上面的操作。
12、指定JNDI名。
a.选择Bookstore3App,
b.在应用表中,找到EJB组件并在JNDI名称栏中输入BookDBEJB,
c.在引用表中,定位到EJBRef并在JNDI名称栏中输入BookDBEJB,
d.在引用表中,定位到资源组件并在JNDI名称栏中输入jdbc/Cloudscape.
13、输入context根
a.选择WebCoontext标签
b.输入bookstore3.
14、部署应用程序
a.选择Tools-Deploy,
b.单击Finish.
15、打开bookstoreURLhttp:
//:
8000/bookstore3/enter.
使用标签
这部分描述页面作者如何使用标签库指定JSP页面并介绍不同类型的标签。
声明标签
你可以通过在页面中使用下面的指令来声明在JSP中使用标签库:
<%@tagliburi=”WEB-INF/tutorial-template.tld”prefix=”tt”%>
该uri属性引用了唯一识别的标签库描述符(TLD),该URI可以是直接的也可以是间接的。
Prefix属性定义了区分其它标签的方法。
标签库描述文件必须以后缀为.tld命名。
TLD文件保存在WEB-INF目录中,你可以直接或间接的引用TLD。
下面的标签库指令直接引用了TLD文件:
<%@tagliburi=”/WEB-INF/tutorial-template.tld”prefix=”tt”%>
下面的标签库指令使用了短的逻辑名来间接引用TLD:
<%@tagliburi=”/tutorial-template”prefix=”tt”%>
逻辑名必须映射到Webapplication部署描述符中的绝对路径。
为映射到逻辑名/tutorial-template到绝对路径/WEB-INF/tutorial-template.tld:
1、选择Bookstore3WAR,
2、选择FileRefs标签,
3、在JSP标签库的子栏中单击Add按钮,
4、在代码引用域中输入相对路径URI/tutorial-template.
5、在标签库域中输入绝对路径/WEB-INF/tutorial-template.tld.
标签种类
JSP自定义标签使用XML语法。
它们有起始标签及结束标签,并有可能有体:
tag>body
tag>
没有体的标签如下:
tag/>
简单标签
一个简单标签没有体及属性:
simple/>
带有属性的标签
自定义标签可以含有属性。
属性列于起端标签,有这样的语法:
attr=”value”.属性值用于自定义标签的行为,就像方法中定义的参数一样。
你可以给属性设置一字符串常量货运形时表达式。
这个转换过程介于常量与运行时表达式之间,且属性类型遵循为JavaBean组件属性描述的规则。
Struts的属性logic:
present决定标签的体是否求值。
在下面的例子中,一个属性制订了一个请求参数:
Clear:
presentparameter=”Clear”>
在Duke’sBookstoreapplication页面catalog.jsp使用了运行表达式来设置属性值:
iteratecollection=”<%=bookDB.getBooks()%>”id=”book”type=”database.BookDetails”>
带体的标签
自定义标签可以包含自定义的核心标签,脚本元素,HTML文本,以及标签依赖的体内容。
在下面的例子中,Duke’sBookstoreapplication页面showcart.jsp使用了Strutslogic:
present标签来清除购物撤兵打印消息如果请求中包含参数为Clear的话:
presentparameter=”Clear”>
<%cart.clear();%>
Youjustclearedyourshoppingcart!
present>
在传递信息时选择属性还是体
正如在后两节中讲到的,把一个给定的数据作为标签的属性或者体来传递是可能的。
通常,无论是字符串或可以计算的简单表达式最好作为属性来传递。
定义脚本变量的标签
自定义标签可以定义在脚本中使用的变量。
下面的例子展示了如何定义并使用包含