婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

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

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

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

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

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

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

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

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

編寫一個普通的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項目的WEB-INF目錄下建立mytaglib.tld文件,這個tld叫標(biāo)簽庫的聲明文件。(參考核心標(biāo)簽庫的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)簽庫的版本 -->
tlib-version>1.0/tlib-version>
!-- 標(biāo)簽庫前綴 -->
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頁面的頭部導(dǎo)入自定義標(biāo)簽庫:url為你在tld中寫的url,前綴也是你在tld文件中定義的

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

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

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

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

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

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

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

你可以像標(biāo)準(zhǔn)標(biāo)簽庫一樣在標(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)簽提會顯示 --%>
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代碼,但不會執(zhí)

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

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

格式如下:

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

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

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

在標(biāo)簽庫文件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配置屬性時你可以配置下面的屬性:

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

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

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

//ChooseTag類:
public class ChooseTag extends SimpleTagSupport{
//此去時變量不是標(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)簽體,以及作為其他兩個標(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,由他的上一個when設(shè)置
 if(getParent() instanceof ChooseTag)
 {
  //獲取父標(biāo)簽的test,由他的上一個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)簽稍微有些不同,需要嵌套

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

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

404頁面,505頁面,錯誤頁面配置方法:

可以在web.xml中給你的網(wǎng)站配置全局的404頁面,505頁面,錯誤頁面;配置方法如下:記得建立相應(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錯誤頁面 -->
 error-page>
 error-code>500/error-code>
 location>/common/500.jsp/location>
 /error-page>
 !-- 配置404錯誤頁面 -->
 error-page>
 error-code>404/error-code>
 location>/common/404.html/location>
 /error-page>
/web-app>

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

您可能感興趣的文章:
  • JSP經(jīng)典學(xué)習(xí)筆記(包含各種入門常用語法)
  • 通用JSP頁面 jsp入門級文章
  • jsp Hibernate入門教程
  • JSP迅速入門
  • 幾則JSP入門知識總結(jié)
  • JSP開發(fā)入門(一)--安裝好你的機器來使用JSP
  • JSP開發(fā)入門(五)--JSP其他相關(guān)資源
  • JSP開發(fā)入門(四)--JSP的內(nèi)部對象
  • JSP開發(fā)入門(三)--JSP與JavaBean
  • JSP開發(fā)入門(二)----JSP語法的基本原理
  • 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)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《JSP自定義標(biāo)簽入門學(xué)習(xí)》相關(guān)的同類信息!
  • 本頁收集關(guān)于JSP自定義標(biāo)簽入門學(xué)習(xí)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    成人综合婷婷国产精品久久| 久久先锋资源网| 亚洲精品一区二区三区影院| 韩国女主播成人在线观看| 久久久久久久久99精品| 蜜臀精品久久久久久蜜臀 | 在线看不卡av| zzijzzij亚洲日本少妇熟睡| 国产精品国产三级国产aⅴ入口| 91女神在线视频| 日本sm残虐另类| 久久久激情视频| 欧美精品国产精品| 高清视频一区二区| 秋霞av亚洲一区二区三| 亚洲国产成人自拍| 波多野结衣中文字幕一区| 亚洲成人三级小说| 中文字幕乱码日本亚洲一区二区 | 久久精品国产亚洲aⅴ| 中文字幕av免费专区久久| 国产电影精品久久禁18| 亚洲国产日日夜夜| 欧美国产精品v| 精品欧美一区二区久久| 在线看国产一区二区| 久久久久久久国产精品影院| 欧美日韩国产不卡| 99国产精品久久久久久久久久 | 欧美经典一区二区| 日韩精品一区二区三区四区视频| 在线观看日韩一区| 奇米色一区二区| 亚洲综合精品久久| 日韩美女视频一区二区在线观看| 色婷婷狠狠综合| 972aa.com艺术欧美| 国产精品资源站在线| 51久久夜色精品国产麻豆| 在线观看国产日韩| 成人av资源站| 国产高清久久久久| 国产在线麻豆精品观看| 免费人成精品欧美精品| 日韩国产一区二| 丝袜美腿亚洲一区| 亚洲国产欧美在线人成| 国产精品素人一区二区| 国产天堂亚洲国产碰碰| 久久人人爽爽爽人久久久| 欧美成人一区二区三区| 国产精品不卡一区二区三区| 日韩一区在线免费观看| 青青草97国产精品免费观看| 精品一区二区三区免费播放| 正在播放一区二区| 久久99九九99精品| 香蕉加勒比综合久久| 亚洲午夜电影网| 美女诱惑一区二区| 国产精品99久久不卡二区| 大胆欧美人体老妇| 97精品电影院| 欧美日韩中文另类| 制服视频三区第一页精品| 91精品国产综合久久国产大片 | 欧美一区二区三区免费大片| 欧美一区二区黄色| 精品国产一区二区三区不卡| 亚洲欧美自拍偷拍| 香蕉成人伊视频在线观看| 日韩精品一级中文字幕精品视频免费观看 | 国产91色综合久久免费分享| 国产成人av影院| 精品一区二区三区免费毛片爱| 日韩av在线免费观看不卡| 精品一区二区三区免费播放| 国产成人在线色| 色偷偷一区二区三区| 91精品国产乱| 欧美韩国日本综合| 亚洲超碰97人人做人人爱| 国产精品中文字幕日韩精品| 粉嫩av一区二区三区粉嫩| 91美女片黄在线观看91美女| 欧美精品成人一区二区三区四区| 日韩欧美色电影| 精品成人a区在线观看| 亚洲成国产人片在线观看| 国产一区二区三区国产| 欧美制服丝袜第一页| 亚洲欧洲精品天堂一级| 六月丁香综合在线视频| 一区二区三区日本| 国产成人高清在线| 欧美一区二区免费视频| 久久久久久久久99精品| 国产不卡视频在线观看| 欧美一级一区二区| 亚洲免费资源在线播放| 一本一道波多野结衣一区二区| 精品欧美久久久| 日韩av电影天堂| 日韩一二在线观看| 五月开心婷婷久久| 色综合久久久久综合体桃花网| 中文字幕一区二区三区在线不卡 | 国产999精品久久| 欧美精品丝袜中出| 日韩电影在线观看电影| 91蜜桃网址入口| 日韩一级免费观看| 亚洲乱码中文字幕| 国产麻豆视频一区| 欧美xxxx在线观看| 一区二区久久久久久| 国产精品一卡二| 欧美日本在线观看| 亚洲一区二区三区视频在线 | 亚洲视频资源在线| 国产精品99久久久久久似苏梦涵 | 成人av在线网| 久久久精品蜜桃| 国产精品资源网站| 欧美韩日一区二区三区四区| 国产乱妇无码大片在线观看| 日韩欧美一区二区视频| 亚洲男同性恋视频| 欧美影视一区在线| 亚洲精品国产a| 欧美中文字幕不卡| 天天综合网 天天综合色| 国产精品小仙女| 91精品国产一区二区人妖| 午夜精品福利在线| 欧美日韩激情一区二区| 午夜精品一区在线观看| 9191久久久久久久久久久| 日日夜夜免费精品| 这里是久久伊人| 久久福利资源站| 久久久美女毛片| 日韩综合在线视频| 欧美日韩视频不卡| 免费成人结看片| 精品少妇一区二区三区| 韩国女主播一区| 国产精品美女久久久久久| 国产精品亲子乱子伦xxxx裸| 国产亚洲综合色| 欧洲激情一区二区| 国产精品一区二区视频| 亚洲一区二区综合| 国产日韩三级在线| 欧美一卡二卡在线| 色久综合一二码| 成人久久18免费网站麻豆 | 欧美在线不卡视频| 豆国产96在线|亚洲| 久久99精品久久久久久久久久久久 | 日本不卡1234视频| 亚洲自拍偷拍九九九| 国产精品久久久久精k8 | 欧美日韩国产一级二级| 99在线精品视频| 国产成人小视频| 久久99精品国产麻豆不卡| 日韩黄色片在线观看| 亚洲成av人片| 亚洲一区二区欧美日韩| 亚洲人午夜精品天堂一二香蕉| 国产精品网站在线| 国产精品女人毛片| 欧美国产欧美亚州国产日韩mv天天看完整| 日韩三级视频在线看| 日韩欧美高清dvd碟片| 欧美一区二区国产| 精品理论电影在线| 日韩欧美另类在线| 久久先锋资源网| 国产精品美女久久久久久2018| 久久精品免视看| 国产精品网站导航| 中文字幕一区二区三区在线不卡 | 91麻豆国产福利在线观看| 成人av资源在线| 色吧成人激情小说| 欧美日韩国产三级| 91精品国产91久久久久久最新毛片 | 国产精品亚洲一区二区三区妖精| 国产主播一区二区| 成人在线综合网| www.在线成人| 欧美三级视频在线观看| 7777精品伊人久久久大香线蕉的 | 亚洲国产日韩精品| 日本中文在线一区| 国产成人精品免费在线| 91网站最新地址| 欧美日韩国产大片|