JSP空間自定義標簽實例">
 
双色球基本走势图表图双色球基本走势图表图

JSP空間自定義標簽實例



作者:jspcn    文章來源:双色球基本走势图表图 www.pfynwn.com.cn
發布日期:2010年08月02日

双色球基本走势图表图 www.pfynwn.com.cn JSP自定義標簽。在自定義標簽的起始和結束標簽之間的部分為標簽體(Body)。
標簽處理程序類:定義標簽的行為,并在JSP引擎遇到自定義標簽時調用執行。
標簽庫描述符(TLD)文件:描述標簽庫的XML文檔,向JSP引擎提供有關自定義標簽的標簽處理程序的信息。tag標簽相關屬性:實現簡單標簽處理程序 標簽處理程序是一個在運行時調用的Java類,它包含在 JSP文件中使用的自定義標簽的實現代碼.標簽處理程序必須實現或擴展javax.servlet.jsp.tagext包中的類和接口.javax.servlet.jsp.tagext含有允許標簽處理程序類與JSP容器通信的接口和類。

最近在項目中要用到這種技術,所以自己就寫一個經典的HelloWorld實例:
其實對自定義標簽已經早有接觸了(Struts中使用了很多自定義標簽,如html、bean等)
使用這種技術的優點:取代了JSP中的Java程序,并且可以重復使用,方便不熟悉Java編程的網頁設計人員

下面不說費話了,直接上代碼,下列代碼都經常測試并運行過了的

修改應用中的 /WEB-INF/web.xml如下

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="//java.sun.com/xml/ns/javaee"
xmlns:xsi="//www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="//java.sun.com/xml/ns/javaee
//java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<jsp-config>
<taglib>
<taglib-uri>/tld/helloworld</taglib-uri>
<taglib-location>/WEB-INF/tlds/helloworld.tld</taglib-location>
</taglib>
</jsp-config>
</web-app>

添加/WEB-INF/tlds/helloworld.tld文件如下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"//java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">


<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>mytag</short-name>
<tag>
<name>helloworld</name>
<tag-class>net.jspcn.HelloWorldTag</tag-class>
<body-content>empty</body-content>
</tag>
</taglib>

編寫對應的標簽類如下

package net.jspcn;

import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.tagext.TagSupport;
/**
* TagSupport與BodyTagSupport的區別:
* 主要看標簽處理類是否要讀取標簽體的內容和改變標簽體返回的內容,如果不需要就用TagSupport,否則就用BodyTagSupport
* 用TagSupport實現的標簽,都可以用BodyTagSupport來實現,因為BodyTagSupport繼承了TagSupport
*/
public class HelloWorldTag extends TagSupport {
private static final long serialVersionUID = 3174234039143531070L;

public int doStartTag() throws JspException {//這個方法不用所以直接返回值
return EVAL_BODY_INCLUDE;
}


public int doEndTag() throws JspException {//重點在這個方法上
try {
pageContext.getOut().write("Hello World!,i was printed by jsp tag");//標簽的返回值
} catch (IOException ex) {
throw new JspTagException("錯誤");
}
return EVAL_PAGE;
}
}

最后,寫一個頁面測試您的JSP標簽吧,hello.jsp,別問我應該放在什么地方哦!:)

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/tld/helloworld" prefix="mytag"%><!-- 在頁面中加以聲明 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>MyJSP</title>
</head>
<body>
<h1>自定義標簽:</h1><br>
<mytag:helloworld></mytag:helloworld>
</body>
</html>

如果不出意外,到這里,您就可以看到標簽打印出的hello,world了

Copyright © 2002-2012 www.pfynwn.com.cn. All rights reserved.
JSP中文網    備案號:粵ICP備09171188號
成都恒??萍擠⒄褂邢薰?nbsp;   成都市一環路南二段6號新瑞樓三樓8號