返回站点首页
支持中心首页
常见问题搜索
常见问题
域名相关问题
空间相关问题
邮箱相关问题
智能建站相关问题
繁简通相关问题
中文域名相关问题
代理申请相关问题
 

   

Tomcat 5 对JSP2.0 支持的新功能介绍

1. 简单标志扩展实现示例:

java程序 RepeatSimpleTag.java://放到WEB-INF/classes/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;
}
}

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

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/j2ee 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)</description>
<name-given>count</name-given>
</variable>


<attribute> <!--设置java类中变量,调用java文件中的setNum()方法-->
<name>num</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag> <!--//这里是结束标志描述-->

</taglib>

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

repeat.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>

看这么简单就可以得到想要的结果,方便吧。
2. 一个简单的标签文件

SimpleTag.tag 这个文件放到WEB-INF/tags下面

<h4>hello,welcome to here ,here is a simple tag Example</h4>

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页面中还要使用这个标签文件,同样也可以实现这调用这个标志库文件,达到简单的代码复用的目的。
3. 标签文件的动态复用

标签文件可以作为模板使用。指令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"> Java for in-flight entertainment
Another Technology Headline
Another Technology Headline
</tags:display>
</TD>

<TD> <tags:display color="#ffcc11" bgcolor="#ffffcc" title="Sports"> American Football NBA Soccer
</tags:display>
</TD>
</TR>

</TABLE> </BODY> </HTML>

其中<tags:display color="#ffcc11" bgcolor="#ffffcc" title="Sports"> 每次设定Tag文件中的相关的属性,而Tag标志文件则根据设定的属性显示相应的结果。

返回上一页