JSP2 1和統一表示式語言

2021-08-30 15:01:38 字數 1760 閱讀 9640

jsp2.1的新特性

1、新的統一表示式語言,允許表示式延期求值,表示式既可以取值也可以賦值,還可以呼叫方法。

2、可以通過註解實現資源注入,簡化配置訪問資源或外界物件。比如訪問jndi物件。

3、統一了jsf標籤和jsp的實現,建立在統一表示式語言基礎上。

統一表示式語言

1、在常規的jsp應用中,請求處理模型只有乙個階段即頁面渲染,所以表示式可以立即求值返回給響應response即可。而且表示式只需要從後台物件中取值顯示。jsp中表示式語言以「$」開頭。

2、在jsf中請求處理模型分解成了6個階段,每個階段都有可能用到表示式,所以要求表示式支援延期求值。即在不同的階段都可以通過表示式語言訪問特定的物件。使用者在介面輸入內容後在postback期間要賦給伺服器端的物件,所以需要表示式有賦值功能。另外在驗證資料和處理事件,需要後台託管bean的方法,所以表示式需要支援方法呼叫。jsf表示式語言以「#」開頭。

因此,jsp和jsf對表示式語言的使用和要求是不一樣的,因此也造成了二者不能一起很好的配合使用,例如下面的應用:

變數「location」只能在迭代階段使用,但是在postback期間,無法訪問。

為了解決jsp和jsf中表示式語言不一致的問題,統一表示式語言出現了。上面提到的問題就可以通過下面的方式解決了:

統一表示式語言的特性:

1、延期求值。

2、既能從物件中獲得值也能給物件賦值。

3、支援方法表示式,允許呼叫呼叫方法實現jsf uicompnent驗證、處理事件和其它一些功能。

4、 靈活的擴充套件機制去實現新的表示式求值方法實現。

jsp2.1中使用表示式語言

1、在jsp中模板文字中只能使用$,下面的使用時非法的

……………………………

hellow #

……………………………

2、#只能在標籤屬性中使用。

如果標籤的tld檔案中指定的jsp版本為2.1之前(如:jsf1.1中的標籤),那麼「#」語法是不會被處理的,所以在基於jsp2.1之前編寫的頁面在支援jsp2.1的容器中執行的時候,為了保證能正常執行,有兩個辦法解決。

1、在「#」前加「\」。

2、在web.xml中新增

true

或者在jsp中新增:

<%@page ... deferredsyntaxallowedasliteral="true" %>

比如test.jsp中有如下一段**:

……………………………

hellow #

……………………………

在實現jsp2.1規範之前的容器中可以正常執行,但是#直接作為字串文字值顯示。

在實現jsp2.1規範的容器中,需要在修改為

……………………………

hellow \#

……………………………

或者

<%@  deferredsyntaxallowedasliteral="true"%>

……………………………

hellow #

……………………………

注意:#照樣只會做為字元創文字值顯示,不會進行求值。

Python一一表示式和列印

因為表示式結果不會儲存,只有當表示式工作並作為附加的效果,這樣才有意義。通常在兩種情況下表示式用作語句。函式呼叫和方法 有些函式和方法會做很多任務作,而不會有返回值。這種函式在其他語言中有時稱為過程。因為它們不會返回你可能想保留的值,所以你可以用表示式語句呼叫這些函式 在互動模式提示符下列印值 py...

雷林鵬分享 jsp 表示式語言

jsp表示式語言 el 使得訪問儲存在j abean中的資料變得非常簡單。jsp el既可以用來建立算術表示式也可以用來建立邏輯表示式。在jsp el表示式內可以使用整型數,浮點數,字串,常量true false,還有null。乙個簡單的語法 典型的,當您需要在jsp標籤中指定乙個屬性值時,只需要簡...

jsp內建物件和el表示式內建物件誤區

jsp九大內建物件 el表示式隱含的11個物件 隱含物件名稱 描 述 pagecontext 對應於jsp頁面中的pagecontext物件 注意 取的是pagecontext物件。pagescope 代表page域中用於儲存屬性的map物件 requestscope 代表request域中用於儲存...