校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁(yè) > 知識(shí)庫(kù) > JSP自定義標(biāo)簽入門學(xué)習(xí)

JSP自定義標(biāo)簽入門學(xué)習(xí)

熱門標(biāo)簽:南京新思維電話機(jī)器人 如何用中國(guó)地圖標(biāo)注數(shù)字點(diǎn) 百度地圖添加標(biāo)注圖標(biāo)樣式 泰州泰興400電話 怎么申請(qǐng) 南昌市地圖標(biāo)注app 地圖標(biāo)注市場(chǎng)怎么樣 好操作的電話機(jī)器人廠家 企業(yè)怎么在聯(lián)通申請(qǐng)400電話 聊城智能電銷機(jī)器人外呼

本文為大家分享了JSP自定義標(biāo)簽入門學(xué)習(xí)教程,希望大家喜歡。

1.JSP自定義標(biāo)簽:

自定義標(biāo)簽是用戶定義的JSP語(yǔ)言元素。當(dāng)JSP頁(yè)面包含一個(gè)自定義標(biāo)簽時(shí)將被轉(zhuǎn)化為servlet,標(biāo)簽轉(zhuǎn)化為對(duì)被 稱為tag handler的對(duì)象的操作,即當(dāng)servlet執(zhí)行時(shí)Web container調(diào)用那些操作。JSP標(biāo)簽擴(kuò)展可以讓你創(chuàng)建新的標(biāo)簽并且可以直接插入到一個(gè)JSP頁(yè)面。 JSP 2.0規(guī)范中引入Simple Tag Handlers來(lái)編寫這些自定義標(biāo)記。你可以繼承SimpleTagSupport類并重寫的doTag()方法來(lái)開發(fā)一個(gè)最簡(jiǎn)單的自定義標(biāo)簽。

2.開發(fā)自定義標(biāo)簽

下面的步驟建立一個(gè)自定義標(biāo)簽用于戰(zhàn)術(shù)客戶端的ip地址:

編寫一個(gè)普通的java類,繼承SimpleTagSupport類,

public class ShowIp extends SimpleTagSupport {
/**
 * 以下屏蔽的代碼在SimpleTagSupport代碼中已經(jīng)做了!這里不需要重復(fù)再做!
 */
/*private JspContext context;
*//**
 * 傳入pageContext
 *//*
@Override
public void setJspContext(JspContext pc) {
 this.context = pc;
}*/
@Override
public void doTag() throws JspException, IOException {
 PageContext pageContext=(PageContext)this.getJspContext();
 ServletRequest request = pageContext.getRequest();
 String ip=request.getRemoteHost();
 JspWriter out = pageContext.getOut();
 out.write("使用自定義標(biāo)簽展示客戶ip地址"+ip);
 ListString> a=null;
}
}

在web項(xiàng)目的WEB-INF目錄下建立mytaglib.tld文件,這個(gè)tld叫標(biāo)簽庫(kù)的聲明文件。(參考核心標(biāo)簽庫(kù)的tld文件)

?xml version="1.0" encoding="UTF-8" ?>
taglib xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
version="2.1">
description>A tag library exercising SimpleTag handlers./description>
!-- 標(biāo)簽庫(kù)的版本 -->
tlib-version>1.0/tlib-version>
!-- 標(biāo)簽庫(kù)前綴 -->
short-name>rlovep/short-name>
 !-- tld文件的唯一標(biāo)記 -->
 uri>http://rlovep.com/uri>
 !-- 定義標(biāo)簽,標(biāo)簽要放在方法前面 -->
 tag>
 !-- 標(biāo)簽名 -->
 name>showIp/name>
 !-- 標(biāo)簽處理類 -->
 tag-class>com.rlovep.tags.ShowIp/tag-class>
 body-content>empty/body-content>
 /tag>
 tag>
/taglib>

在jsp頁(yè)面的頭部導(dǎo)入自定義標(biāo)簽庫(kù):url為你在tld中寫的url,前綴也是你在tld文件中定義的

%@ taglib uri="http://rlovep.com" prefix="rlovep" %>

在jsp中使用自定義標(biāo)簽

%-- 測(cè)試簡(jiǎn)單的自定義標(biāo)簽,標(biāo)簽體(我是你)不顯示 --%>
rlovep:showIp>我是你
/rlovep:showIp>

3.自定義標(biāo)簽的執(zhí)行過程

