最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JSP自定義標簽案例分析

 更新時間:2016年03月15日 16:51:37   作者:鄭宏鑫erke  
這篇文章主要介紹了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上下文環(huán)境對象
    PageContext pageContext = this.pageContext;
    // 獲取到request對象
    HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
    // 判斷
    String header = request.getHeader("referer");
    if(header != null && header.startsWith(getSite())){
      // 執(zhí)行后續(xù)的頁面
      return Tag.EVAL_PAGE;
    }else{
      // 頁面的重定向
      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. 編寫標簽庫描述文件 --> 
 <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;
  }
  // 遇到標簽自動執(zhí)行
  public void doTag() throws JspException, IOException {
    // 獲取標簽體對象
    JspFragment body = this.getJspBody();
    // 執(zhí)行標簽體
    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;
  }
  // 遇到標簽自動執(zhí)行
  public void doTag() throws JspException, IOException {
    // 獲取父元素
    ChooseTag choose = (ChooseTag)this.getParent();
    // 獲取父元素的標記變量值
    boolean parent = choose.isTag();
    // 判斷
    if( parent && this.isTest() ){
      // 執(zhí)行標簽體
      JspFragment body = this.getJspBody();
      body.invoke(null);
    }
    super.doTag();
  }
}

3. Otherwise.java

public class OtherwiseTag extends SimpleTagSupport {
  
  // 遇到標簽自動執(zhí)行
  public void doTag() throws JspException, IOException {
    // 獲取父元素
    ChooseTag choose = (ChooseTag)this.getParent();
    // 獲取父元素的標記變量值
    boolean parent = choose.isTag();
    // 判斷
    if(parent){
      // 執(zhí)行標簽體
      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進行自定義標簽的開發(fā)和打包。

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進行自定義標簽的開發(fā)和打包。

相關文章

  • 一個JSP頁面導致的tomcat內存溢出的解決方法

    一個JSP頁面導致的tomcat內存溢出的解決方法

    每請求一次jsp頁面就會生成一個對象,這篇文章主要介紹了一個JSP頁面導致的tomcat內存溢出的解決方法,需要的朋友可以參考下
    2014-10-10
  • Spring AOP代理詳細介紹

    Spring AOP代理詳細介紹

    這篇文章主要介紹了Spring AOP代理詳細介紹的相關資料,需要的朋友可以參考下
    2017-02-02
  • JSP實現從不同服務器上下載文件的方法

    JSP實現從不同服務器上下載文件的方法

    這篇文章主要介紹了JSP實現從不同服務器上下載文件的方法,涉及jsp文件傳輸的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • JSP 注釋的詳解及簡單實例

    JSP 注釋的詳解及簡單實例

    這篇文章主要介紹了JSP 注釋的詳解及簡單實例的相關資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • Java之JSP教程九大內置對象詳解(上篇)

    Java之JSP教程九大內置對象詳解(上篇)

    這篇文章主要介紹了Java之JSP教程九大內置對象詳解(上篇),本文章內容詳細,通過案例可以更好的理解JSP內置對象的相關知識,本模塊分為了三部分,本次為上篇,講解了三個內容,需要的朋友可以參考下
    2023-01-01
  • java tapestry5 布局 參數的處理

    java tapestry5 布局 參數的處理

    在使用時,希望把里邊的title,keywords,description動態(tài)地更換。
    2009-07-07
  • JSP實現百萬富翁猜數字游戲

    JSP實現百萬富翁猜數字游戲

    這篇文章主要為大家詳細介紹了JSP實現百萬富翁猜數字游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • jsp JFreeChart使用心得與例子

    jsp JFreeChart使用心得與例子

    一、JFreeChart的介紹與獲取 JFreeChart開發(fā)包是一個開源的Java圖形開發(fā)包,它從柱形圖,餅形圖,到雷達圖,蠟燭圖等等無所不包,可以在c/s,b/s,甚至是實時環(huán)境都能一顯身手。
    2008-11-11
  • 基于jsp的AJAX多文件上傳的實例

    基于jsp的AJAX多文件上傳的實例

    多個文件上傳是很多時候都會遇到的問題,本文主要介紹了基于jsp的AJAX多文件上傳的實現內容,這里整理了詳細的代碼,有需要的朋友可以參考一下。
    2016-10-10
  • jsp自定義標簽技術(實現原理與代碼以及平臺搭建步驟)

    jsp自定義標簽技術(實現原理與代碼以及平臺搭建步驟)

    由于jsp代碼規(guī)范要求不能出現一句java代碼。所有就有了jsp 的自定義標簽技術
    2013-06-06

最新評論

兰州市| 如东县| 炉霍县| 荣昌县| 泊头市| 隆回县| 漯河市| 乐平市| 新泰市| 沂源县| 曲沃县| 长海县| 安西县| 娱乐| 华蓥市| 比如县| 铜川市| 沙湾县| 新宁县| 屏东县| 阳春市| 闻喜县| 铜川市| 乐昌市| 静海县| 神木县| 宁南县| 广安市| 闸北区| 中宁县| 额济纳旗| 栾城县| 滨州市| 澄迈县| 台南市| 凤阳县| 双流县| 安达市| 万载县| 永善县| 育儿|