RSS
热门关键字:  数据挖掘  人工智能  数据仓库  搜索引擎  数据挖掘导论

兔八哥笔记3:JSP自定义标签试验

来源: 作者:unkonwn 时间:2006-02-06 点击:

 

一、概述

       JSP中有一块重要的技术:自定义标签(Custom Tag),最近这几天在学习Struts的时候发现Struts中使用了很多自定义标签,如htmlbean等。所以我就做了个简单的试验,学习一下这种技术。

数据挖掘研究院

       首先介绍一下这种技术吧!

1.优点:

取代了JSP中的Java程序,并且可以重复使用,方便不熟悉Java编程的网页设计人员。

数据挖掘研究院

2.开发流程:

(1)       编写JSP,在JSP中使用自定义标签。 数据挖掘研究院

(2)       web.xml中指定JSP中使用的标签的.tld(标签库描述文件)文件的位置。

数据挖掘研究院

(3)       .tld文件中指定标签使用的类。

数据挖掘研究院

3. 自定义标签的分类:

(1)       简单标签:如< mytaghelloworld/> 数据挖掘实验室

(2)       带属性标签:如<imytagcheckinput dbname = “<myBean.getDBName()>”/>

数据挖掘研究院

(3)       带标签体的标签:

在自定义标签的起始和结束标签之间的部分为标签体(Body)Body的内容可以是JSP中的标准标签,也可以是HTML、脚本语言或其他的自定义标签。

数据挖掘研究院

<mytagcheckinput dbname = “<myBean.getDBName()>”> 数据挖掘研究院

      <mytag:log message=”Table Name”> 数据挖掘研究院

<mytagcheckinput />

(4)       可以被Script使用的标签:

定义了idtype属性的标签可以被标签后面的Scriptlet使用。

数据挖掘实验室

<mytagconnection id = “oraDB” type = “DataSource” name = “Oracle”>

<%oraDB.getConnection(); %> 数据挖掘研究院

 

4.接口及其他

实际上,自定义标签的处理类实现了Tag Handler对象。JSP技术在javax.servlet.jsp.tagext中提供了多个Tag Handler接口,JSP1.2中定义了TagBodyTagIterationTag接口,在JSP2.0中新增了SimpleTag接口。JSP还提供了上述接口的实现类TagSupportBodyTagSupportSimpleTagSupportSimpleTagSupport只在JSP2.0中才有)。BodyTagSupport实现了BodyTagTagIterationTag接口。 数据挖掘研究院

 

数据挖掘实验室

接口及其方法

数据挖掘研究院

Tag接口

方法

数据挖掘研究院

SimpleTag 数据挖掘实验室

dotage

Tag

doStartTag,doEndTag,release

数据挖掘研究院

IterationTag

数据挖掘研究院

doStartTag,doAfterTag,release 数据挖掘研究院

BodyTag

数据挖掘研究院

doStartTag,doEndTag,release,doInitBody,doAfterBody 数据挖掘研究院

 

下表引自SunJSP在线教程。 数据挖掘实验室

Tag Handler Methods 

Tag Handler Type

Methods 数据挖掘研究院

Simple 数据挖掘研究院

doStartTag, doEndTag, release

数据挖掘研究院

Attributes

doStartTag, doEndTag, set/getAttribute1...N, release 数据挖掘研究院

Body, Evaluation and No Interaction

doStartTag, doEndTag, release

数据挖掘研究院

Body, Iterative Evaluation 数据挖掘研究院

doStartTag, doAfterBody, doEndTag, release

数据挖掘研究院

Body, Interaction 数据挖掘研究院

doStartTag, doEndTag, release, doInitBody, doAfterBody, release

 

数据挖掘研究院

下表中的EVALevaluate的缩写,意思是:评价, 估计, ...的值,在下列的返回值中的意思是执行。

返回值

数据挖掘研究院

意义

数据挖掘实验室

SKIP_BODY 数据挖掘实验室

表示不用处理标签体,直接调用doEndTag()方法。 数据挖掘研究院

SKIP_PAGE

数据挖掘研究院

忽略标签后面的JSP内容。

EVAL_PAGE

处理标签后,继续处理JSP后面的内容。 数据挖掘研究院

EVAL_BODY_BUFFERED

数据挖掘研究院

表示需要处理标签体。

数据挖掘研究院

EVAL_BODY_INCLUDE 数据挖掘研究院

表示需要处理标签体,但绕过setBodyContent()doInitBody()方法

数据挖掘研究院

EVAL_BODY_AGAIN 数据挖掘研究院

对标签体循环处理。

数据挖掘研究院

  数据挖掘研究院

具体用法可以查看其他参考资料。

数据挖掘研究院

SunJava教程相关部分:http://java.sun.com/webservices/docs/1.0/tutorial/doc/JSPTags.html 数据挖掘实验室

  数据挖掘研究院

 

二、实验

1.试验介绍

下面的实验就是基于上述开发流程开发的。 数据挖掘研究院

1)在JSP中指定tagliburi<%@ taglib uri="/helloworld" prefix="mytag" %> 数据挖掘研究院

2)在web.xml中配置tag-location: 数据挖掘实验室

<taglib> 数据挖掘研究院

            <taglib-uri>/helloworld</taglib-uri>

            <taglib-location>/WEB-INF/helloworld.tld</taglib-location> 数据挖掘研究院

       </taglib> 数据挖掘实验室

       3)在tag-location中指定的.tld文件中定义实现标签的处理类: 数据挖掘研究院

   <short-name>mytag</short-name> 数据挖掘研究院

   <tag> 数据挖掘研究院

      <name>helloworld</name>

数据挖掘研究院

      <tag-class>mytag.HelloWorldTag</tag-class> 数据挖掘研究院

      <body-content>empty</body-content>

  </tag>

(4)执行处理类mytag.HelloWorldTagdoStartTag和doEndTag方法,然后将结果输入到JSP中,和JSP中的内容一起输出。实际上自定义标签和JSP中的其他的内容被WebServer一起编译成servlet。 数据挖掘研究院

  数据挖掘研究院

  数据挖掘研究院

2. 完成后的试验的目录结构

应用myjsp放在Tomcatwebapps下。 数据挖掘研究院

myjsp中包含J2EE标准目录结构:WEB-INFhello.jspWEB-INF中包含子目录classeslibweb.xml,tld文件可以放在WEB-INF下,也可以放在WEB-INF的子目录下。

数据挖掘研究院

  数据挖掘研究院

 

3.开始实验

31编写JSP

 

< !—hello.jsp的源码 -- > 数据挖掘研究院

<%@ page contentType="text/html; charset=GBK" %>

数据挖掘研究院

<%@ taglib uri="/helloworld" prefix="mytag" %>

<html>

数据挖掘研究院

<head>

数据挖掘研究院

<title>

jsp1 数据挖掘研究院

</title>

数据挖掘研究院

</head> 数据挖掘研究院

<body bgcolor="#ffffc0">

<h1> 数据挖掘研究院

下面显示的是自定义标签中的内容

数据挖掘研究院

</h1>

数据挖掘研究院

  数据挖掘实验室

<br><br> 数据挖掘研究院

<mytag:helloworld></mytag:helloworld>

数据挖掘实验室

  数据挖掘研究院

<br> 数据挖掘研究院

  数据挖掘研究院

</form>

数据挖掘实验室

</body> 数据挖掘研究院

</html>

  数据挖掘研究院

32
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
匿名?