當(dāng)訪問:http://localhost:8080/stuJsp/Hellotags.jsp 時(shí);要重啟Tomcat使服務(wù)器啟動(dòng)時(shí),加載每個(gè)web應(yīng)用的WEB-INF目錄下的所有文件!!!例如。web.xml, tld文件!!!
步驟如下:

  • 檢查jsp文件的taglib指令,是否存在一個(gè)url為http://rlovep.com的tld文件。如果沒有,則報(bào)錯(cuò)。
  • 執(zhí)行jsp文件的轉(zhuǎn)化:把jsp文件翻譯成java源文件->編譯class->構(gòu)造類對(duì)象->調(diào)用_jspService()方法
  • 讀到到mytaglib.tld文件中查詢是否存在為showIp的標(biāo)簽
  • 找到對(duì)應(yīng)的標(biāo)簽,則讀到內(nèi)容,得到com.rlovep.tags.ShowIp
  • 構(gòu)造ShowIp對(duì)象,然后調(diào)用ShowIp里面的方法:dotag方法;

4.訪問標(biāo)簽體

你可以像標(biāo)準(zhǔn)標(biāo)簽庫(kù)一樣在標(biāo)簽中包含消息內(nèi)容。如我們要在我們自定義的中包含內(nèi)容

格式如下:

rlovep:showIp>我是你
/rlovep:showIp>

但要文字顯示需要修改處理類和tld文件:
修改處理類在doTag方法中增加如下內(nèi)容:

JspContext jspContext2 = this.getJspContext();
//顯示標(biāo)簽體的兩種方法
//方法1直接調(diào)用
//jspBody.invoke(null);
//方法2通過輸出到out
//jspBody.invoke(jspContext2.getOut());

修改tld文件:

 tag>
 !-- 標(biāo)簽名 -->
 name>showIp/name>
 !-- 標(biāo)簽處理類 -->
 tag-class>com.rlovep.tags.ShowIp/tag-class>
 !-- 輸出標(biāo)簽體的內(nèi)容格式標(biāo)簽體不可以寫jsp的java代碼 -->
 body-content>scriptless/body-content>
 /tag>

現(xiàn)在你可以將標(biāo)簽體的內(nèi)容顯示了;

%-- 標(biāo)簽提會(huì)顯示 --%>
rlovep:showIp>我是你
/rlovep:showIp>

輸出標(biāo)簽體的內(nèi)容格式:
JSP: 在傳統(tǒng)標(biāo)簽中使用的。可以寫和執(zhí)行jsp的java代碼。
scriptless: 標(biāo)簽體不可以寫jsp的java代碼
empty: 必須是空標(biāo)簽。
tagdependent : 標(biāo)簽體內(nèi)容可以寫jsp的java代碼,但不會(huì)執(zhí)

5.給標(biāo)簽體帶屬性:

你可以在自定義標(biāo)準(zhǔn)中設(shè)置各種屬性,要接收屬性,值自定義標(biāo)簽類必須實(shí)現(xiàn)setter方法;

格式如下:

!-- 測(cè)試帶屬性的標(biāo)簽,標(biāo)簽體顯示通過類處理 -->
rlovep:AttributeTags name="peace" value="12345

定義屬性步驟如下:
編寫處理類:AttributeTags extends SimpleTagSupport

添加倆個(gè)屬性:
//聲明屬性的成員變量
private Integer value;
private String name;
并為兩個(gè)成員屬性寫setter方法;
public void setValue(Integer value)
public void setName(String name) 

在標(biāo)簽庫(kù)文件tld注明此標(biāo)簽和屬性:

!-- 標(biāo)簽名 -->
 name>AttributeTags/name>
 !-- 標(biāo)簽處理類 -->
 tag-class>com.rlovep.tags.AttributeTags/tag-class>
 !-- 輸出標(biāo)簽體的內(nèi)容格式標(biāo)簽體不可以寫jsp的java代碼 -->
 body-content>scriptless/body-content>
 !-- 配置屬性name -->
 attribute>
 name>name/name>
 !-- 是否必填 -->
 required>true/required>
 !-- 是否支持EL表達(dá)式 -->
 rtexprvalue>true/rtexprvalue>
 /attribute>
 !-- 配置屬性value -->
 attribute>
 name>value/name>
 !-- 是否必填 -->
 required>true/required>
 !-- 是否支持EL表達(dá)式 -->
 rtexprvalue>true/rtexprvalue>
 /attribute>
 /tag>

現(xiàn)在就可以用帶屬性的標(biāo)簽了
在tld配置屬性時(shí)你可以配置下面的屬性:

6.帶有子標(biāo)簽的自定義標(biāo)簽:

