麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 編程 > JSP > 正文

JSP自定義標(biāo)簽案例分析

2024-09-05 00:22:29
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
這篇文章主要介紹了JSP自定義標(biāo)簽案例,為大家提供了兩個(gè)針對(duì)JSP自定義標(biāo)簽的案例分析,感興趣的小伙伴們可以參考一下
 

本文為大家介紹了JSP自定義標(biāo)簽的案例,供大家參考,具體內(nèi)容如下

案例一:實(shí)現(xiàn)一個(gè)基本防盜鏈標(biāo)簽

1. 標(biāo)簽處理類

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上下文環(huán)境對(duì)象    PageContext pageContext = this.pageContext;    // 獲取到request對(duì)象    HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();    // 判斷    String header = request.getHeader("referer");    if(header != null && header.startsWith(getSite())){      // 執(zhí)行后續(xù)的頁(yè)面      return Tag.EVAL_PAGE;    }else{      // 頁(yè)面的重定向      HttpServletResponse response = (HttpServletResponse)pageContext.getResponse();      try {        response.sendRedirect(getBack());      } catch (IOException e) {        e.printStackTrace();      }      // 不執(zhí)行      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. 編寫標(biāo)簽庫(kù)描述文件 -->  <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自定義標(biāo)簽

---| SimpleTag 接口

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

-----| SimpleTagSupport 類

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

案例二:實(shí)現(xiàn)自己的if….else標(biāo)簽

目標(biāo):

 <%@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,必須定義一個(gè)標(biāo)記字段屬性

public class ChooseTag extends SimpleTagSupport {  private boolean tag = true;  public boolean isTag() {    return tag;  }  public void setTag(boolean tag) {    this.tag = tag;  }  // 遇到標(biāo)簽自動(dòng)執(zhí)行  public void doTag() throws JspException, IOException {    // 獲取標(biāo)簽體對(duì)象    JspFragment body = this.getJspBody();    // 執(zhí)行標(biāo)簽體    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;  }  // 遇到標(biāo)簽自動(dòng)執(zhí)行  public void doTag() throws JspException, IOException {    // 獲取父元素    ChooseTag choose = (ChooseTag)this.getParent();    // 獲取父元素的標(biāo)記變量值    boolean parent = choose.isTag();    // 判斷    if( parent && this.isTest() ){      // 執(zhí)行標(biāo)簽體      JspFragment body = this.getJspBody();      body.invoke(null);    }    super.doTag();  }}

3. Otherwise.java

public class OtherwiseTag extends SimpleTagSupport {    // 遇到標(biāo)簽自動(dòng)執(zhí)行  public void doTag() throws JspException, IOException {    // 獲取父元素    ChooseTag choose = (ChooseTag)this.getParent();    // 獲取父元素的標(biāo)記變量值    boolean parent = choose.isTag();    // 判斷    if(parent){      // 執(zhí)行標(biāo)簽體      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. 編寫標(biāo)簽庫(kù)描述文件 -->  <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> 

打包自定義標(biāo)簽庫(kù)

1.   建立一個(gè)taglibs文件夾

2.   將所有的標(biāo)簽處理類對(duì)應(yīng)的class文件連同包拷貝到1中的目錄中

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

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

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

6.   使用jar命令進(jìn)行打包:D:/mytaglibs>jar cvf jnb.jar *

總結(jié)

主要掌握如何使用JSP2.0進(jìn)行自定義標(biāo)簽的開發(fā)和打包。

1.   建立一個(gè)taglibs文件夾

2.   將所有的標(biāo)簽處理類對(duì)應(yīng)的class文件連同包拷貝到1中的目錄中

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

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

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

6.   使用jar命令進(jìn)行打包:D:/mytaglibs>jar cvf jnb.jar *

總結(jié)

主要掌握如何使用JSP2.0進(jìn)行自定義標(biāo)簽的開發(fā)和打包。



注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JSP教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 高清国产午夜精品久久久久久 | 羞羞的视频免费在线观看 | 性少妇chinesevideo | 欧美亚洲另类在线 | 一区二区三区日本在线观看 | 久久久国产一区二区三区 | 91精品国产乱码久久久久久久久 | 亚洲天堂成人在线观看 | 中文字幕一区二区三区久久 | 97超级碰碰人国产在线观看 | 久久99亚洲精品久久99果 | 久久亚洲精品视频 | 国产深夜福利视频在线播放 | 鲁丝一区二区三区不属 | 精品一区二区三区在线观看视频 | 黄色网址免费在线 | 中文字幕涩涩久久乱小说 | 国产精品免费一区二区三区四区 | 亚洲导航深夜福利涩涩屋 | 91成人在线网站 | 欧美日韩a∨毛片一区 | 欧美福利视频一区二区三区 | 成人黄色小视频在线观看 | 亚洲一区二区中文字幕在线观看 | 一级毛片免费高清视频 | 极品大长腿啪啪高潮露脸 | 成人免费午夜视频 | 成人在线免费小视频 | 午夜视频国产 | 欧美成人毛片 | 一级做a爱片久久 | 91网站免费观看 | 欧美性受xxxxxx黑人xyx性爽 | 亚洲码无人客一区二区三区 | 青青国产在线视频 | 免费国产视频大全入口 | 欧美黄色性生活视频 | 三人弄娇妻高潮3p视频 | av亚洲在线观看 | 国产精品观看在线亚洲人成网 | 国产中出视频 |