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

首頁 > 編程 > JSP > 正文

JSP自定義標簽案例分析

2020-07-27 21:28:17
字體:
來源:轉載
供稿:網友

本文為大家介紹了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進行自定義標簽的開發和打包。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区二区三区视频免费| 精品在线观看国产| 欧美日韩另类在线| 97视频在线观看免费高清完整版在线观看| 91精品国产亚洲| 亚洲欧洲在线观看| 成人综合国产精品| 久久视频免费观看| 91精品国产九九九久久久亚洲| 亚洲国产精品久久| 亚洲欧美国产日韩中文字幕| 日韩精品免费看| 国产精品96久久久久久| 国产免费亚洲高清| 久久激情视频久久| 亚洲天堂av网| 欧美中文在线观看国产| 国产一区二区美女视频| 正在播放欧美一区| 国产精品吴梦梦| 欧美成人精品在线| 最近2019中文字幕大全第二页| 亚洲国产精品久久久久秋霞蜜臀| 久久久久久午夜| 欧美电影免费在线观看| 91sao在线观看国产| 亚洲精品久久久久久久久| 久久精品电影网站| 尤物九九久久国产精品的特点| 亚洲成人av资源网| 亚洲精品日产aⅴ| 精品国产乱码久久久久久天美| 欧美在线日韩在线| 国产一区视频在线| 亚洲日本成人女熟在线观看| 91中文在线观看| 国产盗摄xxxx视频xxx69| 国内精品国产三级国产在线专| 最近2019好看的中文字幕免费| 69影院欧美专区视频| 久久视频精品在线| 欧美精品免费在线观看| 伊人精品在线观看| 日韩精品免费观看| 亚洲午夜色婷婷在线| 亚洲va码欧洲m码| 欧美精品www在线观看| 国产视频久久久| 成人欧美一区二区三区在线湿哒哒| 欧美日韩一区二区三区在线免费观看| 午夜免费日韩视频| 国产精品偷伦免费视频观看的| 97超级碰碰碰久久久| 国产精品高潮呻吟视频| 国产69精品久久久久久| 性欧美xxxx| 久热国产精品视频| 韩剧1988免费观看全集| 国产成人av在线播放| 青草青草久热精品视频在线网站| 欧美日韩另类字幕中文| 国产ts人妖一区二区三区| 午夜精品久久久久久久男人的天堂| 久久综合伊人77777| 色偷偷91综合久久噜噜| 国产日韩精品在线| 亚洲男人天堂久| 日本91av在线播放| 成人国产亚洲精品a区天堂华泰| 97涩涩爰在线观看亚洲| 亚洲欧美综合精品久久成人| 国产日韩欧美黄色| 久久影院资源站| 国产成人精品久久久| 91九色蝌蚪国产| 日韩在线高清视频| 日韩高清电影免费观看完整版| 成人福利在线视频| 欧美激情在线狂野欧美精品| 日韩中文字幕久久| 国产精品xxx视频| 国产精品中文字幕在线观看| 97在线视频国产| 国产精品电影网站| 91青草视频久久| 欧美韩国理论所午夜片917电影| 精品亚洲一区二区三区| 国产精品高潮呻吟视频| 色多多国产成人永久免费网站| 国产亚洲人成网站在线观看| 国产一区二区三区欧美| 久久精品中文字幕免费mv| 亚洲三级 欧美三级| 亚洲老板91色精品久久| 日韩h在线观看| 欧美激情国产高清| 亚洲在线免费视频| 最近日韩中文字幕中文| 午夜免费在线观看精品视频| 黄网站色欧美视频| 欧美午夜精品久久久久久久| 欧美综合第一页| 亚洲国产精品网站| 亚洲精品美女在线观看播放| 精品偷拍一区二区三区在线看| 影音先锋欧美在线资源| 色婷婷久久av| 精品国产网站地址| 亚洲精品之草原avav久久| 国产亚洲精品久久久久久牛牛| 亚洲在线免费看| 欧美高清视频一区二区| 91久热免费在线视频| 亚洲在线免费看| 欧美另类极品videosbest最新版本| 92版电视剧仙鹤神针在线观看| 久久久久久国产三级电影| 久久91超碰青草是什么| 欧美黄色小视频| 国产在线a不卡| 国产成人亚洲综合91精品| 亚洲一区二区三区视频播放| 国产精品一二三视频| 亚洲国产一区二区三区在线观看| 亚洲精品suv精品一区二区| 日韩成人在线视频网站| 亚洲网站在线看| 国产91色在线免费| 97婷婷涩涩精品一区| 国外成人性视频| 久久成人免费视频| 91在线观看免费高清完整版在线观看| 国内精品久久久久影院优| 26uuu亚洲伊人春色| 色黄久久久久久| 精品亚洲精品福利线在观看| 亚洲欧美一区二区三区久久| 成人羞羞国产免费| 91成人在线播放| 午夜精品99久久免费| 亚洲最大成人网色| 18性欧美xxxⅹ性满足| 亚洲精品自拍视频| 亚洲第一在线视频| 51ⅴ精品国产91久久久久久| 欧美一级bbbbb性bbbb喷潮片| 国产极品jizzhd欧美| 日韩在线精品视频| 91精品国产色综合久久不卡98口| 欧美区二区三区| 久久久精品影院| 国产一区香蕉久久| 欧美性xxxx18| 国内自拍欧美激情| 国产精品久久av| 日韩有码视频在线| 国产欧美精品一区二区三区介绍| 欧美国产日韩一区二区| 亚洲成人a**站| 午夜美女久久久久爽久久| 日韩视频免费中文字幕| 亚洲成人久久一区| 亚洲激情 国产| 亚洲天堂开心观看|