JSP2.0中标志库扩展SimpleTag怎么用
更新:HHH   时间:2023-1-7


这篇文章主要介绍JSP2.0中标志库扩展SimpleTag怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

在jsp1.2时代已经有标记库了, 并且功能强大,但标记库的编程和调用都比较复杂,导 致真正使用到WEB开发中的还是不多。JSP2.0推出的简单标记库扩展解决了以上的问题。 简单标记库相对JSP1.2中的标记库来说,优点在于: 对后台程序员来说:结构更简单,实现接口更少,可以轻松实现后台程序

JSP 2.0中加入了新的创建自制标记的API:javax.servlet.jsp.tagext.SimpleTag,该 API定义了用来实现简单标记的接口。和JSP 1.2中的已有接口不同的是,SimpleTag接口 不使用doStartTag()和doEndTag()方法,而提供了一个简单的doTag()方法。这个方法在 调用该标记时只被使用一次。而需要在一个自制标记中实现的所有逻辑过程、循环和对 标记体的评估等都在这个方法中实现。从这个方面来讲,SimpleTag可以和IterationTa g达到同等的作用。但SimpleTag的方法和处理周期要简单得多。在SimpleTag中还有用来 设置JSP内容的setJspBody()和getJspBody()方法。Web容器会使用setJspBody()方法定 义一个代表JSP内容的JspFragment对象。实现SimpleTag标记的程序可以在doTag方法中 根据需要多次调用getJspBody().invoke()方法以处理JSP内容。 对于前台WEB页面制作人员:在JSP1.2时代,Taglib页面调用实际上是比较复杂的,Simpl eTag+EL表达式语言极大的简化了Taglib调用,真正达到不懂JAVA的人员也可以轻松编写 JSP页面的目的。

一个Taglib页面的编写和调用包括三个流程:

1. 后台程序员编写要被调用的程序

简单标志扩展实现示例:

java程序 RepeatSimpleTag.java://放到WEB-INF/classes/jsp2/examples/simpletag 下面 package jsp2.examples.simpletag;

package jsp2.examples.simpletag;   import javax.servlet.jsp.JspException;   import javax.servlet.jsp.tagext.SimpleTagSupport;   import java.util.HashMap;   import java.io.IOException;   public class RepeatSimpleTag extends SimpleTagSupport {   private int num;   public void doTag() throws JspException, IOException {   for (int i=0; i<num; i++) {   getJspContext().setAttribute("count",   String.valueOf( i + 1 ) );   getJspBody().invoke(null);   }   }   public void setNum(int num) {   //这个用来设置num的值,这个方法将在tld文件中调用   this.num = num;   }   }

----------------------------

2. 编辑Tag标志描述文件,这个文件要放在WEB-INFjsp2下面,并且这个文件要以tld为 文件结尾。

repeatTaglib.tld (标志库描述文件,放在WEB-INF下面的jsp2下面)

< ?xml version="1.0" encoding="UTF-8" ?>   < taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org   /2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2e   e web-jsptaglibrary_2_0.xsd" version="2.0">   < description>A tag library exercising SimpleTag handlers.< /description>   < tlib-version>1.0< /tlib-version>   < short-name>SimpleTagLibrary< /short-name>   < uri>/SimpleTagLibrary< /uri>   < tag> < !--这里是开始标志描述-->   < name>repeat< /name> < !--这里设定的标志名称,供jsp文件调用-->   < tag-class>jsp2.examples.simpletag.RepeatSimpleTag< /tag-class>   < !--对应的java文件路径-->   < body-content>scriptless< /body-content>   < variable> < !--设置要获取的变量返回值-->   < description>Current invocation count (1 to num)< /descri   ption>   < name-given>count< /name-given>   < /variable>   < attribute> < !--设置java类中变量,调用java文件中的setNum()方法-->   < name>num< /name>   < required>true< /required>   < rtexprvalue>true< /rtexprvalue>   < /attribute>   < /tag> < !--//这里是结束标志描述-->   < /taglib>

----------------------------

3.JSP页面人员就可以直接调用了。

< %@ taglib prefix="repeattag" uri="/WEB-INF/jsp2/repeatTaglib.tld" %>   < html>   < body>   < br>   < repeattag:repeat num="5">//向标记库文件中的repeat标记付值   获得返回值{count} of 5< br>//得到返回结果(java程序中实现了循环)   < /repeattag:repeat>   < /body>   < /html>

看这么简单就可以得到想要的结果,方便吧。

----------------------------

使用标签文件(JSP fragment): 使用简单标签扩展机制的另一种简单的方法是通过标签文件。 标签文件是一种资源文件,网页作者可以利用它抽取一段JSP代码,通过定制功能来实现 代码的复用。换句话说,标签文件允许JSP网页作者使用JSP语法创建可复用的标签库。 标签文件的扩展名必须是“.tag”。表面上标签文件文件和jsp1.2中的jsp:include 指 令中的包含文件好像是一样的,但实际上还是有一些不同的,标签文件一般功能比较短小 简单而且重复使用率高的一些代码。

----------------------------

一个简单的标签文件 SimpleTag.tag 这个文件放到WEB-INF/tags下面

< h5>hello,welcome to here ,here is a simple tag Example< /h5>   char.jsp   < %@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>   < HTML>   < BODY>   < H2>Tag File Example< /H2>   < P>< B>The output of my first tag file is< /B>: < tags:SimpleTag/>   < /BODY>   < /HTML>

如果其他JSP页面中还要使用这个标签文件,同样也可以实现这调用这个标志库文件,达到 简单的代码复用的目的。

----------------------------

标签文件(JSP fragment)的基本特点是可以使处理JSP的容器推迟评估JSP标记属性。我 们知道一般JSP是首先评估JSP标记的属性,然后在处理JSP标记时使用这些属性,而JSP fragment提供了动态的属性。也就是说,这些属性在JSP处理其标记体时是可以被改变 的。标签文件是用文本文件格式(JSP语法)实现自制标记,这也是JSP2.0的一个主要新功能。

----------------------------

标签文件的动态复用 标签文件可以作为模板使用。指令attribute类似于TLD中的< attribute>元素,允许声明 自定义的动作属性。

< %@ attribute name="color" %>   < %@ attribute name="bgcolor" %>   < %@ attribute name="title" %>   < TABLE border="0" bgcolor="${color}">   < TR> < TD>< B>${title}< /B>< /TD> < /TR>   < TR> < TD bgcolor="${bgcolor}"> < jsp:doBody/> < /TD> < /TR>   < /TABLE>   以下是调用这个Tag文件的jsp文件   < %@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>   < HTML>< BODY>   < TABLE border="0">   < TR valign="top">   < TD>   < tags:display color="#ff0000" bgcolor="#ffc0c0" title="Travel"> Last French   Concorde Arrives in NY   Another Travel Headline   Yet Another Travel Headline   < /tags:display>   < /TD>   < TD> < tags:display color="#00fc00" bgcolor="#c0ffc0" title="Technology"> Jav   a for in-flight entertainment   Another Technology Headline   Another Technology Headline   < /tags:display>   < /TD>   < TD> < tags:display color="#ffcc11" bgcolor="#ffffcc" title="Sports"> America   n Football NBA Soccer   < /tags:display>   < /TD>   < /TR>   < /TABLE> < /BODY> < /HTML>

每次设定 Tag文件中的相关的属性,而Tag标志文件则根据设定的属性显示相应的结果。可以说在JSP2.0中使用标签库是大大的方便了。

以上是“JSP2.0中标志库扩展SimpleTag怎么用”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注天达云行业资讯频道!

返回编程语言教程...