javaweb----EL式を再学習(2)--TLD


次の記事に続きます.
(4)javaメソッドを呼び出す:
呼び出し方法を自分で書く必要はありません.他の人が書いたラベルライブラリを呼び出すだけでいいです.fnラベルライブラリ~クラスにelに呼び出す方法が含まれています.この方法は静的な方法でなければなりません.tldファイルを書いて、呼び出す静的メソッドを説明します.jspページでtaglibコマンドはtldファイルを現在のjspページに導入します.jspページで記述されたメソッドを呼び出すことができます
例:1.まずクラスを書きます.
package com.it.fangchao.el;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

public class ELFunc {
 public static String MyEncode(String str,String code) {
    try {
        return  URLEncoder.encode(str, code);
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        throw new RuntimeException();
    }

}
}

2.jspページにこのクラスを知ってもらうために、tldファイルを書いて彼に説明します(WEB-INFディレクトリの下に置かなければなりません.libとclassesディレクトリの外に出なければなりません)バージョン2.0以上を選んで、eclipseが生成したそれはヒントがありません.schemaファイルが間違っているので、以下に注釈したのは前の間違いで、注釈がないのは修正後です.
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0" 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">
<!-- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"> -->
 <tlib-version>1.0</tlib-version>
 <short-name>MyELFunc</short-name>
 <uri>http://www.fangchao.com/MyELFunc</uri>

 <function>
      <name>URLEnc</name>
      <function-class>com.it.fangchao.el.ELFunc</function-class>
      <function-signature>  
      java.lang.String MyEncode(java.lang.String,java.lang.String)
      </function-signature>
 </function>
</taglib>

3.jspにこのtldファイルをインポートする
<%@ taglib uri="http://www.itheima.com/MyELFunc" prefix="MyELFunc" %>

4.使用
 < body>
        ${MyELFunc:URLEnc("  ","utf-8") }

  </body>

結果:%E 5%8 C%97%E 4%BA%AC
付属の:
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
${fn:toUpperCase("asdfasdfKJKJKJdsagHIHidsfgGUGu") }

結果:ASDFASDFKJKJKJJDSAGHIDSFGGU
fnなどの詳細ラベル関数ライブラリの参照