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

来源:互联网 发布:心动网络用户中心在哪 编辑:程序博客网 时间:2024/05/16 10:32

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>


2 0
原创粉丝点击