標籤:servlet el el函數 jsp java web
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四個域中尋找相應的變數的值,找到則返回相應對象,找不到則返回Null 字元串。
比如:${people} ,就會分別從page、request、session、application四個域中尋找名為people的屬性,如果找到了,就返回,找不到,返回Null 字元串。
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>
Java web基礎總結十之—— jsp EL運算式