我们可以通过EL表达式来获取并输出四大域中数据,同时还可以通过EL表达式调用自定义的函数进行输出
1.定义java函数
package elfunction;
public class MyElFunction {
//注意是static
public static String string_Splicing(String str,String stk)
{
return str+stk;
}
public static String myToLowerCase(String str)
{
return str.toLowerCase();
}
}
2.在.tld文件中注册java函数
在web-inf目录下创建一个.tld文件,需要注意的是,.tld文件是有约束的,我们可以参考apache-tomcat-9.0.17\webapps\examples\WEB-INF\jsp2\jsp2-example-taglib.tld这个文件(如果没有这个文件,重新解压tomcat,就会看到了)
<?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">
<!--版本-->
<tlib-version>1.0</tlib-version>
<!--short-name中的内容由我们自己定义,在JSP页面中会用到-->
<short-name>myelfunction</short-name>
<!--short-name中的内容由我们自己定义,在JSP页面中会用到-->
<uri>http://myelfunction</uri>
<function>
<!--name中的内容是我们自定的,一般和自定义函数名称相同-->
<name>string_Splicing</name>
<!--自定义函数所在的类,注意是全类名-->
<function-class>elfunction.MyElFunction</function-class>
<!--函数的返回值、名称、参数,注意返回值、参数应该是全类名-->
<function-signature>java.lang.String string_Splicing(java.lang.String,java.lang.String)</function-signature>
</function>
<function>
<!--name中的内容是我们自定的,一般和自定义函数名称相同-->
<name>myToLowerCase</name>
<!--自定义函数所在的类,注意是全类名-->
<function-class>elfunction.MyElFunction</function-class>
<!--函数的返回值、名称、参数,注意返回值、参数应该是全类名-->
<function-signature>java.lang.String myToLowerCase(java.lang.String)</function-signature>
</function>
</taglib>
3.在JSP页面中通过taglib引入.tld文件
<%@ taglib uri="http://myelfunction" prefix="myelfunction" %>
uri:为.tld文件中<uri>http://myelfunction</uri>
prefix:为.tld文件中<short-name>myelfunction</short-name>
4.在JSP页面中使用自定义函数
${myelfunction:string_Splicing("zhang","san")}
${myelfunction:myToLowerCase("I AM STUDENT")}
调用方式:${short-name:function.name(参数)}
最后再总结一下自定EL函数的步骤
1.定义java函数
2.web-inf下创建.tld文件并注册java函数
3.在JSP页面通过taglib标签引入.tld
4.通过EL表达式调用自定义函数