以下文字皆是我閱讀《JSP2.0 技術手冊》1-7 章的心得&筆記,此書做為 JSP 入門參考手冊,值得推薦。

1 page指令
1、page指令
主要作用為設定整個 JSP 網頁的屬性和相關功能。
主要屬性定義如下:

language = "scriptingLanguage"
指定服務器端腳本語言,默認 java

import="importList"
在程序中導入一個或多個類/包,在同一頁面,頁面指令的屬性只有import可以設置多次,JSP默認import屬性的值已有:"java.lang.*","java.servlet.*","java.servlet.jsp*","java.servlet.http.*"

contentType="text/html; charset=GBK"
指定 MIME 類型和 JSP 頁面的字符編碼格式,"MIME類型;字符集類型",默認值 "contentType="text/html; charset=ISO-8859-1"

pageEncoding = "cinfo"
表示 JSP 網頁的編碼方式,默認為 "ISO-8859-1"

isELIgnored = "true | false"
表示此 JSP 網頁是否忽略 EL表達式,默認為 false 不忽略 EL表達式

extends = "className"
主要指定此 JSP 網頁產生的 Servlet 是繼承哪個父類,默認可忽略

session = "true | false"
指定本頁Session是否參與會話,默認 true

buffer = "none | size in kb"
指定客戶端的輸出流中的緩存的模式,默認為 8kb

autoFlash = "true | false"
設置緩沖區填滿時是否進行緩沖自動刷新,值為false時,運行時會出現緩存溢出異常報錯,默認true

isThreadSafe = "true | false"
設置JSP是否支持多線層,值為 false 時限制每次只能有一個用戶訪問該頁面,默認為true

info = "text"
此 JSP 頁面的相關信息,該信息可由 servlet.getServletInfo() 方法獲得,默認可忽略

isErrorPage = "true | false"
指定當前頁面是否可以作為另一頁面的錯誤處理網頁,默認值false

errorPage = "error_url"
當如果發生異常錯誤是,網頁的重定向 URL,默認可忽略


2 include指令
2 include指令
在 JSP 編譯時插入一個包含文本或者代碼的文件,這個包含是靜態的,而包含的文件可以是 JSP 網頁、HTML 網頁、文本文件,或者是一段 Java 程序。指令語法如下:
<%@ include file="relativeURLspec" %>
注意:
包含文件中藥避免使用<html>..</html>、<body>
</body>,會影響原來的 JSP 網頁同樣標簽,產生錯誤。
包含是靜態包含其他的文件,即 file 不能為一變量 URL,而且 URL 路徑里面不能帶有任何參數。
包含文件中不能嵌套包含。

3 taglib指令
3 taglib指令
定義一個標簽庫以及其自定義標簽的前綴.
<%@ taglib uri="URIToTagLibrary" prefix="tagPrefix" %>
屬性
uri = "URIToTagLibrary" 一個相對或絕對的路徑
prefix = "tagPrefix" 在自定義標簽之前的前綴,比如,在 <public:loop> 中的 public。

附加:jspInit() 與 jspDestroy()
附加:jspInit() 與 jspDestroy()
如果 JSP 頁創建者希望 JSP 頁具有 init 和 destroy 方法時,必須使用腳本。具體來說,必須在 JSP 頁中包含聲明這些方法的 JSP 聲明。此類 JSP 頁必須與以下所示類似:

<%!
public void jspInit()


{
// do some initialization work
}
public void jspDestroy()


{
// do some finalization work
}
%>
<HTML>
<BODY>
Your JSP stuff here!
</BODY>
</HTML>


常用動作元素
5.1 <jsp:useBean>
實例化一個JavaBean,常用句法:
<jsp:useBean id="myName" scope="session" class="className" />

5.2 <jsp:setProperty>
<jsp:setProperty name="instanceName" property="*"/>

可以用四種不同的方法來指定屬性的信息:
①property="*"
這是一種設置Bean屬性的快捷方式,在Bean中,屬性的名字、類型必須和request對象中的參數名稱相匹配。由于在表單中傳過來的數據類型都是String類型的,JSP 內在的機制會把這些參數轉化成Bean 屬性對應的類型。

②property="propettyName"
使用request中的一個參數來指定Bean中的一個屬性值。Bean的屬性名必須和request中參數的名字相同,否則應用方法③。

③property="propettyName" param="parameterName"
使用request中的一個參數來指定Bean中的一個屬性值。

④property="propettyName" value="propertyValue"
使用指定的值來設定Bean屬性。


5.3 <jsp:getProperty>
訪問Bean的屬性并將它轉化成一個String ,發送到輸出流中。
<jsp:getProperty name="instanceName" property="nameOfProperty"/>

5.4 <jsp:include>
flush屬性必須設置成true,不能使用默認的false。
如果被包含的文件是動態的,還可以用jsp:param傳遞參數名和參數值。

5.5 <jsp:forward>
將客戶端的請求從一個JSP 頁面轉到另一個JSP 頁面。

5.6 <jsp:param>
用來提供key/value值,常和jsp:include、jsp:forward、jsp:plugin一起使用。句法:
<jsp:param name="paramName" value="paramValue" />

5.7 <jsp:plugin>
常用句法:
<jsp:plugin type=”applet” code=”myPathOfClass” codebase=”.” aligin=”bootom | top| middle | left | right” width=”width” height=”height” />

<jsp:fallback>text message for user </jsp:fallback>
用于插件不能啟動時顯示給用戶的一段文字。



Servlet API中的幾個對象
Servlet API中的幾個對象
JSP 提供了八個內部對象,而其中的五個內部對象對應于 Servlet API 中的七個對象,這也就使得我們正常理解并熟練使用 Servlet 中的這七個對象顯得尤其重要。這五個 JSP 的內部對象和 Servlet API 中的對象的對應關系是:
request對象對應于:javax.servlet.http.HttpServletRequest 和 javax.servlet.ServletRequest
response對象對應于:javax.servlet.http.HttpServletResponse 和 javax.servlet.ServletResponse
session對象對應于:javax.servlet.http.HttpSession
application對象對應于:javax.servlet.ServletContext
config對象對應于:javax.servlet.ServletConfig

javax.servlet.http.HttpServletRequest
這是一個接口,在我們提到接口之前,還是讓我們來復習一下Java中接口的一個初步的解釋:
接口在語法上與類相似,但是接口沒有實例,使用接口,只是指定類必須做什么而不是如何做。
HttpServletRequest接口用來處理一個對Servlet的HTTP格式的請求信息。

javax.servlet.ServletRequest
這也是一個接口,這個接口定義一個Servlet引擎產生的對象,通過這個對象,Servlet可以獲得客戶端請求的數據。這個對象通過讀取請求體的數據提供包括參數的名稱、值和屬性以及輸入流的所有數據。而javax.servlet.http.HttpServletRequest也只是該接口的一個擴展,也就是說,該接口的所有方法也可以被javax.servlet.http.HttpServletRequest所使用。

javax.servlet.http.HttpServletResponse接口
該接口用來描述一個返回到客戶端的HTTP回應。

javax.servlet.ServletResponse接口
該接口用來定義一個Servlet引擎產生的對象,通過這個對象,Servlet對客戶端的請求作出響應。這個響應應該是一個MIME實體,可能是一個 HTML頁、圖象數據或其他MIME的格式。javax.servlet.http.HttpServletResponse接口是該接口的擴展。

javax.servlet.http.HttpSession接口
該接口用來描述一個session,至于什么是session我想在這里就沒必要說了吧。

javax.servlet.ServletContext接口
該接口用來定義了一個Servlet的環境對象。也可是認為這是多個客戶端共享的信息,它與session的區別在于應用范圍的不同,session只對應于一個用戶。

javax.servlet.ServletConfig接口
該接口定義了一個對象,通過這個對象,Servlet引擎配置一個Servlet。每一個ServletConfig對象對應著一個唯一的Servlet。

javax.servlet.http.Cookie類
這個類描述了一個cookie,cookie的作用其實與session很類似,只是cookie保存在客戶端,session保存在服務器端。


request,response,session,application,out對象的常用調用的函數
request,response,session,application,out對象的常用調用的函數
引用自:http://java.ccidnet.com/art/297/20060319/483247_1.html
*****************************************************************
1.request對象
客戶端的請求信息被封裝在request對象中,通過它才能了解到客戶的需求,然后做出響應。它是HttpServletRequest類的實例。

序號 方 法 說 明
1 object getAttribute(String name) 返回指定屬性的屬性值

2 Enumeration getAttributeNames() 返回所有可用屬性名的枚舉

3 String getCharacterEncoding() 返回字符編碼方式

4 int getContentLength() 返回請求體的長度(以字節數)

5 String getContentType() 得到請求體的MIME類型

6 ServletInputStream getInputStream() 得到請求體中一行的二進制流

7 String getParameter(String name) 返回name指定參數的參數值

8 Enumeration getParameterNames() 返回可用參數名的枚舉

9 String[] getParameterValues(String name) 返回包含參數name的所有值的數組

10 String getProtocol() 返回請求用的協議類型及版本號

11 String getScheme() 返回請求用的計劃名,如:http.https及ftp等

12 String getServerName() 返回接受請求的服務器主機名

13 int getServerPort() 返回服務器接受此請求所用的端口號

14 BufferedReader getReader() 返回解碼過了的請求體

15 String getRemoteAddr() 返回發送此請求的客戶端IP地址

16 String getRemoteHost() 返回發送此請求的客戶端主機名

17 void setAttribute(String key,Object obj) 設置屬性的屬性值

18 String getRealPath(String path) 返回一虛擬路徑的真實路徑


*****************************************************************
2.response對象
response對象包含了響應客戶請求的有關信息,但在JSP中很少直接用到它。它是HttpServletResponse類的實例。

序號 方 法 說 明

1 String getCharacterEncoding() 返回響應用的是何種字符編碼

2 ServletOutputStream getOutputStream() 返回響應的一個二進制輸出流

3 PrintWriter getWriter() 返回可以向客戶端輸出字符的一個對象

4 void setContentLength(int len) 設置響應頭長度

5 void setContentType(String type) 設置響應的MIME類型

6 sendRedirect(java.lang.String location) 重新定向客戶端的請求


*****************************************************************
3.session對象
session對象指的是客戶端與服務器的一次會話,從客戶連到服務器的一個WebApplication開始,直到客戶端與服務器斷開連接為止。它是HttpSession類的實例.


序號 方 法 說 明

1 long getCreationTime() 返回SESSION創建時間

2 public String getId() 返回SESSION創建時JSP引擎為它設的惟一ID號

3 long getLastAccessedTime() 返回此SESSION里客戶端最近一次請求時間

4 int getMaxInactiveInterval() 返回兩次請求間隔多長時間此SESSION被取消(ms)

5 String[] getValueNames() 返回一個包含此SESSION中所有可用屬性的數組

6 void invalidate() 取消SESSION,使SESSION不可用

7 boolean isNew() 返回服務器創建的一個SESSION,客戶端是否已經加入

8 void removeValue(String name) 刪除SESSION中指定的屬性

9 void setMaxInactiveInterval() 設置兩次請求間隔多長時間此SESSION被取消(ms)


*****************************************************************
4.out對象
out對象是JspWriter類的實例,是向客戶端輸出內容常用的對象

序號 方 法 說 明

1 void clear() 清除緩沖區的內容

2 void clearBuffer() 清除緩沖區的當前內容

3 void flush() 清空流

4 int getBufferSize() 返回緩沖區以字節數的大小,如不設緩沖區則為0

5 int getRemaining() 返回緩沖區還剩余多少可用

6 boolean isAutoFlush() 返回緩沖區滿時,是自動清空還是拋出異常

7 void close() 關閉輸出流


*****************************************************************
5.page對象
page對象就是指向當前JSP頁面本身,有點象類中的this指針,它是java.lang.Object類的實例

序號 方 法 說 明

1 class getClass 返回此Object的類

2 int hashCode() 返回此Object的hash碼

3 boolean equals(Object obj) 判斷此Object是否與指定的Object對象相等

4 void copy(Object obj) 把此Object拷貝到指定的Object對象中

5 Object clone() 克隆此Object對象

6 String toString() 把此Object對象轉換成String類的對象

7 void notify() 喚醒一個等待的線程

8 void notifyAll() 喚醒所有等待的線程

9 void wait(int timeout) 使一個線程處于等待直到timeout結束或被喚醒

10 void wait() 使一個線程處于等待直到被喚醒

11 void enterMonitor() 對Object加鎖

12 void exitMonitor() 對Object開鎖


*****************************************************************
6.application對象
application對象實現了用戶間數據的共享,可存放全局變量。它開始于服務器的啟動,直到服務器的關閉,在此期間,此對象將一直存在;這樣在用戶的前后連接或不同用戶之間的連接中,可以對此對象的同一屬性進行操作;在任何地方對此對象屬性的操作,都將影響到其他用戶對此的訪問。服務器的啟動和關閉決定了application對象的生命。它是ServletContext類的實例。

序號 方 法 說 明

1 Object getAttribute(String name) 返回給定名的屬性值

2 Enumeration getAttributeNames() 返回所有可用屬性名的枚舉

