天天看點

JSP内容複習JSP的3個編譯指令,7個動作指令,9個内置對象

JSP的3個編譯指令,7個動作指令,9個内置對象

三個編譯指令(通知servlet引擎的處理消息,隻在JSP轉換成Servlet時起作用)

1.編譯指令 page

page指令使用者定義JSP頁面中的全局屬性,它的文法格式如下:

<%page

{language="java"}

{extends="package.class"}

{import="{package.class|package.*},..."}

{session="true | false"}

{buffer="none | 8kb | sizekb"}

{ false"}

{isThreadSafe="true | false"}

{info="text"}

{errorPage="relativeURL"}

{contentType="mimeType [;charset=characterSet]" | "text/html ; charset=ISO-8859-1"}

{isErrorPage="true | false"}

{pageEncoding="charset=characrerSet | ISO-8859-1"}

%> 

    page指令對整個頁面有效,包括靜态的包含檔案,但page指令不能用于被動态包含的檔案,例如使用<jsp:include>包含的檔案。在一個JSP頁面中可以使用多個page指令,但page指令中的屬性隻能出現一次(import屬性除外)。

2、include指令

include指令用于在JSP頁面中包含其他檔案,它的文法格式如下: 

<% include file="路徑名">

include指令僅有一個屬性file,其值為檔案的相對路徑。include指令包含的過程是靜态的,包含的檔案可以是JSP、HTML或者Inc檔案等。

3、taglib指令

taglib指令允許使用者使用标簽庫自定義新的标簽,它的文法格式如下: 

<% taglib uri="taglibURI" prefix="tabPrefix"%>

taglib指令中的uri屬性用于根據标簽的字首對自定義的标簽進行唯一的命名,其值可以食相對路徑,就對路徑或标簽庫描述檔案。屬性prefix制定了标簽的字首。

7個動作指令(用戶端在請求時期動态被執行的,也就是說每次通路用戶端都有可能重新執行)

動作指令與編譯指令不間,編譯指令是通知 Servlet 引擎的處理消息,而動作指令隻是運作時的腳本動作。編譯指令在将JSP 編譯成 Servlet 時起作用:處理指令通常可替換成 Java腳本,是 JSP腳本的标準化寫法。

 JSP7 個 動作指令如下 :

    jsp:forward: 執行頁面轉向,将請求的處理轉發到下一個頁面。

    jsp:param: 用于傳遞參數,必須與其他支援參數曲标簽一起使用。

    jsp:include: 用于動态引入一個 JSP 頁面。

    jsp:p1ugin: 用于下載下傳 JavaBean 或 Applet 到用戶端執行。

    jsp:useBean: 使用 JavaBean。

    jsp:setProperty: 修改 JavaBean 執行個體的屬性值。

    jsp:getProperty: 擷取 JavaBean 執行個體的屬性值。

下面依次講解這些動作指令。

1.jsp:forward動作 (拿目标頁面代替原有頁面)

  jsp:forward動作把請求轉到另外的頁面。可以轉發靜态的HTML頁面,也可以轉發動态的JSP頁面,或者轉發到容器中的servlet jsp:forward标記隻有一個屬性page。 page屬性包含的是一個相對URL。 page的值既可以直接給出,也可以在請求的時候動态計算, 如下面的例子所示:    此頁面在轉發時增加惡劣一個參數 參數名為 age 值為 29;

<!--request.getParamenter("age"-->

獲得上個頁面傳個來的參數值

2.jsp:include動作 (拿目标頁面插入原有頁面)

該動作是一個動态的include指令,也用于帶入某個頁面,他不會導入被include頁面的編譯指令,僅僅導入頁面的body内容插入到本頁面  該動作把指定檔案插入正在生成的頁面。其文法如下:   flush:用于指定輸出緩存是否轉移到被導入的檔案中, true:包含在被導入的檔案中 false:包含在源檔案中  前面已經介紹過include指令,它是在JSP檔案被轉換成Servlet的時候引入檔案,而這裡的jsp:include動作不同,插入檔案的時間是在頁面被請求的時候。jsp:include動作的檔案引入時間決定了它的效率要稍微差一點,而且被引用檔案不能包含某些JSP代碼(例如不能設定HTTP頭),但它的靈活性卻要好得多。  例如,下面的JSP頁面把4則新聞摘要插入一個“What''s New ?”頁面。改變新聞摘要時隻需改變這四個檔案,而主JSP頁面卻可以不作修改:     

  

      </CENTER>

  <P>

  Here is a summary of our four most recent news stories:

  <OL>

  <LI><jsp:include page="news/Item1.html" flush="true"/>

  <LI><jsp:include page="news/Item2.html" flush="true"/>

  <LI><jsp:include page="news/Item3.html" flush="true"/>

  <LI><jsp:include page="news/Item4.html" flush="true"/>

  </OL> 

3..jsp:useBean動作 

useBean:用于在jsp頁面中初始化一個java執行個體(如果多個jsp中需要重複使用某段代碼,可以把這段代碼定義成java類在頁面中引用)  

jsp:useBean動作用來裝載一個将在JSP頁面中使用的JavaBean。這個功能非常有用,因為它使得我們既可以發揮Java元件重用的優勢,同時也避免了損失JSP差別于Servlet的友善性。

jsp:useBean動作最簡單的文法為:<jsp:useBean id="JavaBean的名稱" class="package.class"包名.類名" scope="有效範圍"/>

這行代碼的含義是:“建立一個由class屬性指定的類的執行個體,然後把它綁定到其名字由id屬性給出的變量上”。不過,就象我們接下來會看到的,定義一個scope屬性可以讓Bean關聯到更多的頁面,它可接受四個值:request、session、page、application。此時,jsp:useBean動作隻有在不存在同樣id和scope的Bean時才建立新的對象執行個體,同時,獲得現有Bean的引用就變得很有必要。 

 獲得Bean執行個體之後,要修改Bean的屬性既可以通過jsp:setProperty動作進行,也可以在Scriptlet中利用id屬性所命名的對象變量,通過調用該對象的方法顯式地修改其屬性。這使我們想起,當我們說“某個Bean有一個類型為X的屬性foo”時,就意味着“這個類有一個傳回值類型為X的getFoo方法,還有一個setFoo方法以X類型的值為參數”。  有關jsp:setProperty動作的詳細情況在後面讨論。但現在必須了解的是,我們既可以通過jsp:setProperty動作的value屬性直接提供一個值,也可以通過param屬性聲明Bean的屬性值來自指定的請求參數,還可以列出Bean屬性表明它的值應該來自請求參數中的同名變量。  

在JSP表達式或Scriptlet中讀取Bean屬性通過調用相應的getXXX方法實作,或者更一般地,使用jsp:getProperty動作。  

注意,包含Bean的類檔案應該放到伺服器正式存放Java類的目錄下,而不是保留給修改後能夠自動裝載的類的目錄。例如,對于Java Web Server來說,Bean和所有Bean用到的類都應該放入classes目錄,或者封裝進jar檔案後放入lib目錄,但不應該放到servlets下。 id:javaBean的執行個體名 class: javaBean的實作類 scope:指定javaBean執行個體的生存範圍 page:javaBean僅在該頁面有效 request:javaBean在本次請求中有效 session: javaBean在本次session内有效 application: javaBean在本應用内一直有效  下面是一個很簡單的例子,它的功能是裝載一個Bean,然後設定/讀取它的message屬性。 

3.1關于jsp:useBean的進一步說明  

使用Bean最簡單的方法是先用下面的代碼裝載Bean:  

<jsp:useBean id="name" class="package.class" />

    然後通過jsp:setProperty和jsp:getProperty修改和提取Bean的屬性。

不過有兩點必須注意。  

第一,我們還可以用下面這種格式執行個體化Bean:

<jsp:useBean ...>

  Body

  </jsp:useBean>

 它的意思是,隻有當第一次執行個體化Bean時才執行Body部分,如果是利用現有的Bean執行個體則不執行Body部分。正如下面将要介紹的,jsp:useBean并非總是意味着建立一個新的Bean執行個體。  

第二,除了id和class外,jsp:useBean還有其他三個屬性,即:scope、type、beanName。  

id:命名引用該Bean的變量。如果能夠找到id和scope相同的Bean執行個體,jsp:useBean動作将使用已有的Bean執行個體而不是建立新的執行個體。  

class:指定Bean的完整包名。   

scope:指定Bean在哪種上下文内可用,可以取下面的四個值之一:page、request、session和application。  預設值是page,表示該Bean隻在目前頁面内可用(儲存在目前頁面的PageContext内)。  

request表示該Bean在目前的客戶請求内有效(儲存在ServletRequest對象内)。  

session表示該Bean對目前HttpSession内的所有頁面都有效。   

最後,如果取值application,則表示該Bean對所有具有相同ServletContext的頁面都有效。   

scope之是以很重要,是因為jsp:useBean隻有在不存在具有相同id和scope的對象時才會執行個體化新的對象;

如果已有id和scope都相同的對象則直接使用已有的對象,此時jsp:useBean開始标記和結束标記之間的任何内容都将被忽略。  

type:指定引用該對象的變量的類型,它必須是Bean類的名字、超類名字、該類所實作的接口名字之一。請記住變量的名字是由id屬性指定的。 

beanName:指定Bean的名字。如果提供了type屬性和beanName屬性,允許省略class屬性。

4.jsp:setProperty動作 

  jsp:setProperty用來設定已經執行個體化的Bean對象的屬性,有兩種用法。首先,你可以在jsp:useBean元素的外面(後面)使用jsp:setProperty,如下所示:    ...     此時,不管jsp:useBean是找到了一個現有的Bean,還是新建立了一個Bean執行個體,jsp:setProperty都會執行。第二種用法是把jsp:setProperty放入jsp:useBean元素的内部,如下所示:    ...       此時,jsp:setProperty隻有在建立Bean執行個體時才會執行,如果是使用現有執行個體則不執行jsp:setProperty。  jsp:setProperty動作有下面四個屬性:name:表示要設定屬性的是哪個Bean。  property:表示要設定哪個屬性。有一個特殊用法:如果property的值是"*",表示所有名字和Bean屬性名字比對的請求參數都将被傳遞給相應的屬性set方法。  value:value屬性是可選的。該屬性用來指定Bean屬性的值。字元串資料會在目标類中通過标準的valueOf方法自動轉換成數字、boolean、Boolean、byte、Byte、char、Character。例如,boolean和Boolean類型的屬性值(比如“true”)通過Boolean.valueOf轉換,int和Integer類型的屬性值(比如"42")通過Integer.valueOf轉換。  value和param不能同時使用,但可以使用其中任意一個。  Param:param是可選的。它指定用哪個請求參數作為Bean屬性的值。如果目前請求沒有參數,則什麼事情也不做,系統不會把null傳遞給Bean屬性的set方法。是以,你可以讓Bean自己提供預設屬性值,隻有當請求參數明确指定了新值時才修改預設屬性值。  例如,下面的代碼片斷表示:如果存在numItems請求參數的話,把numberOfItems屬性的值設定為請求參數numItems的值;否則什麼也不做。    如果同時省略value和param,其效果相當于提供一個param且其值等于property的值。進一步利用這種借助請求參數和屬性名字相同進行自動指派的思想,你還可以在property(Bean屬性的名字)中指定“*”,然後省略value和param。此時,伺服器會檢視所有的Bean屬性和請求參數,如果兩者名字相同則自動指派。  下面是一個利用JavaBean計算素數的例子。如果請求中有一個numDigits參數,則該值被傳遞給Bean的numDigits屬性;numPrimes也類似。  JspPrimes.jsp  

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

  <HTML>

  <HEAD>

  <TITLE>在JSP中使用JavaBean</TITLE>

  </HEAD>

  <BODY>

  <CENTER>

  <TABLE BORDER=5>

  <TR><TH CLASS="TITLE">

  在JSP中使用JavaBean</TABLE>

  </CENTER>

  <jsp:useBean id="primeTable" class="hall.NumberedPrimes" />

  <jsp:setProperty name="primeTable" property="numDigits" />

  <jsp:setProperty name="primeTable" property="numPrimes" />

  Some <jsp:getProperty name="primeTable" property= "numDigits" />

  digit primes:

  <jsp:getProperty name="primeTable" property="numbered List" />

  </BODY>

  </HTML>

5.jsp:getProperty動作

   jsp:getProperty動作提取指定Bean屬性的值,轉換成字元串,然後輸出。jsp:getProperty有兩個必需的屬性,即:name,表示Bean的名字;property,表示要提取哪個屬性的值。下面是一個例子,更多的例子可以在前文找到。    ...   

<jsp:useBean id="itemBean" ... />

  ...

  <UL>

  <LI>Number of items:

  <jsp:getProperty name="itemBean" property="numItems" />

  <LI>Cost of each:

  <jsp:getProperty name="itemBean" property="unitCost" />

  </UL>    

 6.jsp:plugin動作 (用于下載下傳伺服器端的javaBean或applet到用戶端)

  jsp:plugin動作用來根據浏覽器的類型,插入通過Java插件運作Java Applet所必需的OBJECT或EMBED元素。

<jsp:plugin  

  type="bean | applet"   : 被執行的java程式的類型

  code="classFileName" :被執行的檔案名,必須以  .class 結尾

  codebase="classFileDirectoryName"   :被執行檔案的所在目錄

  [ name="instanceName" ] :給程式起一個名字用來辨別該程式

  [ archive="URIToArchive, ..." ] :指向一些要預先載入的将要使用到的類

  [ align="bottom | top | middle | left | right" ] :

  [ height="displayPixels" ]

  [ width="displayPixels" ]

  [ hspace="leftRightPixels" ] 

  [ vspace="topBottomPixels" ]

  [ jreversion="JREVersionNumber | 1.1" ]   :能正确運作改程式必須的JRE的版本

  [ nspluginurl="URLToPlugin" ]  

  [ iepluginurl="URLToPlugin" ] >

  [ <jsp:params>

  [ <jsp:param name="parameterName" value="{parameterValue | <%= expression %>}" /> ]+

  </jsp:params> ]

  [ <jsp:fallback> text message for user </jsp:fallback> ]  :當不能正确顯示該Applet時,顯示該指令中的文本提示

 <jsp:plugin>

7.jsp:param 用于設定參數值,

這個指令不能單獨使用 可以與以下三個指令結合使用:

jsp:include :用于将參數值出入被導入頁面

jsp:forword : 用于将參數值傳入被轉向頁面

jsp:plugin : 用于将參數值傳入頁面中javaBean的執行個體

 9個内置對象

 JSP中的内置對象(9個)

對象名                         對象的類型                     範圍

pageContext         Javax.servlet.jsp.PageContext             Page

page                 Javax.servlet.jsp.HttpJspPage             Page

request               Javasx.servlet.jsp.HttpServletRequest         Request

response           Javax.servlet.jsp.HttpServletResponse           Page

session                  Javax.servlet.HttpSessio                   Session

application         Javax.servlet.ServletContext             Application

out                 Javax.servlet.jsp.JspWriter             Page

config                 Javax.servlet.ServletConfig                 Page

exception           Java.lang.ThrowAble                     page

内置對象是不需要聲明,直接可以在JSP中使用的對象,JSP有以下幾種内置對象: 

1.request對象 

request表示HttpServletRequest對象。它包含了有關浏覽器請求的資訊,并且提供了幾個用于擷取cookie, header, 和session資料的有用的方法。用戶端的請求資訊被封裝在request對象中,通過它才能了解到客戶的需求,然後做出響應。 

1 Object getAttribute(String name) 傳回指定屬性的屬性值,該屬性不存在時傳回null。 

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

3 String getAuthType() ;傳回用來保護servlet的認證方法的名稱,未受保護時傳回null。 

4 String getCharacterEncoding() 傳回字元編碼方式 

5 int getContentLength() 傳回請求體的長度(以位元組數),不能确定長度時傳回-1。 

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

7 String getContentPath() 傳回請求的路徑。 

8 Cookie[] getCookies() 傳回用戶端所有的Cookie的數組。 

9 Enumeration getHeaderNames() 傳回所有HTTP頭的名稱的集合。 

10 Enumeration getHeaders( String name ) 傳回指定HTTP頭的所有值的集合。 

11 String getHeader( String name ) 傳回指定名稱的HTTP頭的資訊。 

12 long getDateHeader( String name ) 傳回指定名稱的Data類型的HTTP頭的資訊。 

13 int getIntHeader( String name ) 傳回指定名稱的Int類型的HTTP頭的資訊。 

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

15 Locale getLocale() 傳回目前頁的Locale對象,可以在response中設定。 

16 Enumeration getLocales() 傳回請求中所有的Locale對象的集合。 

17 String getLocalName() 擷取響應請求的伺服器端主機名。 

18 String getLocalAddr() 擷取響應請求的伺服器端位址。 

19 int getLocalPort() 擷取響應請求的伺服器端端口 

20 String getMethod() 擷取用戶端向伺服器端發送請求的方法(GET、POST)。 

21 String getParameter(String name) 傳回name指定參數的參數值 

22 Map getParameterMap() 該方法傳回包含請求中所有參數的一個Map對象。 

23 Enumeration getParameterNames() 傳回請求中所有參數的集合。 

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

25 String getQueryString() 傳回get方法傳遞的參數字元串,該方法不分解出單獨的參數。 

26 String getPathInfo() 取出請求中處于ServletPath和QueryString之間的額外資訊。 

27 String getPathTranslated() 傳回用getPathInfo()方法取得的路徑資訊的實際路徑。 

28 String getProtocol() 傳回請求使用的協定。可以是HTTP1.1或者HTTP1.0。 

29 BufferedReader getReader() 傳回請求的輸入流對應的Reader對象,該方法和getInputStream()方法在一個頁面中隻能調用一個。 

30 String getRemoteAddr() 傳回發送此請求的用戶端IP位址 

31 String getRemoteHost() 傳回發送此請求的用戶端主機名 

32 String getRemoteUser() 傳回經過用戶端驗證的使用者名,未經驗證傳回null。 

33 int getRemotePort() 傳回送出請求的用戶端主機端口。 

34 String getRealPath(String path) 傳回一虛拟路徑的真實路徑 

35 RequestDispatcher getRequestDispatcher( String path ) 按給定的路徑生成資源轉向處理擴充卡對象。 

36 String getRequestedSessionId() 傳回請求的session的辨別。 

37 String RequestURI() 傳回送出請求的用戶端位址,但是不包括請求的參數字元串。 

38 StringBuffer getRequestURI() 傳回響應請求的伺服器端位址 

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

40 String getServerName() 傳回響應請求的伺服器名稱。 

41 String getServletPath() 擷取用戶端所請求的腳本檔案的檔案路徑。 

42 int getServerPort() 傳回伺服器接受此請求所用的端口号 

43. void removeAttribute( String name ) 在屬性清單中删除指定名稱的屬性。 

44. void setAttribute( String name, Object value ) 在屬性清單中添加/删除指定的屬性。 

45. void setCharacterEncoding( String name ) 設定請求的字元編碼格式。 

46. HttpSession getSession() ; 

HttpSession getSession( boolean create ) 擷取session,如果create為true,在無session的情況下建立一個。 

47. boolean isRequestedSessionIdFromCookie() 檢查請求的會話ID是否為通過Cookie傳入。 

48. boolean isRequestedSessionIdFromURL() 檢查請求的會話ID是否為通過URL傳入。 

49. boolean isRequestedSessionIdValid() 檢查請求的會話ID是否仍然有效。 

50. boolean isSecure() 檢查請求是否使用安全連結,如果HTTPS等。 

51. boolean isUserInRole( String role ) 檢查已經通過驗證的使用者是否在是role所指定的角色。 

52. Principal getUserPrincipal() 傳回包含使用者登陸名的一個java.security.Principal對象。 

成員: 

String BASIC_AUTH = "BASIC" 

String CLIENT_CERT_AUTH = "CLIENT_CERT" 

String DIGEST_AUTH = "DIGEST" 

String FORM_AUTH = "FORM" 

2.response對象 response 

表示HttpServletResponse對象,主要将JSP容器處理後的結果傳回到用戶端。 

1 void addCookie( Cookie cookie ) 添加一個Cookie對象,儲存用戶端資訊。 

2 void addDateHeader( String name, long value ) 添加一個日期類型的HTTP頭資訊,覆寫同名的HTTP頭資訊。 

3 void addHeader( String name, String value ) 添加一個HTTP頭,覆寫同名的舊HTTP頭。 

4 void addIntHeader( String name, int value ) 添加一個整型的HTTP頭,覆寫同名的舊HTTP頭。 

5 boolean containsHeader( String name ) 判斷指定的HTTP頭是否存在。 

6 String encodeRedirectURL( String url ) 對sendRedirect()方法使用的URL進行編碼。 

7 String encodeURL( String url ) 将URL予以編碼,回傳包含session ID的URL。 

8 void flushBuffer() 強制把目前緩沖區的内容發送到用戶端。 

9 int getBufferSize() 取得以kb為機關的緩沖區大小。 

10 String getCharacterEncoding() 擷取響應的字元編碼格式。 

11 String getContentType() 擷取響應的類型。 

12 Locale getLocale() 擷取響應的Locale對象。 

13 ServletOutputStream getOutputStream() 傳回用戶端的輸出流對象。 

14 PrintWriter getWriter() 擷取輸出流對應的writer對象。 

15 boolean isCommitted() 判斷伺服器端是否已經将資料輸出到用戶端。 

16 void reset() 清空buffer中的所有内容。 

17 void resetBuffer() 情況buffer中所有的内容,但是保留HTTP頭和狀态資訊。 

18 void sendError( int xc, String msg ) 

void sendError( int xc ) 發送錯誤,包括狀态碼和錯誤資訊。 

19 void sendRedirect( String locationg ) 把響應發送到另外一個位置進行處理。 

20 void setBufferSize( int size ) 設定以kb為機關的緩沖區大小。 

21 void setCharacterEncoding( String charset )設定響應使用的字元編碼格式。 

22 void setContentLength( int length ) 設定響應的BODY長度。 

23 void setContentType( String type ) 設定響應的類型。 

24 void setDateHeader( String name, long value ) 設定指定名稱的Data類型的HTTP頭的值。 

25 void setHeader( String name, String value ) 設定指定名稱的HTTP頭的值。 

26 void setIntHeader( String name, int value ) 設定指定名稱的int類型的HTTP頭的值。 

27 void setStatus( int xc ) 設定響應狀态碼,新值會覆寫目前值。 

成員(HTTP狀态碼): 

int SC_CONTINUE = 100 int SC_SWITCHING_PROTOCOLS = 101 

int SC_OK = 200 int SC_NON_AUTHORITATIVE_INFORMATION = 203 

int SC_ACCEPTED = 202 int SC_CREATED = 201 

int SC_NO_CONTENT = 204 int SC_RESET_CONTENT = 205 

int SC_PARTIAL_CONTENT = 206 int SC_MULTIPLE_CHOICES = 300 

int SC_MOVED_PERMANENTLY = 301 int SC_MOVED_TEMPORARILY = 302 

int SC_FOUND = 302 int SC_SEE_OTHER = 303 

int SC_NOT_MODIFIED = 304 int SC_USE_PROXY = 305 

int SC_TEMPORARY_REDIRECT = 307 int SC_BAD_REQUEST = 400 

int SC_UNAUTHORIZED = 401 int SC_PAYMENT_REQUIRED = 402 

int SC_FORBIDDEN = 403 int SC_NOT_FOUND = 404 

int SC_METHOD_NOT_ALLOWED = 405 int SC_NOT_ACCEPTABLE 

3.session對象 

session表示一個請求的javax.servlet.http.HttpSession對象。指的是用戶端與伺服器的一次會話,從客戶連到伺服器的一個WebApplication開始,直到用戶端與伺服器斷開連接配接為止。 

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 對象是javax.jsp.JspWriter的一個執行個體,并提供了幾個方法使你能用于向浏覽器回送輸出結果。 

1 void clear() 清除緩沖區的内容,但是不輸出到用戶端。 

2 void clearBuffer() 清除緩沖區的目前内容,并輸出到用戶端。 

3 void close()  關閉輸出流,清除所有内容。 

4 void flush() 輸出緩沖區裡面的資料。 

5 int getBufferSize() 傳回緩沖區以位元組數的大小,如不設緩沖區則為0 

6 int getRemaining() 傳回緩沖區還剩餘多少可用 

7 boolean isAutoFlush() 傳回緩沖區滿時,是自動清空還是抛出異常 

8. void newLine() 輸出一個換行字元。 

9. void print( boolean b ) 将指定類型的資料輸出到Http流,不換行 

10. void println( boolean b ) 将指定類型的資料輸出到Http流,并輸出一個換行符。 

11. 

Appendable append( char c ) 

Appendable append( CharSequence cxq, int start, int end ) 

Appendable append( CharSequence cxq ) 

将一個字元或者實作了CharSequence接口的對象添加到輸出流的後面。 

int DEFAULT_BUFFER = 0 - 預設緩沖區大小 

int NO_BUFFER = -1 - writer是否處于緩沖輸出狀态 

int UNBOUNDED_BUFFER = -2 - 是否限制緩沖區大小 

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對象 

applicaton 表示一個javax.servlet.ServletContext對象。他實作了使用者間資料的共享,可存放全局變量。它 

開始于伺服器的啟動,直到伺服器的關閉,在此期間,此對象将一直存在;這樣在使用者的前後連接配接或不同使用者之 

間的連接配接中,可以對此對象的同一屬性進行操作;在任何地方對此對象屬性的操作,都将影響到其他使用者對此的 

通路。伺服器的啟動和關閉決定了application對象的生命。 

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

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的對象。 

8.pageContext對象 

pageContext表示一個javax.servlet.jsp.PageContext對象。pageContext對象提供了對JSP頁面内所有的對象及 

名字空間的通路,也就是說他可以通路到本頁所在的SESSION,也可以取本頁面所在的application的某一屬性值 

。 

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表示一個javax.servlet.ServletConfig對象。 

config對象是在一個Servlet初始化時,JSP引擎向它傳遞資訊用的,此資訊包括Servlet初始化時所要用到的參 

數(通過屬性名和屬性值構成)以及伺服器的有關資訊(通過傳遞一個ServletContext對象。) 

1 ServletContext getServletContext() 傳回含有伺服器相關資訊的ServletContext對象 

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

3 Enumeration getInitParameterNames() 傳回Servlet初始化所需所有參數的枚舉 

null