JSP自定義標簽---三分鍾,兩種方法


先貼出項目結構,然后分步進行講解

方法一

1:創建標簽類

package com.www.servlet; import javax.servlet.jsp.tagext.*; import javax.servlet.jsp.*; import java.io.*; /** * Created by coisini on 2018/10/11. * 1:繼承標簽處理類SimpleTagSupport * 2:重寫其doTag()方法 */
public class HelloTag extends SimpleTagSupport{ @Override public void doTag() throws JspException, IOException { JspWriter out = getJspContext().getOut(); out.println("Hello Custom Tag!"); } }

2:寫標簽配置文件  -myTag.tld

<taglib>
  <tlib-version>1.0</tlib-version>
  <jsp-version>2.0</jsp-version>
  <short-name>Example TLD</short-name>
  <tag>
    <name>Hello</name>
    <tag-class>com.www.servlet.HelloTag</tag-class>
    <body-content>empty</body-content>
  </tag>

</taglib>

3:引用標簽--jsp頁面通過 taglib指令指定標簽配置文件路徑,引入自定義標簽即可

 

<!--
路徑問題
  1):絕對路徑
    這里要注意,uri指定標簽配置文件路徑時路勁一定要寫對
   有的小伙伴直接從教程copy的代碼,上邊uri="WEB-INF/myTag.tld",報紅,找不到文件,為什么會這樣呢
   在這里他是想寫絕對路徑,那么寫絕對路徑,沒有根目錄,怎么找得到從WEB-INF,所以要先指定根目錄,/ 就代表了當前web項目,所以寫成uri="/WEB-INF/myTag.tld"
   你也可以在WEB-INFO下再建一個文件夾,將標簽配置文件放進去,都可以的,只要路徑正確即可

 2):用相對路徑
   根據我當前的項目結構,標簽配置文件路徑我也可以這樣寫  uri="../WEB-INF/myTag.tld"
-->
<%@ taglib prefix="ex" uri="/WEB-INF/myTag.tld"%>
<html>
<head>
  <title>A sample custom tag</title>
</head>
<body>
<ex:Hello/>
</body>

 

 

 

4:展示結果--over

 

5:如何引入多個自定義標簽

  引入多個自定義標簽

    一句話,多寫一個標簽類,配置文件多寫一個<tag>標簽,jsp頁面多引入一個自定義標簽,

    代碼很簡單,但是還是貼出來吧,萬一有人看不懂,還得自己倒騰半天

           ==myTag.tld==
<taglib>
  <tlib-version>1.0</tlib-version>
  <jsp-version>2.0</jsp-version>
  <short-name>Example TLD</short-name>
  <tag>
    <name>Hello</name>
    <tag-class>com.www.tag.HelloTag</tag-class>
    <body-content>empty</body-content>
  </tag>
  <tag>
    <name>World</name>
    <tag-class>com.www.tag.WorldTag</tag-class>
    <body-content>empty</body-content>
  </tag>
</taglib>

    ==index.jsp==
<%@ taglib prefix="ex" uri="../WEB-INF/myTag.tld"%>
<html>
<head>
  <title>A sample custom tag</title>
</head>
<body>
  <ex:Hello/>
  <ex:World/>
</body>
</html>

    

 

方法二

1:創建標簽類

2:寫標簽配置文件

3:在web.xml中配置標簽配置文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <jsp-config>
        <taglib>
            <!--
            這里相當於映射
            taglib-location,
                指定標簽配置文件的路徑
            taglib-uri,
                不就是別名嘛,你可以叫aa,bb或者 http://www/coisini,隨便取,都是可以映射到的
                但是,,轉折來的, URI也是有規范的
            URI規范:
                第一部分是協議
                第二部分是存有該資源的主機IP地址(有時也包括端口號)
                第三部分是主機資源的具體地址,如目錄和文件名等
                第一部分和第二部分之間用“://”符號隔開,第二部分和第三部分用“/”符號隔開。第一部分和第二部分是不可缺少的,第三部分有時可以省略。
                eg:http://coisini/myTag

             我這里呢沒寫規范,只是為了證明,別名可以自己取,只要能映射到就行,但是 大家還是要命名規范點
            -->
            <taglib-uri>coisini</taglib-uri>
            <taglib-location>/WEB-INF/myTag.tld</taglib-location>
        </taglib>
    </jsp-config>

</web-app>

4:jsp頁面引入標簽

<!--如果是使用,web.xml配置的方式引用自定義標簽,這里,uri就直接寫<taglib-uri>coisini</taglib-uri>的值就可以-->
<%@ taglib prefix="ex" uri="coisini"%>
<html>
<head>
  <title>A sample custom tag</title>
</head>
<body>
  <ex:Hello/>
  <ex:World/>
</body>
</html>

 

 

              總結-兩種方法差別在哪

就是自定義標簽配置文件的引用區別唄

方法一:直接在jsp頁面引入自定義標簽配置文件(一定要注意路徑問題

方法二:自定義標簽配置文件的路徑配置在web.xml中,反射的原理,在jsp頁面引用自定義標簽時,uri取web.xml中<tablib-uri>的值即可(uri要規范取名

     

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM