1. 程式人生 > >JSP與EL表示式

JSP與EL表示式

EL表示式作用:

     1.主要用於獲取資料物件或變數值

                     EL表示式主要用於替代JSP頁面的指令碼表示式(<%=expression%),以從各種型別的web域中檢索java物件
     2.在JSP頁面執行一些基本關係運算、邏輯運算和算術運算
     3.獲取web開發常用物件
        EL表示式定義了一些隱式物件,利用這些隱式物件,可以輕鬆獲得對web常用物件(JSP九大內建物件)的引用
     4.呼叫Java方法
        EL表示式允許使用者自定義EL函式,以在JSP頁面中通過EL表示式呼叫Java類的方法
        EL自定義函式開發與應用的3個步驟:
            1.編寫一個Java類的靜態方法
            2.編寫標籤庫描述(tld)檔案,在tld檔案中描述自定義函式
            3.在JSP頁面匯入和使用自定義函式
     在JSP頁面中可以使用形如${識別符號}的形式,預設通知JSP引擎呼叫pageContext(jsp內建的九大物件之一,封裝了其它八大物件).findAttribute()方法,以識別符號為關鍵字從各個域物件(即page-》request-》session-》application從小範圍往大範圍找)中獲取資料物件。如果所有域物件中不存在識別符號所對應的資料物件,則返回結果為""(注意,不是null)

EL表示式格式:
     用美元符號"$"定界,內容包括在一對花括號"{}"中;注意${}裡面不能再巢狀${}即EL表示式不能相互巢狀
     即${表示式}
     在EL表示式中,取一個物件的屬性 點語法(.)和中括號[]語法是通用的
        如:${user.sex} ${user["sex"]}
    []還可以用來進行集合元素的定位
        如:${booklist[0].price} 即${booklist[0]["price"]}
    []還可以用來動態的取值
        如:${user[param]};//param是一個變數

    EL表示式自帶的11大物件:EL表示式語言中定義了11個隱含物件,使用這些隱含物件可以更方便地獲取web開發中的一些常見物件,並讀取這些物件的資料。
  語法:${隱式物件名稱}:獲得物件的引用
序號     隱含物件名稱     描       述
1     pageContext     即JSP九大內建物件中的pageContext物件(注意:取的是pageContext物件。)           該物件存在的重要意義:分裝了JSP九大內建物件中的其它八大物件,即可以通過該物件獲取其它8大物件
2     pageScope     代表page域中用於儲存屬性的Map集合物件
3     requestScope     代表request域中用於儲存屬性的Map集合物件
4     sessionScope     代表session域中用於儲存屬性的Map集合物件
5     applicationScope     代表application域中用於儲存屬性的Map集合物件    Notice這四個只是儲存鍵值對的集合型別的物件

6     param         表示一個儲存了所有請求引數的Map集合物件
            至少應該包含兩個Map物件:URL請求引數Map物件和Request物件設定的屬性Map物件
7     paramValues     表示一個儲存了所有請求引數的Map集合物件;對於某個請求引數,返回的是一個string[]
8     header         表示一個儲存了所有http請求頭欄位的Map集合物件,注意:如果頭裡面有“-” ,例Accept-Encoding,則要header[“Accept-Encoding”]
9     headerValues     表示一個儲存了所有http請求頭欄位的Map集合物件,它對於某個請求引數,返回的是一個string[]陣列。注意:如果頭裡面有“-” ,例Accept-Encoding,則要headerValues[“Accept-Encoding”]
10   cookie     表示一個儲存了所有cookie的Map集合物件
11     initParam     表示一個儲存了所有web應用初始化引數的map集合物件

EL表示式支援大部分Java所提供的算術和邏輯操作符:
    操作符     描述
    .     訪問一個Bean屬性或者一個對映條目
    []     訪問一個數組或者連結串列的元素
    ........    
    關係運算符:==(或eq)、!=(或ne)、<=(或le)、>=。。。。。。。
    驗證運算子:empty  不為NULL返回true 為NUll返回false

EL自動型別轉換
    非EL時我們需要這樣寫;
        String str_count=request.getParameter("count");
        int count=Integer.parseInt(str_count);//手動轉換型別
        count=count+20;
    EL會進行自動型別轉換
        ${param.count+20}