就像核心標(biāo)簽庫(kù)的choose標(biāo)簽一樣我們也可以定義嵌套的自定義標(biāo)簽,這部分我們主要講解自己創(chuàng)建一個(gè)類似核心標(biāo)簽庫(kù)的choose標(biāo)簽。步驟如下:

建立處理類,處理類還是與前面一樣的方法。需要介紹的是用到了一個(gè)getParent()方法,從名字上就可以知道是為了獲得父標(biāo)簽,對(duì)就是獲得父標(biāo)簽類;
建立三個(gè)處理類文件: ChooseTag,OtherWiseTag,whenTag

//ChooseTag類:
public class ChooseTag extends SimpleTagSupport{
//此去時(shí)變量不是標(biāo)簽屬性,由when標(biāo)簽更改;othewise獲得;
private boolean flag; 
public boolean isFlag() {
 return flag;
}
public void setFlag(boolean flag) {
 this.flag = flag;
}
@Override
public void doTag() throws JspException, IOException {
 // Choose標(biāo)簽作用顯示標(biāo)簽體,以及作為其他兩個(gè)標(biāo)簽的父標(biāo)簽;
 getJspBody().invoke(null);
}
}
//whenTag類
public class whenTag extends SimpleTagSupport{
//增加test屬性
private boolean test;
public boolean isTest() {
 return test;
}
public void setTest(boolean test) {
 this.test = test;
}
@Override
public void doTag() throws JspException, IOException {
 //如果標(biāo)簽屬性為true,顯示標(biāo)簽體
 if(test){
  getJspBody().invoke(null);
 }
 //設(shè)置父標(biāo)簽給otherwise用
 ChooseTag parent=null;
 if(getParent() instanceof ChooseTag){
  parent=(ChooseTag)getParent();
  parent.setFlag(test);
 }
}
}
//OtherWiseTag類:
public class OtherWiseTag extends SimpleTagSupport {
@Override
public void doTag() throws JspException, IOException {
 boolean test=true;
 //獲取父標(biāo)簽的test,由他的上一個(gè)when設(shè)置
 if(getParent() instanceof ChooseTag)
 {
  //獲取父標(biāo)簽的test,由他的上一個(gè)when設(shè)置
  ChooseTag parent=(ChooseTag)getParent();
  test=parent.isFlag();
 }
 if(!test){
  getJspBody().invoke(null);
 }
}
}

編寫tld文件:與其他的標(biāo)簽定義一模一樣

!-- 定義標(biāo)簽,choose-->
 tag>
 !-- 標(biāo)簽名 -->
 name>choose/name>
 !-- 標(biāo)簽處理類 -->
 tag-class>com.rlovep.tags.ChooseTag/tag-class>
 !-- 輸出標(biāo)簽體的內(nèi)容格式標(biāo)簽體不可以寫jsp的java代碼 -->
 body-content>scriptless/body-content>
 /tag>
 !-- 定義標(biāo)簽,when-->
tag>
 !-- 標(biāo)簽名 when -->
 name>When/name>
 !-- 標(biāo)簽處理類 -->
 tag-class>com.rlovep.tags.whenTag/tag-class>
 !-- 輸出標(biāo)簽體的內(nèi)容格式標(biāo)簽體不可以寫jsp的java代碼 -->
 body-content>scriptless/body-content>
 !-- 配置屬性name -->
 attribute>
 name>test/name>
 !-- 是否必填 -->
 required>true/required>
 !-- 是否支持EL表達(dá)式 -->
 rtexprvalue>true/rtexprvalue>
 /attribute>
 /tag>
 !-- 定義標(biāo)簽,Otherwise-->
 tag>
 !-- 標(biāo)簽名 -->
 name>otherwise/name>
 !-- 標(biāo)簽處理類 -->
 tag-class>com.rlovep.tags.OtherWiseTag/tag-class>
 !-- 輸出標(biāo)簽體的內(nèi)容格式標(biāo)簽體不可以寫jsp的java代碼 -->
 body-content>scriptless/body-content>
 /tag>

使用帶子標(biāo)簽的標(biāo)簽:與使用其他標(biāo)簽稍微有些不同,需要嵌套

!-- 測(cè)試choose -->
rlovep:choose>
rlovep:When test="${105 }">
 條件成立執(zhí)行when
/rlovep:When>
rlovep:otherwise>
 條件不成立執(zhí)行otherwise
/rlovep:otherwise>
/rlovep:choose>

自定義標(biāo)簽就介紹到這里;

404頁(yè)面,505頁(yè)面,錯(cuò)誤頁(yè)面配置方法:

