大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

JSP教程
JSP高級教程

JSP表達式語言

JSP表達式語言(EL)使得訪問存儲在JavaBean中的數據變得非常簡單。JSP EL既可以用來創建算術表達式也可以用來創建邏輯表達式。在JSP EL表達式內可以使用整型數,浮點數,字符串,常量true、false,還有null。

一個簡單的語法

典型的,當您需要在JSP標簽中指定一個屬性值時,只需要簡單地使用字符串即可:

<jsp:setProperty name="box" property="perimeter" value="100"/>

JSP EL允許您指定一個表達式來表示屬性值。一個簡單的表達式語法如下:

${expr}

其中,expr指的是表達式。在JSP EL中通用的操作符是"."和"[]"。這兩個操作符允許您通過內嵌的JSP對象訪問各種各樣的JavaBean屬性。

舉例來說,上面的標簽可以使用表達式語言改寫成如下形式:

<jsp:setProperty name="box" property="perimeter"                   value="${2*box.width+2*box.height}"/>

當JSP編譯器在屬性中見到"${}"格式后,它會產生代碼來計算這個表達式,并且產生一個替代品來代替表達式的值。

您也可以在標簽的模板文本中使用表達式語言。比如標簽簡單地將其主體中的文本插入到JSP輸出中:

<jsp:text>
<h1>Hello JSP!</h1>
</jsp:text>

現在,在<jsp:text>標簽主體中使用表達式,就像這樣:

<jsp:text>
Box Perimeter is: ${2*box.width + 2*box.height}
</jsp:text>

在EL表達式中可以使用圓括號來組織子表達式。比如${(1 + 2) * 3}等于9,但是${1 + (2 * 3)} 等于7。

想要停用對EL表達式的評估的話,需要使用page指令將isELIgnored屬性值設為true:

<%@ page isELIgnored ="true|false" %>

這樣,EL表達式就會被忽略。若設為false,則容器將會計算EL表達式。

EL中的基礎操作符

EL表達式支持大部分Java所提供的算術和邏輯操作符:

操作

符描述

.

訪問一個Bean屬性或者一個映射條目

[]

訪問一個數組或者鏈表的元素

( )

組織一個子表達式以改變優先級

+

-

減或負

*

/ or div

% or mod

取模

== or eq

測試是否相等

!= or ne

測試是否不等

< or lt

測試是否小于

> or gt

測試是否大于

<= or le

測試是否小于等于

>= or ge

測試是否大于等于

&& or and

測試邏輯與

|| or or

測試邏輯或

! or not

測試取反

empty

測試是否空值

JSP EL中的函數

JSP EL允許您在表達式中使用函數。這些函數必須被定義在自定義標簽庫中。函數的使用語法如下:

${ns:func(param1, param2, ...)}

ns指的是命名空間(namespace),func指的是函數的名稱,param1指的是第一個參數,param2指的是第二個參數,以此類推。比如,有函數fn:length,在JSTL庫中定義,可以像下面這樣來獲取一個字符串的長度:

${fn:length("Get my length")}

要使用任何標簽庫中的函數,您需要將這些庫安裝在服務器中,然后使用標簽在JSP文件中包含這些庫。

JSP EL隱含對象

JSP EL支持下表列出的隱含對象:

隱含對象

描述

pageScope

page 作用域

requestScope

request 作用域

sessionScope

session 作用域

applicationScope

application 作用域

param

Request 對象的參數,字符串

paramValues

Request對象的參數,字符串集合

header

HTTP 信息頭,字符串

headerValues 

HTTP 信息頭,字符串集合

initParam 

上下文初始化參數

cookie

Cookie值

pageContext

當前頁面的pageContext

您可以在表達式中使用這些對象,就像使用變量一樣。接下來會給出幾個例子來更好的理解這個概念。

pageContext對象

pageContext對象是JSP中pageContext對象的引用。通過pageContext對象,您可以訪問request對象。比如,訪問request對象傳入的查詢字符串,就像這樣:

${pageContext.request.queryString}

Scope對象

pageScope,requestScope,sessionScope,applicationScope變量用來訪問存儲在各個作用域層次的變量。

舉例來說,如果您需要顯式訪問在applicationScope層的box變量,可以這樣來訪問:applicationScope.box。

param和paramValues對象

param和paramValues對象用來訪問參數值,通過使用request.getParameter方法和request.getParameterValues方法。

舉例來說,訪問一個名為order的參數,可以這樣使用表達式:${param.order},或者${param["order"]}。

接下來的例子表明了如何訪問request中的username參數:

<%@ page import="java.io.*,java.util.*" %>
<%     String title = "Accessing Request Param"; %>
<html>
<head>
<title><% out.print(title); %></title>
</head>
<body>
<center>
<h1><% out.print(title); %></h1>
</center>
<div align="center">
<p>${param["username"]}</p>
</div>
</body>
</html>

param對象返回單一的字符串,而paramValues對象則返回一個字符串數組。

header和headerValues對象

header和headerValues對象用來訪問信息頭,通過使用 request.getHeader方法和request.getHeaders方法。

舉例來說,要訪問一個名為user-agent的信息頭,可以這樣使用表達式:${header.user-agent},或者${header["user-agent"]}。

接下來的例子表明了如何訪問user-agent信息頭:

<%@ page import="java.io.*,java.util.*" %>
<%     String title = "User Agent Example"; %>
<html>
<head>
<title><% out.print(title); %></title>
</head>
<body>
<center>
<h1><% out.print(title); %></h1>
</center>
<div align="center">
<p>${header["user-agent"]}</p>
</div>
</body>
</html>

運行結果如下:

header對象返回單一值,而headerValues則返回一個字符串數組。

全部教程
主站蜘蛛池模板: 欧美精品亚洲一区二区在线播放 | 欧美黄视频在线观看 | 日本一区二区三区免费在线观看 | 国产国语一级毛片中文 | 夜夜精品视频一区二区 | 免费久久 | 羞羞视频网站 | 久久精品一区二区免费看 | 99影视网 | 久久伦理 | 欧美一区精品二区三区 | 香蕉视频在线网站 | 一区二区三区高清在线 | 亚洲一区二区三区中文字幕 | 亚洲综合激情六月婷婷在线观看 | 久久久久久久久免费视频 | 久久国产亚洲高清观看5388 | 色综合视频在线 | 亚洲国产最新在线一区二区 | 国产亚洲精品一区999 | 精品久久久中文字幕二区 | 国产日本亚洲 | 久草.com| 网曝门精品国产事件在线观看 | 色姝影院免费 | 四虎影院在线观看免费 | 欧美在线观看一区二区三 | 亚洲 欧美 日韩在线综合福利 | 99久久网站| 美女个护士一级毛片亚洲 | 一级特级欧美午夜片免费观看 | 日本无翼乌全彩无遮挡动漫 | 亚洲欧美精品网站在线观看 | 免费一级特黄a | 国产午夜亚洲精品久久www | 爱爱免费观看高清视频在线播放 | 久久综合狠狠综合久久97色 | 国产精品视频一区二区三区经 | 成人免费淫片免费观看 | 两性视频网站 | 欧美精品成人一区二区视频一 |