在頁面中使用JSTL標籤的兩個步驟:
    1、匯入jstl.jar和standerd.jar這兩個JSTLdejia檔案
    2、在JSP頁面中使用<%@ tablid url="" prifix="" %>匯入標籤庫
    
EL表示式配合JSTL的使用:
    --EL表示式經常與JSTL配合使用,使JSP頁面更直觀,寫法更簡單
    --普通寫法:    <%=session.getValue("name")%>
    --EL表示式寫法: <c:out value="${sessionScope.name}/>"

JSTL核心標籤分類:
    1.表示式控制標籤:out、set、remove、catch、
    2.流程控制標籤:if、choose、when、otherwise
    3.迴圈標籤:forEach、forTokens
    4.URL操作標籤:import、url、redirect、param
    具體:
    <c:out/>功能與JSP傳統的<%=表示式%>或 <% out.println(“字串”)%>很類似,用於輸出常量值或變數值 變數值用EL表示式獲取

       <c:set/>功能1:存值到scope(即page、request、session、application)中
        <c:set value="today" var="day" scope="session"></c:set>
        <c:out value="${day}"></c:out>
          或
        <c:set var="age" scope="session">eleven</c:set>
        <c:out value="${age}"></c:out>    
        功能2:存值到JavaBean中    如果指定了target屬性(指明目標Bean),那麼property屬性(指明該Bean的屬性)也需要被指定。當然這裡必須指定洛
        <jsp:usebean id="person" scope="session"/>//設定JavaBean
        <c:set target="${sessionScope.person}" property="name" value="lihao"></c:set>
        <c:out value="${sessionScope.person.name}"></c:out>

    <c:remove/>移除指定域的資料物件

    <c:catch/>功能與Java程式中的try{}catch{}語句功能很類似
        <c:catch var="error">//將錯誤資訊儲存到error變數中
            <c:set target="aa" property="bb"/>bbbb</c:set>//為一個不存在的JavaBean物件設定屬性值
        </c:catch>
        <c:out value="${error}"/>



    <c:if test="" var="" scope=""/>與程式中的if作用相同,用來實現分支條件控制
        test屬性用來存放判斷條件,一般用EL表示式來編寫
            var指定存放結果true或false的變數名稱,結果為true則執行標籤體 預設結果為false
        scope指定用來指定var的存放範圍 預設page

    <c:choose>、<c:when>、<c:otherwise>這三個標籤一般組合起來使用 相當於switch case default條件分支結構

    <c:forEach>:用於對一個集合物件中的元素進行迭代操作
    屬性名            作用
    var            指定將當前迭代到的元素儲存到page這個域中的屬性名稱
    varstatus        記住了當前是第幾次迭代
    items            將要迭代的集合物件
    begin
    end
    step            步長
    

    <c:param>標籤可以巢狀在<c:import>、<c:url>、<c:redirect>標籤內,為這些標籤所使用的URL地址附加引數
    <c:param>標籤再為一個URL地址附加引數時,將自動對引數值進行URL編碼;例如 如果附加的引數值為“中國”,則將其轉換為
    "%d6%d0%b9%fa"後再附加到URL地址後面,這就是使用<c:param>標籤的最大好處
    示例:<c:param name="" value=""/>
    
    <c:url>標籤用於在JSP頁面中構造一個URL地址,其主要目的是為了實現URL重寫。所謂的URL重寫就是將回話識別符號
    以引數形式附加到URL地址後面
    屬性名        是否支援EL    作用
    value        true    
    var        false        
    scope        false        指定將構造出的URL儲存到哪個web作用域   

相關推薦

JavaWeb學習筆記及案例(一)JSPEL表示式和JSTL

1.JSP 1.1JSP的三大指令 page include taglib 指令的寫法 <%@ 指令名字 %> 1.1.1jsp的page指令 1.extends 用於指定jsp翻譯成java檔案後,繼承的父類是誰,一般不改 2.s

JSPEL表示式

EL表示式作用:      1.主要用於獲取資料物件或變數值                      EL表示式主要用於替代JSP頁面的指令碼表示式(<%=expression%),以從各種型別的web域中檢索java物件      2.在JSP頁面執行一些基本關係

JSPEL表示式JSTL標籤庫

