1. 程式人生 > >javaweb之EL自定義函式

javaweb之EL自定義函式

1.什麼是EL自定義函式

EL自定義函式是在EL表示式中呼叫的某個java類的靜態方法,這個靜態方法需在web應用程式中進行配置才可以被EL表示式呼叫。EL自定義函式可以擴充套件EL表示式的功能,讓EL表示式完成普通java程式程式碼所能完成的功能。

2.EL自定義函式開發步驟

  • 編寫EL自定義函式對映的java類中的靜態方法:這個Java類必須帶有public修飾符,方法必須是這個類的帶有public修飾符的靜態方法;
  • 編寫標籤庫描述檔案(tld檔案),在tld檔案中描述自定義函式;
  • 在jsp頁面中匯入和使用自定義函式。

3.示例程式碼

實現的功能是連線兩個字串。

編寫靜態方法,有public修飾符,且為靜態方法,elFunction.java

package com.javaweb.tag;

public class elFunction {
	public static String concat(String str1,String str2){
		return str1+str2;
	}
}

編寫標籤庫描述檔案,即tld檔案,相關的自定義函式的描述在function標籤中,elFunction.tld

<?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">
    
  <description>MyTag 1.1 core library</description>
  <display-name>MyTag core</display-name>
  <tlib-version>1.1</tlib-version>
  <short-name>c</short-name>
  <uri>http://java.www.com/jsp/jstl/core/elFunction</uri>
  <function>
    <name>concat</name>
    <function-class>com.javaweb.tag.elFunction</function-class>
    <function-signature>java.lang.String concat(java.lang.String,java.lang.String)</function-signature>
  </function>
</taglib>

jsp檔案中匯入和使用自定義函式。

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.www.com/jsp/jstl/core/elFunction" prefix="koala"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'elFunction.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
    ${koala:concat(param.name1,param.name2)}
  </body>
</html>

執行後輸出結果為: