`

JSP2开发EL语言的自定义函数

    博客分类:
  • J2EE
 
阅读更多

表达式是JSP2的一个重要特性,它是仅仅是一种数据访问语言,可以方便地访问应用程序的数据,避免使用JSP脚本。
注:如果想系统认为$是符号,则需要在前面加转义字符"\"

1、表达式语言支持算术运算符和逻辑运算符。
2、表达式语言有11个内置对象
pageContext
pageScope
requestScope
sessionScope
applicationScope
param
paramValues 属性值为数组
header 请求头的属性值
headerValues 数组
initParam Web应用初始化参数
cookie

3、表达式语言的自定义函数

表达式语言除了可以使用基本的运算符外,还可以使用自定义函数。通过自定义函数,能够大大加强表达式语言的功能。自定义函数的开发步骤非常类似标签的开发步骤,定义方式也几乎一样。区别在于自定义标签直接在页面上生成输出,而自定义函数则需要在表达式语言中使用。

注:函数功能大大扩充了EL的功能,EL本身只是一种数据访问语言,因此它不支持调用方法。如果需要在EL中进行更复杂的处理,就可以通过函数来完成。函数的本质是:提供一种语法允许在EL中调用某个类的静态方法。

下面介绍表达式语言中自定义函数的开发步骤。
1)开发函数处理类:函数处理类就是函数类,这个普通类中包含若干个静态方法,每个静态方法都可以定义成一个函数。实际上这个步骤也是可省略的——完全可以直接使用JDK或者其他项目提供的类,只要这个类包含静态方法即可。

public class Functions
{
    public static String reverse(String text)
    {
        return new StringBuffer(text).reverse().toString();
    }

    public static int countChar(String text)
    {
        return text.length();
    }
}

 
2)使用标签库定义函数:定义函数的方法与定义标签的方法大致相似。增加标签是在<taglib.../>下添加<tag.../>元素,而添加函数则是
添加<function.../>

<?xml version="1.0" encoding="GBK" ?>
<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 web-jsptaglibrary_2_0.xsd"
version="2.0">
<!-- TLD版本 -->
<tlib-version>1.0</tlib-version>
<!-- 标签库的名称 -->
<short-name>mytaglib</short-name>
<!-- 标签库的URI,唯一 -->
<uri>http://www.crazyit.org/mytaglib</uri>
<!-- 定义EL函数 -->
<function>
	<!-- 定义函数名 -->
	<name>reverse</name>
	<!-- 定义函数的处理类 -->
	<function-class>org.test.Functions</function-class>
	<!-- 定义函数的实现方法 -->
	<function-signature>java.lang.String reverse(java.lang.String)</function-signature>
</function>
</taglib>

 

3)在JSP页面的EL中使用函数:一样需要先导入标签库,然后再使用函数。

<!-- 指定错误页面error.jsp -->
<%@ page language="java" errorPage="error.jsp" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" %>
<%@ page import="java.util.*" %>
<%@ page import="org.test.*" %>
<!-- 如果想要支持EL语言必须把这个EL支持打开,否则默认是不支持的
	如果想整个服务下都支持,则需要在Web服务器上设置
 -->
<%@ page isELIgnored="false" %>
<!-- 1、引入需要使用的标签库,uri是标签库的唯一标识,prefix为前缀 -->
 <%@ taglib uri="http://www.crazyit.org/mytaglib" prefix="mytag" %>
<!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>pageContext测试</title>
</head>
<body>
<!-- 使用EL自定义函数 -->
<span>${mytag:reverse('abc') }</span>
</body>
</html>

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics