激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

香港云服务器
服務器之家 - 編程語言 - Java教程 - Java自定義標簽用法實例分析

Java自定義標簽用法實例分析

2021-02-01 12:05目盡地平線 Java教程

這篇文章主要介紹了Java自定義標簽用法,結合實例形式分析了java自定義標簽的定義、使用方法與相關注意事項,需要的朋友可以參考下

本文實例講述了Java自定義標簽用法。分享給大家供大家參考,具體如下:

簡單例子

實現一個標簽分為兩步:(1)繼承SimpleTagSupport或TagSupport實現一個控制器(2)創建一個描述標簽的tld文件。下面是一個簡單例子:

(1)實現一個標簽控制器,向頁面輸出“hello”:

?
1
2
3
4
5
6
public class Test extends SimpleTagSupport{
 public void doTag() throws IOException{
  JspWriter out = getJspContext().getOut();
  out.write("hello");
 }
}

(2)在WEB-INF文件夾下創建一個custom.tld文件:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0" 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">
 <tlib-version>1.0</tlib-version>
 <jsp-version>2.0</jsp-version>
 <short-name>my</short-name>
 <!-- 直接顯示hello -->
 <tag>
  <name>Hello</name>
  <tag-class>com.huanle.utils.tags.Test</tag-class>
  <body-content>empty</body-content>
 </tag>
</taglib>

上面代碼通過<tag>標簽描述一個自定義標簽,<body-content>empty</body-content>表示這個標簽沒有標簽體,也就是開始標簽和結束標簽之間沒有內容。

接下就可以在jsp文件中使用這個標簽了(記得使用<%@taglib prefix="my" uri="/WEB-INF/custom.tld" %>指令導入標簽庫):

?
1
2
3
4
5
6
7
8
9
10
11
<%@taglib prefix="my" uri="/WEB-INF/custom.tld" %>
<!DOCTYPE html>
<html>
<head>
<title>標簽</title>
</head>
<body>
 <p>沒有標簽體,直接輸出內容的標簽</p>
 <my:Hello/>
</body>
</html>

繼承SimpleTagSupport定義簡單標簽

繼承SimpleTagSupport,然后實現doTag()方法就可以自定義一個標簽。這里有份英文教程,對繼承SimpleTagSupport方式講得非常透徹淺顯易懂,本站下載鏈接

下面是一些例子:

定義標簽屬性

(1)首先在控制器里填加一個屬性,并生成setter 方法

?
1
2
3
4
5
6
7
8
9
10
public class Test extends SimpleTagSupport{
 private String name;
 public void doTag() throws IOException{
  JspWriter out= getJspContext().getOut();
  out.write("hello");
 }
 public void setName(String name) {
  this.name = name;
 }
}

(2)在tld文件里添加這個屬性的描述,用<attribute>標簽:

?
1
2
3
4
5
6
7
8
<tag>
  <name>Hello</name>
  <tag-class>com.huanle.utils.tags.Test</tag-class>
  <body-content>empty</body-content>
  <attribute>
   <name>name</name>
  </attribute>
</tag>

<attribute>標簽有多個子標簽可以用來定義該屬性的限制:

 

名稱 用處
name 定義屬性名
required 定義該屬性是否是必須的,默認是false
rtexprvalue 定義是否允許使用一個運行時表達式的值作為該屬性的值,默認為false。比如要支持EL表達式,這個屬性應該置為true
type 定義屬性的值類型,默認是String
fragment 聲明這個變量是否應該被看做JspFragment.

 

定義標簽體

之前定義的標簽標簽體一直都是空的,如果要支持標簽體:

(1)修改tld文件的<body-content>值為scriptless,表示有標簽體,并且標簽體不含腳本(指jsp腳本,EL表達式等)

?
1
2
3
4
5
6
<!-- 獲取標簽體,輸出 -->
 <tag>
  <name>Hello</name>
  <tag-class>com.huanle.utils.tags.Test</tag-class>
  <body-content>scriptless</body-content>
 </tag>

(2)在標簽控制器中獲得標簽體并輸出:

?
1
2
3
4
5
6
7
public class Test extends SimpleTagSupport {
 private StringWriter sw = new StringWriter();
 public void doTag() throws JspException, IOException{
  getJspBody().invoke(sw);   
  getJspContext().getOut().write(sw.toString().trim().substring(0, length));
 }
}

使用時就可以包含標簽體了:

?
1
<my:Hello>hello</my:Hello>

繼承TagSupport實現更復雜的標簽
(后面更新。。。)

在標簽內部使用request

標簽屬于其實最終會轉化成一個Servlet,所有Servlet能做的標簽都能做,包括操作request,session等,其中關鍵就在getJspContext()方法上。代碼如下:

?
1
2
3
4
5
6
7
8
9
public class DispalyErrorMessageTag extends SimpleTagSupport {
 public void doTag() throws IOException{
  JspWriter out = getJspContext().getOut();
  PageContext pageContext = (PageContext)getJspContext();
  HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
  String value = request.getParameter(param);
  ...
 }
}

希望本文所述對大家java程序設計有所幫助。

原文鏈接:http://blog.csdn.net/ruangong1203/article/details/51101043

延伸 · 閱讀

精彩推薦
1243
主站蜘蛛池模板: 亚洲成人免费网站 | 午夜在线视频一区二区三区 | 毛片视频免费观看 | 一级全毛片 | 91精品国产乱码久久久久久久久 | 午夜伦情电午夜伦情电影 | 久久视频国产 | 羞羞网站在线观看入口免费 | 色悠悠久久久久 | 国产精品久久久久久久久久电影 | 懂色粉嫩av久婷啪 | 天堂二区 | 国产99页| 久久国产夫妻视频 | 亚洲日本欧美 | 成人宗合网 | 精国产品一区二区三区四季综 | 色黄视频网站 | 蜜桃网在线观看 | 国产精品一区二区x88av | 久久99国产精品视频 | 国产精品免费观在线 | 成人做爰高潮片免费视频韩国 | fc2国产成人免费视频 | 天天黄色片 | 女人久久久www免费人成看片 | 中文字幕免费播放 | 欧美在线成人影院 | 视频在线中文字幕 | 国产九色视频在线观看 | 免费看污视频在线观看 | 一级毛片免费高清 | jizzzxxxxhd| 羞羞视频.www在线观看 | 午夜神马电影网 | 日韩精品久久久久久久电影99爱 | 五月j香国内婷婷 | 国产成人精品一区二区仙踪林 | 91免费影视 | 黑人三级毛片 | 国产自91精品一区二区 |