标签:servlet el el函数 jsp java web
EL 是Expression Language的缩写。在jsp中有很大的作用,EL主要有以下一些作用:获取数据,替换JSP页面中的脚本表达式,以从各种类型的web域中检索java对象、获取数据。还可以执行运算,利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面中完成一些简单的逻辑运算,例如 ${user==null}。还可以获取web开发常用的jsp的隐式对象,利用这些隐式对象,web开发人员可以很轻松获得对web常用对象的引用,从而获得这些对象中的数据。最后还可以调用Java方法,EL表达式允许用户开发自定义EL函数,以在JSP页面中通过EL表达式调用Java类的方法。
使用EL表达式获取数据语法:“${变量名}”,在前面已经讨论过,EL表达式语句在执行时,会调用pageContext.findAttribute方法,用变量名为关键字,分别从page、request、session、application四个域中查找相应的变量的值,找到则返回相应对象,找不到则返回空字符串。
比如:${people} ,就会分别从page、request、session、application四个域中查找名为people的属性,如果找到了,就返回,找不到,返回空字符串。
EL表达式不但可以获取变量的值,也可以很轻松获取JavaBean的属性,获取数组、集合的数据,例如:${people.age}、${map.key} 等等
EL执行运算的语法:${运算表达式},EL表达式支持下面的一些运算符,借用一张图来说明,如下:
比如类似三目运算:
${ people != null?people.age : “0”}
EL表达式语言中定义了11个隐含对象,使用这些隐含对象可以很方便地获取web开发中的一些常见对象,并读取这些对象的数据。语法是:${隐式对象名称} ,可以获得对象的引用。这11个隐式对象如下所示:
EL函数,就是使用EL表达式调用Java类的方法,可以是自定义的。语法格式为:${prefix:method(params)}。使用这些函数,可以进行很多的操作,比如可以对显示的字符串进行处理。
SUN公司针对于一些常见处理定义了一套EL函数库。这些EL函数在JSTL开发包中进行描述,因此在JSP页面中使用SUN公司的EL函数库,需要导入JSTL开发包,并在页面中导入EL函数库:
<%@taglib uri="http://java.sun.com/jsp/jstl/functions"prefix="fn"%>
下面举个简单的例子:使用fn:contains()函数判断输入的字符串是否包含指定的子串。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions"prefix="fn" %> <html> <head> <title>test</title> </head> <body> <c:set var="theString" value=" testString"/> <c:if test="${fn:contains(theString, 'test')}"> <p>Found test <p> </c:if> <c:if test="${fn:contains(theString, 'TEST')}"> <p>Found TEST <p> </c:if> </body> </html>
结果是:Found test
开发自定义的EL函数和开发自定义标签一样,也是包括以下三个步骤:
package com.cc; public class HelloWorld{ public static String printOutHello(String message) { if (message == null) return (null); return "hello"+message; } }
2. 在web-inf\目录下新建一个标签库描述符(tld)文件,在tld文件中对自定义函数进行描述。
<?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"> <description>A tag library exercising SimpleTag handlers.</description> <tlib-version>1.0</tlib-version> <short-name>SimpleTagLibrary</short-name> <uri>/hello</uri> <function> <name>printOutHello</name> <function-class>com.cc.HelloWorld</function-class> <function-signature>java.lang.String printOutHello (java.lang.String)</function-signature> </function> </taglib>
3. 在jsp页面导入标签库,并调用el函数
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@taglib uri="/WEB-INF/hello.tld" prefix="fn" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>el function test</title> </head> <body> ${fn:filter("world") } </body> </html>
标签:servlet el el函数 jsp java web
原文地址:http://blog.csdn.net/qfycc92/article/details/46225399