JSP2.0中Simple Tag介紹

JSP2.0中為了簡化標簽的復雜性,增加了制作Simple Tag的標簽類SimpleTagSupport類。
SimpleTagSupport類是實現SimpleTag接口的。它只需要實現一個doTag()方法即可,而不需要一堆回傳值。

舉例說明:
例1:HelloSimpleTag標簽
第一步:制作標簽處理類
HelloSimpleTag.java

package com.newould.taglib;

import java.io.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

public class HelloSimpleTag extends SimpleTagSupport {

public void doTag() throws JspException, IOException {
??
????? JspWriter out = getJspContext().getOut();
????? out.println("Hello Simple Tag");
}
}

第二步:編寫標簽性質文件
MyTaglib.tld

<?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>My Taglib by JavaWorld.com.tw</description>
?????? <tlib-version>1.0</tlib-version>
?????? <jsp-version>2.0</jsp-version>
?????? <short-name>Mytaglib</short-name>
?????? <uri></uri>
......

<tag>
???????? <description>Hello Simple Tag</description>
???????? <name>HelloSimpleTag</name>
???????? <tag-class>com.newould.taglib.HelloSimpleTag</tag-class>
???????? <body-content>empty</body-content>
?????? </tag>
</taglib>

第三步:編寫Jsp網頁
HelloSimpleTag.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib uri="/WEB-INF/tlds/MyTaglib.tld" prefix="mytag" %>

<html>
<head>
<title>HelloSimpleTag.jsp</title>
</head>
<body>

<h2>Simple Tag 標簽</h2>

<h1><mytag:HelloSimpleTag /></h1>

</body>
</html>

=================================================================

例2:AddSimpleTag標簽
第一步:制作標簽處理類
AddSimpleTag.java

package com.newould.taglib;

import java.io.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

public class AddSimpleTag extends SimpleTagSupport {

private int num1 = 0;
private int num2 = 0;

public void setNum1(int num1) {
????? this.num1 = num1;
}

public void setNum2(int num2) {
????? this.num2 = num2;
}

public void doTag() throws JspException, IOException {

????? JspContext ctx = getJspContext();
????? JspWriter out = ctx.getOut();
???
????? int sum = num1 + num2;
????? ctx.setAttribute("sum", Integer.toString(sum));
??
????? out.println(num1 + " + " + num2 + " = " + sum);
}
}

第二步:編寫標簽性質文件
MyTaglib.tld

<?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>My Taglib by JavaWorld.com.tw</description>
?????? <tlib-version>1.0</tlib-version>
?????? <jsp-version>2.0</jsp-version>
?????? <short-name>Mytaglib</short-name>
?????? <uri></uri>
......

<tag>
???????? <description>Add Simple Tag</description>
???????? <name>Add</name>
???????? <tag-class>com.newould.taglib.AddSimpleTag</tag-class>
???????? <body-content>empty</body-content>
??????
???????? <attribute>
?????????? <name>num1</name>
?????????? <required>true</required>
?????????? <rtexprvalue>true</rtexprvalue>
???????? </attribute>

???????? <attribute>
?????????? <name>num2</name>
?????????? <required>true</required>
?????????? <rtexprvalue>true</rtexprvalue>
???????? </attribute>
????????????
?????? </tag>
???
</taglib>

第三步:編寫Jsp網頁
AddSimpleTag.jsp

%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib uri="/WEB-INF/tlds/MyTaglib.tld" prefix="mytag" %>

<html>
<head>
<title>AddSimpleTag.jsp</title>
</head>
<body>

<h2>AddSimpleTag 標簽</h2>

<h1><mytag:Add num1="5" num2="9" /></h1>

最后結果:${sum}

</body>
</html>

=================================================================

例3 RepeatSimpleTag標簽
RepeatSimpleTag標簽 主要是用來重復顯示某段文字。
這個例子在處理上與前兩個例子有點不同

第一步:制作標簽處理類
RepeatSimpleTag.java

package com.newould.taglib;

import java.io.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

public class RepeatSimpleTag extends SimpleTagSupport {

private int count = 0;//重復的次數
private JspFragment fragment;//重復的內容

public void setCount(int count) {
????? this.count = count;
}

public void setFragment(JspFragment fragment) {
????? this.fragment = fragment;
}

public void doTag() throws JspException, IOException {

????? JspContext ctx = getJspContext();
????? JspWriter out = ctx.getOut();
???
????? for(int i=0 ; i<count ; i++) {
?????? fragment.invoke(null);//表示將fragment的內容顯示出來
????? }
}
}

第二步:編寫標簽性質文件
MyTaglib.tld

<?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>My Taglib by JavaWorld.com.tw</description>
?????? <tlib-version>1.0</tlib-version>
?????? <jsp-version>2.0</jsp-version>
?????? <short-name>Mytaglib</short-name>
?????? <uri></uri>
......

<tag>
???????? <description>Repeate Simple Tag</description>
???????? <name>Repeat</name>
???????? <tag-class>com.newould.taglib.RepeatSimpleTag</tag-class>
???????? <body-content>empty</body-content>
??????
???????? <attribute>
?????????? <name>count</name>
?????????? <required>true</required>
?????????? <rtexprvalue>true</rtexprvalue>
???????? </attribute>

???????? <attribute>
?????????? <name>fragment</name>
?????????? <required>true</required>
?????????? <fragment>true</fragment>
???????? </attribute>
?????? </tag>????
???
</taglib>

注意:<fragment>true</fragment>,一定要這樣設定fragment屬性。

第三步:編寫Jsp網頁
RepeatSimpleTag.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib uri="/WEB-INF/tlds/MyTaglib.tld" prefix="mytag" %>

<html>
<head>
<title>RepeatSimpleTag.jsp</title>
</head>
<body>

<h2>RepeatSimpleTag 標簽</h2>

<mytag:Repeat count="5" >
<jsp:attribute name="fragment">
重復執行 ....<br>
</jsp:attribute>
</mytag:Repeat>
</body>
</html>

=================================================================

DynamicAttributes接口
只要制作的標簽實現了DynamicAttributes接口就有動態屬性的功能。
例如:我們要做多個數的累加運算,則AddSimpleTag標簽就可以通過實現DynamicAttributes接口就可以實現了.

實現DynamicAttributes接口,必須實現setDynamicAttributes()方法,此方法用來接收動態屬性.

舉例:第一步:制作標簽處理類

package com.newould.taglib;

import java.io.*;
import java.util.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

public class DynamicAdd extends SimpleTagSupport implements DynamicAttributes {

//用來接收動態屬性
private ArrayList keys = new ArrayList();
private ArrayList values = new ArrayList();

public void doTag() throws JspException, IOException {

????? JspContext ctx = getJspContext();
????? JspWriter out = ctx.getOut();
???
????? float num = 0;
????? float sum = Float.parseFloat((String)values.get(0));
????? out.print(sum);
???
????? for (int i = 1 ; i < keys.size() ; i++) {
?????? String temp = (String)values.get(i);
?????? num = Float.parseFloat(temp);
?????? sum = sum + num;
?????? out.print(" + " + num);
????? }
???
????? out.print(" = " + sum);
????? ctx.setAttribute("sum", Float.toString(sum));
???
}

public void setDynamicAttribute(String uri, String name, Object value) throws JspException {
????? keys.add(name);
????? values.add(value);
}
}

第二步:編寫標簽性質文件
<tag>
???????? <description>DynamicAttribute</description>
???????? <name>DynAdd</name>
???????? <tag-class>com.newould.taglib.DynamicAdd</tag-class>
???????? <body-content>empty</body-content>

???????? <dynamic-attributes>true</dynamic-attributes>
?????? </tag>????

第三步:編寫Jsp網頁
<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib prefix="JSPBook" tagdir="/WEB-INF/tags/" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<html>
<head>
<title>CH16 - DynAdd.jsp</title>
</head>
<body>

<h2>Tag File 范例</h2>

<JSPBook:DynAdd num1="111" num2="222" num3="444" >

<jsp:attribute name="great">
????? <font color="red">SUM:${sum} ...</red>
</jsp:attribute>
<jsp:attribute name="less">
????? <font color="blue">SUM:${sum} ...</red>
</jsp:attribute>
</JSPBook:DynAdd>

</body>
</html>
JSP2.0中為了簡化標簽的復雜性,增加了制作Simple Tag的標簽類SimpleTagSupport類。
SimpleTagSupport類是實現SimpleTag接口的。它只需要實現一個doTag()方法即可,而不需要一堆回傳值。

轉載于:https://www.cnblogs.com/jadmin/archive/2007/08/14/2206335.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277005.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277005.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277005.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[置頂] 動軟軟代碼生成器使用(127.0.0.1)無法看到 SQLServer2008 新附加數據庫的 原因 以及 解決方案...

在項目中&#xff0c;使用代碼生成器給我們的開發工作帶來了相當大的方便&#xff0c;而有時候會出現這樣的問題&#xff0c;就是新附加的數據庫在動軟代碼生成器當中看不到&#xff0c;奇了怪了 一&#xff0c;首先看動軟代碼生成器的鏈接字符串&#xff0c;如圖 &#xff0c;…

對Hibernate使用之愚見

對Hibernate使用之愚見 國人跟風之潮&#xff0c;自古有之&#xff0c;至今亦然。確實&#xff0c;經過配置優化的Hibernate效率與無任何優化的Hibernate效率誠然不可同日而語。但由于項目開發的復雜性&#xff0c;開發周期中一些突發因素的制約&#xff0c;及項目構建者自身能…

設計模式學習總結1 - 創建型1 - Abstract Factory抽象工廠模式

AbstractFactory抽象工廠模式&#xff08;創建型&#xff09; 作用&#xff1a; 這種模式支持創建不同的對象&#xff0c;這些對象功能接近且一般都是在一起創建的。抽象工廠被具體化成不同的工廠來創建類似產品的不同產品。這種模式將類于使用的客戶端分離以便通過工廠來創建。…

QT練習9 Dialog學習

http://files.cnblogs.com/hnrainll/dialog.zip 源代碼下載轉載于:https://www.cnblogs.com/hnrainll/archive/2011/05/30/2063135.html

C#中NULL,,DBNULL,String.Empty,Convert.IsDBNull()的區別

C#中的空值的判斷較麻煩&#xff0c;不象在VB6中那么簡單&#xff0c;這些各種空值的判斷和理解對不熟悉的人來說&#xff0c;可能很麻煩&#xff0c;現就我在使用過程中的一點體會和大家共同分享。 (1)NULL null 關鍵字是表示不引用任何對象的空引用的文字值。null 是引用類型…

關于初始化C++類成員

轉自:http://www.vckbase.com/document/viewdoc/?id584 在使用C編程的過程當中&#xff0c;常常需要對類成員進行初始化&#xff0c;通常的方法有兩種&#xff1a; 第一種方法&#xff1a; CMYClass::CSomeClass() {x0;y1; } 第二種方法&#xff1a; CSomeClass::CSomeClass…

ASP.NET 2.0 中的新增服務、控件與功能概述(四)

原文出自http://blog.sina.com.cn/s/blog_48b6cd65010004fc.html個性化 另一個新增的服務是個性化&#xff0c;它提供了一種現成的解決方案&#xff0c;用于解決存儲站點用戶的個性化設置問題。目前&#xff0c;此類設置通常存儲在Cookie、后端數據庫或這兩者中。無論這些設置存…

C/C++ 交換兩個數,不使用第三個變量, 函數模板來實現

#include <iostream>template<typename T> void exchangeTwoNumber(T &t1, T &t2)&#xff1b;void test();int main() {int a 10, b 20;double q 10.1, w 20.2;char z z, x x;std::cout << "交換前的 a " << a << &qu…

Oracle錯誤集!

個人使用Oracle時出現的錯誤&#xff0c;在這里記下來&#xff0c;加深印象。 1、ORA-20000: ORU-10027: buffer overflow, limit of 2000 bytes 今天寫存儲過程時&#xff0c;使用dbms_output.put_line(result:||i||---||documentID);輸出測試結果。當我設置其輸出記錄較多…

[原+轉]CSS hack 小技巧 讓你的CSS 兼容ff ie6.0 ie7.0

在做東西的時候發現在ie6.0中做的東西到ff下面目全非100% css不兼容不問題 查閱了相關資料 個人感覺以下是一個笨的也是比較快的處理兼容問題的方法方法就是針對不同的瀏覽器寫不同的css 以前用!important 但是ie7 和ff 就不好分了個人感覺比較好的方法是 samplepadding:0px; …

準備試用svn

用了VSS2005感覺一般&#xff0c;準備試用svn&#xff01;&#xff01;&#xff01;轉載于:https://www.cnblogs.com/jessenee/archive/2008/03/31/1131027.html

web功底之強,實屬罕見。。

不看不知道&#xff0c;一看汗得死你了。。純用html做的。不多說&#xff0c;看看就知道了&#xff0c;http://www.kanqq.com/qq/smilies/ku.htm 以人格保證&#xff0c;不是病毒網頁。。。 轉載于:https://www.cnblogs.com/lsgoodsun/archive/2007/11/04/949222.html

第三次作業-Scrum

理解&#xff1a; 首先&#xff0c;敏捷并不是一門具體的技術&#xff0c;而是一種理念或者說是一種思想。它可以指導我們更加高效的開發。其次&#xff0c;敏捷開發都具有以下共同的特征&#xff1a; 1.迭代式開發2. 增量交付 3. 開發團隊和用戶反饋推動產品開發 4. …

如何處理錯誤消息Please install the gcc make perl packages

2019獨角獸企業重金招聘Python工程師標準>>> 如何處理這行錯誤消息&#xff1f; Please install the gcc make perl packages from your distribution。 執行命令行&#xff1a;yum install gcc perl make 輸出&#xff1a; Loaded plugins: product-id, search-dis…

iOS開發 CGAffineTransform 讓圖片旋轉, 旋轉后獲得圖片旋轉的角度

1.讓圖片旋轉 UIImageView *imageView [[UIImageView alloc]init]; imageView.frame CGRectMake(50, 50, 200, 200); imageView.image [UIImage imageNamed:"460.jpg"]; CGAffineTransform transform CGAffineTransformMakeRotation(M_PI*0.38); imageView.tr…

致畢業生:那些年我們錯過的“BAT”

本文旨在用最通俗的語言講述最枯燥的基本知識最近看到公眾號中各種推“招聘季金九銀十銅十二”之類的文章&#xff0c;把畢業季找工作需要應對的事情和解決方法都已經寫的很詳細了&#xff0c;還有各種面經考經揮之即來&#xff0c;已經沒必要再去寫這樣的一個文章了&#xff0…

PHP函數收藏---不斷更新中!

替換html標簽 function strip_bad_tags($html) { $s preg_replace ("?[^>]*>*", "", $html); return $s; } 替換指定tag,$text是需要替換的文本,tags 是需要替換標簽的數組 function strip_selected_tags($text, $tags array()) { $args func_ge…

gcc 5.2.0 手動更新(親測)

注意:(不要在gcc-5.2.0 源碼目錄中執行 configure&#xff0c;否則會報錯)安裝操作如下&#xff1a;0、yum 安裝 gcc yum -y install gcc gcc-c libstdc libstdc-devel autoconf makegcc-5.2.0 下載地址&#xff1a;ftp://gcc.gnu.org/pub/gcc/releases/gcc-5.2.0/gcc-5.2.0…

Lie to me不錯

最近Fox的新劇有個Lie to me不錯&#xff0c;如果你膩了了沒完沒了的Lost&#xff0c;覺得Hero開始離譜了&#xff0c;Prison Break只能重看第一季了&#xff0c;懷念Friends的經典又不忍心再看第10遍的話&#xff0c;這個劇是個不錯的選擇。 看了一集了&#xff0c;每個人平均…

NLog 簡單使用

1.安裝NLog 使其集成到VS 里 下載地址&#xff1a; http://nlog-project.org/ 2.NLog.config <?xml version"1.0" encoding"utf-8" ?> <nlog xmlns"http://www.nlog-project.org/schemas/NLog.xsd"xmlns:xsi"http://www.w3.or…