2019/3/3 16:48:37
JSP 腳本元素
JSP腳本元素用(yòng)來插入Java代碼,這些Java代碼将出現在由當前JSP頁面生成的(de)Servlet中。腳本元素有(yǒu)三種格式:
表達式格式<%= expression %>:計(jì)算表達式并輸出其結果。
Scriptlet格式<% code %>:把代碼插入到(dào)Servlet的(de)service方法。
聲明(míng)格式<%! code %>:把聲明(míng)加入到(dào)Servlet類(在任何方法之外)。
下面我們詳細說明(míng)它們的(de)用(yòng)法。
JSP 表達式
JSP表達式用(yòng)來把Java數據直接插入到(dào)輸出。其語法如(rú)下:
<%= Java Expression %>
計(jì)算Java表達式得到(dào)的(de)結果被轉換成字符串,然後插入到(dào)頁面。計(jì)算在運行(xíng)時進行(xíng)(頁面被請求時),因此可(kě)以訪問和(hé)請求有(yǒu)關的(de)全部信息。例如(rú),下面的(de)代碼顯示頁面被請求的(de)日期/時間:
Current time: <%= new java.util.Date() %>
爲簡化這些表達式,JSP預定義了一組可(kě)以直接使用(yòng)的(de)對象變量。後面我們将詳細介紹這些隐含聲明(míng)的(de)對象,但(dàn)對于JSP表達式來說,最重要的(de)幾個(gè)對象及其類型如(rú)下:
request:HttpServletRequest;
response:HttpServletResponse;
session:和(hé)request關聯的(de)HttpSession
out:PrintWriter(帶緩沖的(de)版本,JspWriter),用(yòng)來把輸出發送到(dào)客戶端
下面是一個(gè)例子:
Your hostname: <%= request.getRemoteHost() %>
最後,如(rú)果使用(yòng)XML的(de)話(huà),JSP表達式也(yě)可(kě)以寫成下面這種形式:
<jsp:expression>
Java Expression
</jsp:expression>
請記住XML元素和(hé)HTML不一樣。XML是大(dà)小(xiǎo)寫敏感的(de),因此務必使用(yòng)小(xiǎo)寫。有(yǒu)關XML語法的(de)說明(míng),請參見《XML教程 》
JSP Scriptlet
如(rú)果你(nǐ)要完成的(de)任務比插入簡單的(de)表達式更加複雜,可(kě)以使用(yòng)JSP Scriptlet。JSP Scriptlet允許你(nǐ)把任意的(de)Java代碼插入Servlet。JSP Scriptlet語法如(rú)下:
<% Java Code %>
和(hé)JSP表達式一樣,Scriptlet也(yě)可(kě)以訪問所有(yǒu)預定義的(de)變量。例如(rú),如(rú)果你(nǐ)要向結果頁面輸出内容,可(kě)以使用(yòng)out變量:
<%
String queryData = request.getQueryString();
out.println("Attached GET data: " + queryData);
%>
注意Scriptlet中的(de)代碼将被照(zhào)搬到(dào)Servlet内,而Scriptlet前面和(hé)後面的(de)靜态HTML(模闆文(wén)本)将被轉換成println語句。這就意味著(zhe),Scriptlet内的(de)Java語句并非一定要是完整的(de),沒有(yǒu)關閉的(de)塊将影響Scriptlet外的(de)靜态HTML。例如(rú),下面的(de)JSP片斷混合了模闆文(wén)本和(hé)Scriptlet:
<% if (Math.random() < 0.5) { %>
Have a <B>nice</B> day!
<% } else { %>
Have a <B>lousy</B> day!
<% } %>
上(shàng)述JSP代碼将被轉換成如(rú)下Servlet代碼:
if (Math.random() < 0.5) {
out.println("Have a <B>nice</B> day!");
} else {
out.println("Have a <B>lousy</B> day!");
}
如(rú)果要在Scriptlet内部使用(yòng)字符“%>”,必須寫成“%\>”。另外,請注意<% code %>的(de)XML等價表達是:
<jsp:scriptlet>
Code
</jsp:scriptlet>
JSP 聲明(míng)
JSP聲明(míng)用(yòng)來定義插入Servlet類的(de)方法和(hé)成員變量,其語法如(rú)下:
<%! Java Code %>
由于聲明(míng)不會(huì)有(yǒu)任何輸出,因此它們往往和(hé)JSP表達式或Scriptlet結合在一起使用(yòng)。例如(rú),下面的(de)JSP代碼片斷輸出自從服務器(qì)啓動(或Servlet類被改動并重新裝載以來)當前頁面被請求的(de)次數:
<%! private int accessCount = 0; %>
自從服務器(qì)啓動以來頁面訪問次數爲:
<%= ++accessCount %>
和(hé)Scriptlet一樣,如(rú)果要使用(yòng)字符串“%>”,必須使用(yòng)“%\>”代替。最後,<%! code %>的(de)XML等價表達方式爲:
<jsp:declaration>
Code
</jsp:declaration>
JSP 指令
JSP指令影響Servlet類的(de)整體結構,它的(de)語法一般如(rú)下:
<%@ directive a
深圳市南山區南山街(jiē)道南海(hǎi)大(dà)道西(xī)桂廟路(lù)北陽光(guāng)華藝大(dà)廈1棟4F、4G-04
咨詢電話(huà):136 8237 6272
大(dà)客戶咨詢:139 0290 5075
業(yè)務QQ:195006118
技術(shù)QQ:179981967