亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

JSP自定義標簽案例分析

2024-09-05 00:22:29
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了JSP自定義標簽案例,為大家提供了兩個針對JSP自定義標簽的案例分析,感興趣的小伙伴們可以參考一下
 

本文為大家介紹了JSP自定義標簽的案例,供大家參考,具體內容如下

案例一:實現一個基本防盜鏈標簽

1. 標簽處理類

public class MyReferer extends BodyTagSupport {  private String site;  private String back;  public String getSite() {    return site;  }  public void setSite(String site) {    this.site = site;  }  public String getBack() {    return back;  }  public void setBack(String back) {    this.back = back;  }  public int doEndTag() throws JspException {    // 獲取JSP上下文環境對象    PageContext pageContext = this.pageContext;    // 獲取到request對象    HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();    // 判斷    String header = request.getHeader("referer");    if(header != null && header.startsWith(getSite())){      // 執行后續的頁面      return Tag.EVAL_PAGE;    }else{      // 頁面的重定向      HttpServletResponse response = (HttpServletResponse)pageContext.getResponse();      try {        response.sendRedirect(getBack());      } catch (IOException e) {        e.printStackTrace();      }      // 不執行      return Tag.SKIP_PAGE;    }  }}

2. 描述文件

<?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"> <!-- 2. 編寫標簽庫描述文件 -->  <tlib-version>1.0</tlib-version> <short-name>jnb</short-name>  <tag>   <name>referer</name>  <tag-class>cn.itcast.custom.MyReferer</tag-class>  <body-content>empty</body-content>   <attribute>    <name>site</name>    <required>true</required>    <rtexprvalue>true</rtexprvalue>  </attribute>   <attribute>    <name>back</name>    <required>true</required>    <rtexprvalue>true</rtexprvalue>  </attribute> </tag></taglib> 

3. 引入和使用

<%@taglib uri="/WEB-INF/referer.tld" prefix="my"%>  <my:referer site=http://localhost:8080/day11/list.jsp back="/day11/list.jsp"/>

JSP2.0自定義標簽

---| SimpleTag 接口

定義了標簽處理類的生命周期方法。doTag()

-----| SimpleTagSupport 類

全部實現了SimpleTag接口的方法,因此后面我們只需要繼承并重寫該類即可。

案例二:實現自己的if….else標簽

目標:

 <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  <c:choose>   <c:when test="<%= 12>1 %>">      大于   </c:when>   <c:otherwise>      小于   </c:otherwise>  </c:choose>

分析:

1. ChooseTag.java,必須定義一個標記字段屬性

public class ChooseTag extends SimpleTagSupport {  private boolean tag = true;  public boolean isTag() {    return tag;  }  public void setTag(boolean tag) {    this.tag = tag;  }  // 遇到標簽自動執行  public void doTag() throws JspException, IOException {    // 獲取標簽體對象    JspFragment body = this.getJspBody();    // 執行標簽體    body.invoke(null);    super.doTag();  }}

2. WhenTag.java

public class WhenTag extends SimpleTagSupport {  private boolean test;  public boolean isTest() {    return test;  }  public void setTest(boolean test) {    this.test = test;  }  // 遇到標簽自動執行  public void doTag() throws JspException, IOException {    // 獲取父元素    ChooseTag choose = (ChooseTag)this.getParent();    // 獲取父元素的標記變量值    boolean parent = choose.isTag();    // 判斷    if( parent && this.isTest() ){      // 執行標簽體      JspFragment body = this.getJspBody();      body.invoke(null);    }    super.doTag();  }}

3. Otherwise.java

public class OtherwiseTag extends SimpleTagSupport {    // 遇到標簽自動執行  public void doTag() throws JspException, IOException {    // 獲取父元素    ChooseTag choose = (ChooseTag)this.getParent();    // 獲取父元素的標記變量值    boolean parent = choose.isTag();    // 判斷    if(parent){      // 執行標簽體      JspFragment body = this.getJspBody();      body.invoke(null);    }    super.doTag();  }}

4. 描述文件

<?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"> <!-- 2. 編寫標簽庫描述文件 -->  <tlib-version>1.0</tlib-version> <short-name>jnb</short-name>  <tag>   <name>choose</name>  <tag-class>cn.itcast.tags.ChooseTag</tag-class>  <body-content>scriptless</body-content>  ? JSP2.0方式 </tag> <tag>   <name>when</name>  <tag-class>cn.itcast.tags.WhenTag</tag-class>  <body-content>scriptless</body-content>  <attribute>    <name>test</name>    <required>true</required>    <rtexprvalue>true</rtexprvalue>  </attribute> </tag>    <tag>   <name>otherwise</name>  <tag-class>cn.itcast.tags.OtherwiseTag</tag-class>  <body-content>scriptless</body-content> </tag></taglib>

5. 引入和使用

<%@taglib uri="/WEB-INF/ifelse.tld" prefix="jnb"%>   <jnb:choose>    <jnb:when test="<%= 1>2 %>">        小于    </jnb:when>    <jnb:otherwise>         大于    </jnb:otherwise>   </jnb:choose> 

打包自定義標簽庫

1.   建立一個taglibs文件夾

2.   將所有的標簽處理類對應的class文件連同包拷貝到1中的目錄中

3.   在1中的文件夾中建立一個META-INF文件夾

4.   將tld文件拷貝到META-INF目錄

5.   編輯tld文件引入uri元素:<uri>http://www.jnb.com</uri>     à提供引入的url路徑

6.   使用jar命令進行打包:D:/mytaglibs>jar cvf jnb.jar *

總結

主要掌握如何使用JSP2.0進行自定義標簽的開發和打包。

1.   建立一個taglibs文件夾

2.   將所有的標簽處理類對應的class文件連同包拷貝到1中的目錄中

3.   在1中的文件夾中建立一個META-INF文件夾

4.   將tld文件拷貝到META-INF目錄

5.   編輯tld文件引入uri元素:<uri>http://www.jnb.com</uri>     à提供引入的url路徑

6.   使用jar命令進行打包:D:/mytaglibs>jar cvf jnb.jar *

總結

主要掌握如何使用JSP2.0進行自定義標簽的開發和打包。



注:相關教程知識閱讀請移步到JSP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品一久久香蕉国产线看观看| 97在线日本国产| 久久精品国产69国产精品亚洲| 欧美大片大片在线播放| 国产精品国模在线| 午夜精品www| 欧美亚州一区二区三区| 国产+人+亚洲| 日韩av在线一区| 日韩电影大全免费观看2023年上| 国产精品久久久久久久久久久久久久| 成人精品网站在线观看| 欧美一区二区.| 国产国产精品人在线视| 国内精品中文字幕| 欧美精品做受xxx性少妇| 国自产精品手机在线观看视频| 日本最新高清不卡中文字幕| 久久人人97超碰精品888| 久久精品国产一区二区三区| 欧美亚洲日本黄色| 久久精品国产久精国产一老狼| 午夜精品一区二区三区在线播放| 久久精品国产96久久久香蕉| 成人黄色av播放免费| 欧美精品做受xxx性少妇| 亚洲天天在线日亚洲洲精| 久久人人爽人人爽人人片av高请| 欧美黑人xxxx| 国色天香2019中文字幕在线观看| 欧美一级淫片videoshd| 日韩电影大全免费观看2023年上| 亚洲视频欧美视频| 欧美日韩国产综合视频在线观看中文| 97国产精品免费视频| www.国产一区| 精品偷拍各种wc美女嘘嘘| 亚洲天堂av网| 亚洲第一色中文字幕| 亚洲欧美色婷婷| 亚洲毛片在线免费观看| 热99精品里视频精品| 91国产高清在线| 国产精品第2页| 亚洲人成毛片在线播放| 亚洲图片欧美午夜| 日韩视频免费在线观看| 国产女人精品视频| 九九九热精品免费视频观看网站| 国产精品99久久久久久久久| 国产福利精品av综合导导航| 国产精品电影在线观看| 色99之美女主播在线视频| 国产精品国产自产拍高清av水多| 亚洲网站在线播放| 亚洲天堂免费观看| 一区二区三区亚洲| 中文字幕在线成人| 国产成人高清激情视频在线观看| 午夜剧场成人观在线视频免费观看| 国产日韩精品在线观看| 91免费观看网站| 一区二区欧美在线| 亚洲国产日韩欧美在线图片| 国产亚洲一级高清| 欧美激情精品久久久久久黑人| 欧美激情影音先锋| 欧美成人激情视频免费观看| 555www成人网| 日韩视频中文字幕| 中文字幕自拍vr一区二区三区| 亚洲大胆人体av| 色诱女教师一区二区三区| 国产精品久久久久久久久久免费| 欧美激情一区二区三区成人| 欧美黑人巨大xxx极品| 久久久久久一区二区三区| 精品国产乱码久久久久久婷婷| 88国产精品欧美一区二区三区| 另类专区欧美制服同性| 久久久www成人免费精品| 91精品在线观| 国产一区二区香蕉| 国产欧美va欧美va香蕉在| 日韩电视剧在线观看免费网站| 欧美成人激情在线| 精品少妇一区二区30p| 欧美一级电影免费在线观看| 国产精品免费久久久久久| 日韩最新中文字幕电影免费看| 国产精品视频男人的天堂| 98午夜经典影视| 在线观看日韩视频| 欧美日韩成人在线观看| 91精品久久久久久久久不口人| 欧美成人精品在线播放| 国产精品成人一区| 国产成人精品一区| 热草久综合在线| 欧美性jizz18性欧美| 国产成人啪精品视频免费网| 九九热这里只有在线精品视| 欧美视频免费在线| 久久视频免费观看| 国产99视频在线观看| 亚洲欧美在线播放| 欧美日韩在线观看视频| 色妞在线综合亚洲欧美| 疯狂欧美牲乱大交777| 5566成人精品视频免费| 国产日韩精品入口| 91精品国产亚洲| 久久久久久综合网天天| 91精品视频在线看| 欧美另类极品videosbest最新版本| 亚洲视频网站在线观看| 另类少妇人与禽zozz0性伦| 久久亚洲一区二区三区四区五区高| 亚洲精品动漫久久久久| 欧洲精品久久久| 成人免费福利视频| 精品高清一区二区三区| 国产精品美女999| 国产97在线|日韩| 久久国产精品影视| 欧美精品免费在线观看| 成人在线一区二区| 亚洲国产天堂久久综合网| 国产欧美在线观看| 亚洲香蕉在线观看| 91美女片黄在线观看游戏| 中文字幕亚洲字幕| 国产精品青青在线观看爽香蕉| 日本乱人伦a精品| 日本国产一区二区三区| 亚洲色图欧美制服丝袜另类第一页| 国产精品视频公开费视频| 国产69精品久久久久9| 日韩激情在线视频| 中文字幕免费精品一区高清| 精品国产一区二区三区在线观看| 亚洲精品美女在线观看播放| 亚洲欧美日韩国产中文专区| 91国产高清在线| 亚洲老头同性xxxxx| 欧洲成人午夜免费大片| 中文字幕av一区二区| 中国china体内裑精亚洲片| 操日韩av在线电影| 日韩美女av在线免费观看| 日日骚久久av| 亚洲aa在线观看| 在线播放日韩精品| 91色视频在线导航| 久久久精品影院| 97视频人免费观看| 成人精品福利视频| 最近的2019中文字幕免费一页| 日韩视频免费看| 麻豆国产精品va在线观看不卡| 4444欧美成人kkkk| 久久久久久久久爱| 欧美电影免费在线观看| 亚洲欧洲在线播放|