概述 Java Server Pages(JSP)使得我們能夠分離頁面的靜態HTML和動態部分
HTML可以用任何通常使用的Web制作工具編寫
編寫方式也和原來的一樣
動態部分的代碼放入特殊標記之內
大部分以
<%
開始
以
%>
結束
例如
下面是一個JSP頁面的片斷
如果我們用/title=Core+Web+Programming這個URL打開該頁面
則結果顯示
Thanks for ordering Core Web Programming
Thanks for ordering
<I><%= request
getParameter(
title
) %></I>
JSP頁面文件通常以
JSP為擴展名
而且可以安裝到任何能夠存放普通Web頁面的地方
雖然從代碼編寫來看
JSP頁面更象普通Web頁面而不象Servlet
但實際上
JSP最終會被轉換成正規的Servlet
靜態HTML直接輸出到和Servlet service方法關聯的輸出流
JSP到Servlet的轉換過程一般在出現第一次頁面請求時進行
因此
如果你希望第一個用戶不會由於JSP頁面轉換成Servlet而等待太長的時間
希望確保Servlet已經正確地編譯並裝載
你可以在安裝JSP頁面之後自己請求一下這個頁面
另外也請注意
許多Web服務器允許定義別名
所以一個看起來指向HTML文件的URL實際上可能指向Servlet或JSP頁面
除了普通HTML代碼之外
嵌入JSP頁面的其他成分主要有如下三種
腳本元素(Scripting Element)
指令(Directive)
動作(Action)
腳本元素用來嵌入Java代碼
這些Java代碼將成為轉換得到的Servlet的一部分
JSP指令用來從整體上控制Servlet的結構
動作用來引入現有的組件或者控制JSP引擎的行為
為了簡化腳本元素
JSP定義了一組可以直接使用的變量(預定義變量)
比如前面代碼片斷中的request就是其中一例
注意本文以JSP
規范為基礎
和
版相比
新版本的JSP作了許多重大的改動
雖然這些改動只會使JSP變得更好
但應注意
的JSP頁面幾乎和早期的JSP引擎完全不兼容
JSP語法概要表 JSP表達式 <%= expression %> 計算表達式並輸出結果
等價的XML表達是
<jsp:expression>
expression
</jsp:expression>
可以使用的預定義變量包括
request
response
out
session
application
config
pageContext
這些預定義變量也可以在JSP Scriptlet中使用
JSP Scriptlet <% code %> 插入到service方法的代碼
等價的XML表達是
<jsp:scriptlet>
code
</jsp:scriptlet>
JSP聲明 <%! code %> 代碼被插入到Servlet類(在service方法之外)
等價的XML表達是
<jsp:declaration>
code
</jsp:declaration>
page指令 <%@ page att=
val
%> 作用於Servlet引擎的全局性指令
等價的XML表達是
<jsp:directive
page att=
val
\>
合法的屬性如下表
其中粗體表示默認值
import=
package
class
contentType=
MIME
Type
isThreadSafe=
true|false
session=
true|false
buffer=
size kb|none
autoflush=
true|false
extends=
package
class
info=
message
errorPage=
url
isErrorPage=
true|false
language=
java
include指令 <%@ include file=
url
%> 當JSP轉換成Servlet時
應當包含本地系統上的指定文件
等價的XML表達是
<jsp:directive
include file=
url
\>
其中URL必須是相對URL
利用jsp:include動作可以在請求的時候(而不是JSP轉換成Servlet時)引入文件
JSP注釋 <%
comment
%> 注釋
JSP轉換成Servlet時被忽略
如果要把注釋嵌入結果HTML文檔
使用普通的HTML注釋標記<
comment
>
jsp:include動作 <jsp:include page=
relative URL
flush=
true
/> 當Servlet被請求時
引入指定的文件
如果你希望在頁面轉換的時候包含某個文件
使用JSP include指令
注意
在某些服務器上
被包含文件必須是HTML文件或JSP文件
具體由服務器決定(通常根據文件擴展名判斷)
jsp:useBean動作 <jsp:useBean att=val*/>
或者
<jsp:useBean att=val*>
</jsp:useBean>
尋找或實例化一個Java Bean
可能的屬性包括
id=
name
scope=
page|request
|session|application
class=
package
class
type=
package
class
beanName=
package
class
jsp:setProperty動作 <jsp:setProperty att=val*/>
設置Bean的屬性
既可以設置一個確定的值
也可以指定屬性值來自請求參數
合法的屬性包括
name=
beanName
property=
propertyName|*
param=
parameterName
value=
val
jsp:getProperty動作
<jsp:getProperty name=
propertyName
value=
val
/>
提取並輸出Bean的屬性
jsp:forward動作 <jsp:forward page=
relative URL
/>
把請求轉到另外一個頁面
jsp:plugin動作 <jsp:plugin attribute=
value
*>
</jsp:plugin>
根據浏覽器類型生成OBJECT或者EMBED標記
以便通過Java Plugin運行Java Applet
關於模板文本(靜態HTML) 許多時候
JSP頁面的很大一部分都由靜態HTML構成
這些靜態HTML也稱為
模板文本
模板文本和普通HTML幾乎完全相同
它們都遵從相同的語法規則
而且模板文本也是被Servlet直接發送到客戶端
此外
模板文本也可以用任何現有的頁面制作工具來編寫
唯一的例外在於
如果要輸出
<%
則模板文本中應該寫成
<\%
From:http://tw.wingwit.com/Article/program/Java/hx/201311/25583.html