专注成都jJava培训,就业为目标,市场为导向。提升Java实战能力学编程找IT工作就上良将Java培训。 了解技术加老师微信号: he910713 手机:17778634846
良将LOGO图
学编程找IT工作就上良将Java培训。
首页JAVA培训之自定义EL函数库

JAVA培训之自定义EL函数库

更新时间:2023-03-17 13:12:45来源:良将浏览884次

在EL函数库中,我们学习的那些方法都是由JSTL提供的,我们自己也可以定义函数库。自定义EL函数库有以下三个步骤:
  • 写一个类,在该类中定义一个有返回值的静态方法;
  • 编写tld文件;
  • 在页面中添加taglib指令,导入自定义标签库。
下面根据以上步骤,我们来完成自定义EL函数库,点击此处 下载案例源代码,具体如下所示:
(1)新建一个web应用Example9,在src目录下新建一个类,MyFunciton,主要代码如例1-1所示:
例1-1 MyFunction.java
packagecn.itcast.fn;
publicclass MyFunction {
   publicstatic String print(){
        return"创智播客之EL函数库";
    }
}
例1-1中,MyFunction中的print()方法必须是静态的,有返回值的。
(2)因为tld文件我们不希望别人能够直接访问,因此我们将tld文件放在WEB-INF目录下。在该目录下创建一个目录tlds,然后将itcast.tld文件放在tlds目录中,文件内容如例1-2所示:
例1-2 itcast.tld
"1.0"encoding="UTF-8"?>
"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">
 itcast
 itcast-function
 1.0
 it
 http://www.itcast.cn/el/functions
 
 
   print
   cn.itcast.fn.MyFunction
   java.lang.String print()
 

例1-2中,文件的头与约束都是从jstl函数库中的fn.tld文件中拷贝过来的,下面对文件中的比较重要的标签进行解析,如下所示:
  • :当前函数库的版本号;
  • :函数库的前缀,例如fn;
  • :代表当前函数库的地址,在本案例中该标签不起作用;
  • :定义函数的一个标签;
  • :指明函数的名称;
  • :指明函数所在的类的名称;
  • :指明函数的名字及返回值类型,如果有参数,也包括参数类型,如:boolean contains(java.lang.String, java.lang.String)
另外在tld文件中,还存在一个标签,如下:

   
      Tests if an input string contains the specified substring.
   

   contains
   org.apache.taglibs.standard.functions.Functions
   boolean contains(java.lang.String, java.lang.String)
   
     
   

 
其中标签表示的是该函数在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"%>



"Content-Type"cOntent="text/html; charset=UTF-8">



  

${it:print()}



例1-3中,taglib指令中的uri属性的值为“/WEB-INF/tlds/itcast.tld”,该值正是itcast.tld文件的位置。
(4)将Example9发布到服务器,然后启动服务器,在浏览器端访问:http://localhost:8080/Example9/fn/fn.jsp,浏览器显示的结果如图1-1所示:
图1-1 浏览器显示结果


文章来源于网络,不代表本站任何观点。如有侵权或需授权才可以转载请联系管理员,我们核实信息后会在第一时间删除

返回顶部