可以在web.xml中給你的網(wǎng)站配置全局的404頁(yè)面,505頁(yè)面,錯(cuò)誤頁(yè)面;配置方法如下:記得建立相應(yīng)的跳轉(zhuǎn)文件。

?xml version="1.0" encoding="UTF-8"?>
web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
!-- 配置空指針異常 -->
 error-page>
  exception-type>java.lang.NullPointerException/exception-type>
  location>/error.jsp/location>
 /error-page>
 !-- 配置505錯(cuò)誤頁(yè)面 -->
 error-page>
 error-code>500/error-code>
 location>/common/500.jsp/location>
 /error-page>
 !-- 配置404錯(cuò)誤頁(yè)面 -->
 error-page>
 error-code>404/error-code>
 location>/common/404.html/location>
 /error-page>
/web-app>

JSP入門就介紹到這里,希望對(duì)大家的學(xué)習(xí)有所幫助。

您可能感興趣的文章:
  • JSP經(jīng)典學(xué)習(xí)筆記(包含各種入門常用語(yǔ)法)
  • 通用JSP頁(yè)面 jsp入門級(jí)文章
  • jsp Hibernate入門教程
  • JSP迅速入門
  • 幾則JSP入門知識(shí)總結(jié)
  • JSP開發(fā)入門(一)--安裝好你的機(jī)器來(lái)使用JSP
  • JSP開發(fā)入門(五)--JSP其他相關(guān)資源
  • JSP開發(fā)入門(四)--JSP的內(nèi)部對(duì)象
  • JSP開發(fā)入門(三)--JSP與JavaBean
  • JSP開發(fā)入門(二)----JSP語(yǔ)法的基本原理
  • JSP開發(fā)入門
  • JSP入門之HelloWorld程序?qū)嵗?/li>