3 void setAttribute(String name,Object obj) 設定屬性的屬性值

4 void removeAttribute(String name) 刪除一屬性及其屬性值

5 String getServerInfo() 返回JSP(SERVLET)引擎名及版本號

6 String getRealPath(String path) 返回一虛擬路徑的真實路徑

7 ServletContext getContext(String uripath) 返回指定WebApplication的application對象

8 int getMajorVersion() 返回服務器支持的Servlet API的最大版本號

9 int getMinorVersion() 返回服務器支持的Servlet API的最大版本號

10 String getMimeType(String file) 返回指定文件的MIME類型

11 URL getResource(String path) 返回指定資源(文件及目錄)的URL路徑

12 InputStream getResourceAsStream(String path) 返回指定資源的輸入流

13 RequestDispatcher getRequestDispatcher(String uripath) 返回指定資源的RequestDispatcher對象

14 Servlet getServlet(String name) 返回指定名的Servlet

15 Enumeration getServlets() 返回所有Servlet的枚舉

16 Enumeration getServletNames() 返回所有Servlet名的枚舉

17 void log(String msg) 把指定消息寫入Servlet的日志文件

18 void log(Exception exception,String msg) 把指定異常的棧軌跡及錯誤消息寫入Servlet的日志文件

19 void log(String msg,Throwable throwable) 把棧軌跡及給出的Throwable異常的說明信息 寫入Servlet的日志文件


*****************************************************************
7.exception對象
exception對象是一個例外對象,當一個頁面在運行過程中發生了例外,就產生這個對象。如果一個JSP頁面要應用此對象,就必須把isErrorPage設為true,否則無法編譯。他實際上是java.lang.Throwable的對象

序號 方 法 說 明

1 String getMessage() 返回描述異常的消息

2 String toString() 返回關于異常的簡短描述消息

3 void printStackTrace() 顯示異常及其棧軌跡

4 Throwable FillInStackTrace() 重寫異常的執行棧軌跡


*****************************************************************
8.pageContext對象
pageContext對象提供了對JSP頁面內所有的對象及名字空間的訪問,也就是說他可以訪問到本頁所在的SESSION,也可以取本頁面所在的application的某一屬性值,他相當于頁面中所有功能的集大成者,它的本 類名也叫pageContext。

序號 方 法 說 明

1 JspWriter getOut() 返回當前客戶端響應被使用的JspWriter流(out)

2 HttpSession getSession() 返回當前頁中的HttpSession對象(session)

3 Object getPage() 返回當前頁的Object對象(page)

4 ServletRequest getRequest() 返回當前頁的ServletRequest對象(request)

5 ServletResponse getResponse() 返回當前頁的ServletResponse對象(response)

6 Exception getException() 返回當前頁的Exception對象(exception)

7 ServletConfig getServletConfig() 返回當前頁的ServletConfig對象(config)

8 ServletContext getServletContext() 返回當前頁的ServletContext對象(application)

9 void setAttribute(String name,Object attribute) 設置屬性及屬性值

10 void setAttribute(String name,Object obj,int scope) 在指定范圍內設置屬性及屬性值

11 public Object getAttribute(String name) 取屬性的值

12 Object getAttribute(String name,int scope) 在指定范圍內取屬性的值

13 public Object findAttribute(String name) 尋找一屬性,返回起屬性值或NULL

14 void removeAttribute(String name) 刪除某屬性

15 void removeAttribute(String name,int scope) 在指定范圍刪除某屬性

16 int getAttributeScope(String name) 返回某屬性的作用范圍

17 Enumeration getAttributeNamesInScope(int scope) 返回指定范圍內可用的屬性名枚舉

18 void release() 釋放pageContext所占用的資源

19 void forward(String relativeUrlPath) 使當前頁面重導到另一頁面

20 void include(String relativeUrlPath) 在當前位置包含另一文件


*****************************************************************
9.config對象
config對象是在一個Servlet初始化時,JSP引擎向它傳遞信息用的,此信息包括Servlet初始化時所要用到的參數(通過屬性名和屬性值構成)以及服務器的有關信息(通過傳遞一個ServletContext對象)

序號 方 法 說 明

1 ServletContext getServletContext() 返回含有服務器相關信息的ServletContext對象

2 String getInitParameter(String name) 返回初始化參數的值

3 Enumeration getInitParameterNames() 返回Servlet初始化所需所有參數的枚舉
posted on 2008-08-09 10:12
黃小二 閱讀(231)
評論(0) 編輯 收藏 所屬分類:
J2EE