EL表示式格式:${} u s e

jspel表示式的隱式物件 + 作用域

jsp 隱式物件  config      jsp的配置資訊 page        jsp自身物件(this) exception   異常物件(isErrorPage=true) response

JSPEL表示式不起作用

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

JSPEl表示式、JSTL表示式筆記

html改jsp替換標頭檔案 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/js

JSPEL表示式的應用以及常用的方法

EL表示式      1、EL簡介 1)語法結構        ${expression} 2)[]與.運算子      EL 提供.和[]兩種運算子來存取資料。      當要存取的屬性名稱中包含一些特殊字元,如.或?等並非字母或數字的符號,就一定要使用 []。

springMvc不解析jspEL表示式解決方法

根本原因是用maven生成的web.xml使用的是servlet2.3,servlet2.3預設不開啟El表示式。 解決方法有2種: 第一種方法: 修改web.xml的開頭 原來是: <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, I

jspel表示式獲取後臺傳來的值,或者獲取session中的值

<script type="text/javascript"> var usernameC = ${sessionScope.SESSION_USER_PROFILE.accountId}; var caseId = "${caseId}"; var taskId =

Servlet + (JSPEL表示式、JSTL標籤庫)的 資料流轉

兩個Servlet之間的資料流轉:靠的是作用域 作用域是資料流轉的載體 用request舉例 傳統方式:在jsp介面中使用java指令碼段 servlet的流程: 設定請求編碼格式 req.setCharacterEncoding("utf-8");

Model 將返回結果傳入jsp,使用EL表示式無法展示資料

今天在做簡單的ssm框架時,發現當Model成功將資料addAttribute中時卻發現頁面上沒有資料出來 controller程式碼: jsp程式碼: 經過各種查閱資料發現是由於頁面少了<

jspEL表示式

<%@ page language="java" contentType="text/html; charset=UTF-8"     pageEncoding="UTF-8"%> <%@ page import="java.util.*" %>

JSTLEL表示式(為空判斷)

一、迴圈遍歷集合 3、如何使用jstl判斷集合是否為空 ${user}為集合,user為集合名 <c:if test="${empty user}">無資訊!</c:if&

JSP使用EL表示式實現if,else

JSP頁面使用EL表示式,首先要說明的是,EL表示式只有<c:if>,沒有else表示式標籤。但是可以使用別的EL表示式替代:<c:choose><c:when test="${條件}">如果</c:when><c:oth

jspEL表示式顯示時中文亂碼和過濾器解決請求中文亂碼

一,jsp中EL表示式顯示時中文亂碼    我是通過url請求將一個jsp的值傳到另一個jsp,結果在另一個jsp顯示時出現中文亂碼。    分析問題:由於URL請求沒有設定編碼格式所以解析響應時會出現中文亂碼    解決方法:在Tomcat的conf資料夾中的server.

freemarker的基本標籤的使用el表示式比較

${selectDto.stuName?ifExists}相當於el表示式的${selectDto.stuName} 設定單選框在selectDto.exact==1時選中 ${(selectDto.exact==1)?string("checked","")}相當於el表

jspEL表示式不起作用的問題

SpringMVC過程中出現異常,開發環境如下: 開發工具:IDEA JDK:1.8.0_65 Spring Version:4.2.4 Servlet Version:3.1.0 Maven:3.3.0 問題:在jsp頁面中使用el表示式

JSPEL表示式的取值

EL表示式可以取JavaBean的值,也可以取Attribute的值,下面是取Attribute的值 <% application.setAttribute("name", "applicationName");//Context域,作用域

JSPEL表示式以及JSTL標籤庫

在JSP中JSTL標籤庫用的還是比較多的,今天就稍微總結一些JSTL中常用的一些標籤: 1.在JSP中還有一個就是EL表示式經常和JSTL標籤聯合使用 格式:${} ${user.name},${user["name"]} 上面的寫法一樣,但有2種情

jsp頁面EL表示式不被解析的解決方法

之前用的weblogic,現在換成了Tomcat發現jsp頁面的EL表示式不被解析,直接在頁面顯示${Parameter}。 解決方法:在jsp頁面頂部加上 <%@ page isELIgnored="false" %>   就可以正常顯示了。