標(biāo)簽:吉林 白銀 烏蘭察布 銅川 自貢 山南 開封 臨汾

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《JSP自定義標(biāo)簽入門學(xué)習(xí)》,本文關(guān)鍵詞  JSP,自定義,標(biāo)簽,入門,學(xué)習(xí),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《JSP自定義標(biāo)簽入門學(xué)習(xí)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于JSP自定義標(biāo)簽入門學(xué)習(xí)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    99久久久久免费精品国产| 精品久久国产字幕高潮| 国产成人免费视频| 这里只有精品电影| 午夜欧美一区二区三区在线播放| 日韩综合小视频| 欧美一区二视频| 久久精品999| 国产亚洲制服色| fc2成人免费人成在线观看播放 | 蜜桃视频在线观看一区| 555夜色666亚洲国产免| 九一九一国产精品| 国产精品国产自产拍在线| 欧美日本一道本在线视频| 国产美女精品人人做人人爽| 国产精品美女久久久久aⅴ国产馆| 色88888久久久久久影院按摩| 奇米影视7777精品一区二区| 亚洲欧美综合在线精品| 欧美一区日本一区韩国一区| 99麻豆久久久国产精品免费优播| 性欧美疯狂xxxxbbbb| 久久午夜电影网| 在线免费观看日本一区| 国产一区二区精品久久| 亚洲一本大道在线| 国产精品色在线| 精品国产免费一区二区三区香蕉| 99re8在线精品视频免费播放| 久久精品国产一区二区三| 亚洲靠逼com| 国产精品国产三级国产三级人妇| 日韩欧美一级在线播放| 欧美撒尿777hd撒尿| 成人av午夜电影| 国内精品久久久久影院一蜜桃| 亚洲国产精品久久人人爱| 一色桃子久久精品亚洲| 久久亚洲免费视频| 日韩一卡二卡三卡| 欧美一区在线视频| 欧美午夜精品一区| 日本精品免费观看高清观看| 成人高清伦理免费影院在线观看| 日韩精品一区第一页| 亚洲www啪成人一区二区麻豆| 亚洲欧美在线另类| 国产农村妇女毛片精品久久麻豆 | 国产老女人精品毛片久久| 奇米色777欧美一区二区| 五月天丁香久久| 首页国产欧美久久| 日韩精品午夜视频| 日本成人超碰在线观看| 日韩电影免费在线看| 天天爽夜夜爽夜夜爽精品视频| 亚洲色图视频网| 一区二区三区在线视频免费| 尤物在线观看一区| 亚洲精品久久久蜜桃| 亚洲一区视频在线| 日韩成人dvd| 激情av综合网| 国产福利一区二区三区| 99视频超级精品| 欧美三级乱人伦电影| 91精品国产欧美一区二区成人| 欧美一卡二卡在线| 国产三区在线成人av| 亚洲欧洲无码一区二区三区| 亚洲精品欧美综合四区| 日韩av电影免费观看高清完整版| 日本欧美在线看| 丁香激情综合五月| 欧美亚洲动漫精品| 日韩精品一区二区三区视频 | 亚洲女女做受ⅹxx高潮| 亚洲成av人综合在线观看| 喷白浆一区二区| 国产成人精品www牛牛影视| 91视频免费播放| 日韩精品一区二区在线| 亚洲精品视频一区| 美女任你摸久久| 成人午夜在线视频| 欧美日本一区二区在线观看| 久久久精品人体av艺术| 夜夜揉揉日日人人青青一国产精品| 日韩精品五月天| 不卡在线视频中文字幕| 欧美福利一区二区| 国产精品国产三级国产有无不卡 | 久久久天堂av| 午夜天堂影视香蕉久久| 国产福利电影一区二区三区| 欧美日韩高清一区二区不卡| 国产日韩亚洲欧美综合| 亚洲电影激情视频网站| 懂色av一区二区三区免费观看| 欧美人妇做爰xxxⅹ性高电影| 国产日韩欧美不卡在线| 亚洲va韩国va欧美va精品| caoporen国产精品视频| 亚洲精品一区二区三区精华液 | 一区二区三区91| 国产精品亚洲综合一区在线观看| 欧美日韩国产综合一区二区三区| 国产精品二三区| 国产精品亚洲一区二区三区妖精 | 丝袜国产日韩另类美女| 91网页版在线| 国产精品欧美一区二区三区| 国产一区二区在线视频| 日韩色在线观看| 视频在线观看91| 欧美婷婷六月丁香综合色| 中文字幕视频一区| 99久久综合国产精品| 国产三级欧美三级日产三级99| 亚洲bt欧美bt精品| 一本在线高清不卡dvd| 国产精品久久久久9999吃药| 国产一区二区三区四| 日韩一级高清毛片| 美国av一区二区| 欧美一级艳片视频免费观看| 亚洲成人久久影院| 欧美日韩卡一卡二| 婷婷综合另类小说色区| 欧美一区二区三区系列电影| 天天免费综合色| 69堂亚洲精品首页| 日韩高清不卡在线| 91麻豆精品91久久久久久清纯| 亚洲午夜久久久久久久久电影网| 欧洲色大大久久| 亚洲国产cao| 日韩精品一区二区三区三区免费 | 亚洲免费在线视频| 在线免费观看不卡av| 亚洲一二三四久久| 日韩视频一区二区三区| 免费一区二区视频| 精品国产一二三| 99久久免费视频.com| 亚洲最大成人综合| 3751色影院一区二区三区| 九九九精品视频| 亚洲欧美在线观看| 欧美日韩一区中文字幕| 日韩成人一级大片| 国产欧美日韩精品一区| 92精品国产成人观看免费| 亚洲午夜在线电影| 亚洲精品一区二区三区影院 | 麻豆极品一区二区三区| 国产亚洲美州欧州综合国| 99久久夜色精品国产网站| 亚洲与欧洲av电影| 欧美大黄免费观看| 一本色道久久加勒比精品 | 亚洲午夜久久久久久久久电影网| 日韩亚洲欧美成人一区| 成人精品视频一区| 亚洲综合在线观看视频| 欧美一级日韩一级| 日本在线不卡视频一二三区| 欧美日韩三级一区二区| 国产在线视视频有精品| 亚洲三级小视频| 日韩亚洲欧美中文三级| 99麻豆久久久国产精品免费| 免费在线成人网| 国产欧美日韩在线| 欧美日韩精品一区二区| 成人丝袜18视频在线观看| 日韩成人伦理电影在线观看| 国产欧美日韩亚州综合| 91精品免费在线| 成人免费视频播放| 人妖欧美一区二区| 亚洲国产精品视频| 一区二区中文字幕在线| 国产三级精品视频| 久久久久9999亚洲精品| 91精品在线观看入口| 91激情在线视频| 99久久精品国产网站| 国产精品自拍在线| 日韩高清一级片| 亚洲成a人v欧美综合天堂下载| 国产亚洲视频系列| 欧美精品一区二区久久久| 欧美一区二区三区白人| 99精品久久99久久久久| 粉嫩在线一区二区三区视频| 丝袜a∨在线一区二区三区不卡| 夜夜精品视频一区二区| 亚洲欧美另类图片小说|