程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> bean動作和EL表達式語言基礎

bean動作和EL表達式語言基礎

編輯:關於JSP

與bean相關的標准動作:

<jsp:useBean id="person" class="foo.Person" scope="request" />
<jsp:getProperty name="person" property="name" />
<jsp:setProperty name="person" property="name" value="Fred" />
jsp:useBean動作在沒有person屬性時會自動創建一個person屬性,並賦為null

jsp:useBean體:www.2cto.com

<jsp:useBean id="person" class="foo.Person" scope="request">
    <jsp:setProperty name="person" property="name" value="Fred" />
</jsp:useBean>

jsp:setProperty在jsp:useBean體中時,只有person屬性不存在時才為新創建的屬性設置屬性,並不改變現存的屬性值

建立多態的bean引用:

<jsp:useBean id="person" type="foo.Person" class="foo.Empolyee" scope="request" />
如果使用了type,但沒有class,bean必須已經存在
如果使用了class(有或沒有type),class不能使抽象類,而且必須有一個無參數的公共構造函數

利用param屬性,可以將屬性的性質設置為一個請求參數的值,例如:
<jsp:useBean id="person" class="foo.Person" scope="request">
    <jsp:setProperty name="person" property="name" param="userName" />
</jsp:useBean>

 
如果請求參數名與bean中的性質名相同,可以不用指出param屬性,例如:
<jsp:useBean id="person" class="foo.Person" scope="request">
    <jsp:setProperty name="person" property="name" />
</jsp:useBean>


如果所有請求參數名都與bean性質匹配,還可以如下這麼干:
<jsp:useBean id="person" class="foo.Person" scope="request">
    <jsp:setProperty name="person" property="*" />
</jsp:useBean>

 
bean標記會自動轉換基本類型和String類型的性質

如果使用腳本,就不會完成自動轉換,即是表達式在<jsp:setProperty>標記中也會失敗

利用<jsp:getProperty>只能訪問bean的性質,不能訪問嵌套性質

--------------------------------------------------------------------

EL表達式:形如 ${person.name}

表達式中第一個變量名可以使一個隱式對象或屬性

EL隱式對象包括:pageScope,requestScope,sessionScope,applicationScope,param,paramValues,header,headerValues,cookie,initParam,pageContext

屬性包括:任意作用域中的屬性,包括page,request,session,application

EL隱式對象除了pageContext都是映射對象,pageContext是對pageContext對象的實際引用

用點號"."訪問性質和映射值,如${person.name},點號右邊變量必須符合java變量名命名規范,該變量是一個映射鍵或者性質

用[]號訪問性質或映射鍵,除了點號能訪問的之外,[]還能訪問數組和List中的內容,並且數組和List中的String索引會強制轉換為int,例如:

${favoriteFood[0]}和${favoriteFood["0"]都可訪問

使用[]時,如果[]裡沒有引號,容器會計算括號中的內容,搜說與該名字綁定的屬性,並替換為這個屬性的值

中括號中可以使用嵌套表達式,例如:${musicMap[MusicType[0]]}

param隱式對象:得到對應參數名的參數,例如${param.food}

paramValues隱式對象:得到對應參數名的多個參數,例如${paramValues.food[0]},${paramValues.food[1]}

得到host首部:${header["host"]}或者${header.host}

得到http請求方法:不是${requestScope.method}而是${pageContext.request.method}

requestScope只是請求作用域屬性的一個Map,而不是請求對象本身

作用域隱式對象可以解決命名沖突的問題,還可以解決屬性名中有點號的問題,例如:一個屬性叫做foo.person,${foo.person.name}就找不到你想找的性質,因為容器吧foo當做屬性名,用隱式對象解決,${requestScope["foo.person"].name},ok。

得到cookie值,例如:${cookie.userName.value}

得到上下文初始化參數,例如:${initParam.mainEmail},注意,initParam表示上下文初始化參數,不是servlet初始化參數

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved