这篇文章主要介绍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怎么用”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。