Java web基础总结十之—— jsp EL表达式

Java web基础总结十之—— jsp EL表达式

一.EL表达式简介

          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表达式获取数据语法:“${变量名}”,在前面已经讨论过,EL表达式语句在执行时,会调用pageContext.findAttribute方法,用变量名为关键字,分别从page、request、session、application四个域中查找相应的变量的值,找到则返回相应对象,找不到则返回空字符串。

        比如:${people} ,就会分别从page、request、session、application四个域中查找名为people的属性,如果找到了,就返回,找不到,返回空字符串。

           EL表达式不但可以获取变量的值,也可以很轻松获取JavaBean的属性,获取数组、集合的数据,例如:${people.age}、${map.key} 等等

三.使用EL执行一些运算

    EL执行运算的语法:${运算表达式},EL表达式支持下面的一些运算符,借用一张图来说明,如下:

 技术分享

   比如类似三目运算:

   ${ people != null?people.age : “0”}

 

三.获得web开发常用对象

      EL表达式语言中定义了11个隐含对象,使用这些隐含对象可以很方便地获取web开发中的一些常见对象,并读取这些对象的数据。语法是:${隐式对象名称} ,可以获得对象的引用。这11个隐式对象如下所示:

     技术分享  

 

四.EL函数

         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

 

五.开发自定义的ELFunction

    开发自定义的EL函数和开发自定义标签一样,也是包括以下三个步骤:

1.      编写一个Java类,类中有一个静态方法。
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>


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。