2020久久超碰欧美精品最新亚洲欧美日韩久久精品,国产福利电影一区二区三区,亚洲欧美日韩一区在线观看,亚洲国产欧美日韩欧美特级,亚洲欧美日韩成人一区久久,欧美日韩精品一区二区三区不卡,国产欧美日韩va另类影音先锋,亚洲欧美日韩久久精品,亚洲欧美日韩国产成人精品影院,亚洲国产欧美日韩精品一区二区三区,欧美日韩国产成人高清视频,日韩久久精品国产免费观看频道,久久人人爽人人爽从片av高清,国产精品综合一区二区

首頁技術(shù)文章正文

JAVA培訓(xùn)之自定義EL函數(shù)庫

更新時間:2017-04-16 來源:黑馬程序員Java培訓(xùn)學(xué)院 瀏覽量:

EL函數(shù)庫中,我們學(xué)習(xí)的那些方法都是由JSTL提供的,我們自己也可以定義函數(shù)庫。自定義EL函數(shù)庫有以下三個步驟:
  • 寫一個類,在該類中定義一個有返回值的靜態(tài)方法;
  • 編寫tld文件;
  • 在頁面中添加taglib指令,導(dǎo)入自定義標(biāo)簽庫。
下面根據(jù)以上步驟,我們來完成自定義EL函數(shù)庫,點(diǎn)擊此處 1554260397032_1492336640063055268.png下載案例源代碼,具體如下所示:
(1)新建一個web應(yīng)用Example9,在src目錄下新建一個類,MyFunciton,主要代碼如例1-1所示:
例1-1 MyFunction.java
package cn.itcast.fn;
public class MyFunction {
    public static String print(){
        return "創(chuàng)智播客之EL函數(shù)庫";
    }
}
例1-1中,MyFunction中的print()方法必須是靜態(tài)的,有返回值的。
(2)因為tld文件我們不希望別人能夠直接訪問,因此我們將tld文件放在WEB-INF目錄下。在該目錄下創(chuàng)建一個目錄tlds,然后將itcast.tld文件放在tlds目錄中,文件內(nèi)容如例1-2所示:
例1-2 itcast.tld
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
  version="2.0">
  <description>itcast</description>
  <display-name>itcast-function</display-name>
  <tlib-version>1.0</tlib-version>
  <short-name>it</short-name>
  <uri>http://www.itcast.cn/el/functions</uri>
 
  <function>
    <name>print</name>
    <function-class>cn.itcast.fn.MyFunction</function-class>
    <function-signature>java.lang.String print()</function-signature>
  </function>
</taglib>
例1-2中,文件的頭與約束都是從jstl函數(shù)庫中的fn.tld文件中拷貝過來的,下面對文件中的比較重要的標(biāo)簽進(jìn)行解析,如下所示:
  • <tlib-version>:當(dāng)前函數(shù)庫的版本號;
  • <short-name>:函數(shù)庫的前綴,例如fn;
  • <uri>:代表當(dāng)前函數(shù)庫的地址,在本案例中該標(biāo)簽不起作用;
  • <function>:定義函數(shù)的一個標(biāo)簽;
  • <name>:指明函數(shù)的名稱;
  • <function-class>:指明函數(shù)所在的類的名稱;
  • <function-signature>:指明函數(shù)的名字及返回值類型,如果有參數(shù),也包括參數(shù)類型,如:<function-signature>boolean contains(java.lang.String, java.lang.String)</function-signature>。
另外在tld文件中,還存在一個標(biāo)簽,如下:
<function>
    <description>
      Tests if an input string contains the specified substring.
    </description>
    <name>contains</name>
    <function-class>org.apache.taglibs.standard.functions.Functions</function-class>
    <function-signature>boolean contains(java.lang.String, java.lang.String)</function-signature>
    <example>
      &lt;c:if test="${fn:contains(name, searchString)}">
    </example>
  </function>
其中<example>標(biāo)簽表示的是該函數(shù)在jsp頁面中的示范。
(3)在Example9的WebRoot目錄下新建一個fn目錄,然后在該目錄下新建一個fn.jsp頁面,主要代碼如例1-3所示:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib prefix="it" uri="/WEB-INF/tlds/itcast.tld" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
   <h1>${it:print() }</h1>
</body>
</html>
例1-3中,taglib指令中的uri屬性的值為“/WEB-INF/tlds/itcast.tld”,該值正是itcast.tld文件的位置。
(4)將Example9發(fā)布到服務(wù)器,然后啟動服務(wù)器,在瀏覽器端訪問:http://localhost:8080/Example9/fn/fn.jsp,瀏覽器顯示的結(jié)果如圖1-1所示:
1554260402641_1492336640094003686.png圖1-1 瀏覽器顯示結(jié)果


本文版權(quán)歸黑馬程序員Java培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者出處。謝謝!

作者:黑馬程序員Java培訓(xùn)學(xué)院

首發(fā):http://www.itheima.com/special/hmjavaeezly/


分享到:
在線咨詢 我要報名
和我們在線交談!