JSP的基本構成
JSP頁面主要由指令標簽,注釋,嵌入Java代碼,JSP動作標簽,HTML標記語言等五個元素組成。
3個指令標簽
1 、page指令
page指令用戶定義JSP頁面中的全局屬性 ,Eg:<%@ page attr1=”value1” atrr2=”value2”.......%>
page指令對整個頁面有效,包括靜態的包含文件,但page指令不能用於被動態包含的文件,例如使用<jsp:include>包含的文件。在一個JSP頁面中可以使用多個page指令,但page指令中的屬性只能出現一次(import屬性除外)。
page指令的常用屬性如下:
(1) language屬性 該屬性用於設置JSP頁面使用的語言,目前只支持Java語言。例:<%@ page language=”java” %>
(2) extends屬性 該屬性用於設置JSP頁面所繼承的Java類,JSP和Servlet都可以繼承指定的父類,但該屬性並不常用.
(3) import屬性 該屬性用於設置JSP所導入的類包,JSP頁面可以嵌入Java代碼片段,這些Java代碼在調用API時需要導入相應的類包。例:<%@page import=”java.util.*” %>
(4) pageEncoding屬性 該屬性用於定義JSP頁面的編碼格式,指定的文件編碼格式。例:<%@ page pageEncoding=”UTF-8” %>
(5) contentType屬性 該屬性用於設置JSP頁面的MIME類型和字符編碼,瀏覽器會根據些解釋頁面。 例:<%@ page contentType=”text/html;charset=utf-8” %>
(6) session屬性 該屬性用於定義JSP頁面是否使用session會話對象,其值是boolean類型,默認值為true. Eg:<%@ page session=”true” %>
(7) buffer屬性 該屬性用於設置out對象所使用的緩沖區大小,默認大小是8KB,單位只能是8的倍數。 Eg:<%@ page buffer=”128KB” %>
(8) autoFlush屬性 該屬性用於定義JSP頁面緩沖存滿時是否自動刷新緩存。默認值為true,如果設置為false,則緩存填滿時可能會發生異常. Eg:<%@ page autoFlush=”true” %>
(9) info屬性 該屬性用於設置JSP頁面的一些相關信息,信息可以在Servlet接口的getServletInfo()方法中獲取得到。Eg:<%@page info=”This is a JSP” %>
(10) isErrorPage屬性 該屬性可以將當前頁面定義為錯誤頁面來處理另一個頁面轉發而來的錯誤,即異常處理。設置為true以后可以使用exception對象.
(11)errorPage屬性 該屬性用於定義此JSP頁面發生錯誤時所轉發到的另外一個JSP頁面,用於處理此頁面所發生的錯誤。 Eg:<%@page errorPage=”error.jsp” %>
(12)isELIgnored屬性 該屬性用於定義些頁面是否忽略EL表達式的使用。
2 、include指令
Include指令用於文件包含,該指令可以在一個JSP頁面中包含另外一個文件中的內容,並且只能支持靜態包含,意思是被包含文件的所有內容都被原樣包含到時該JSP頁面中,被包含的文件可以是一段Java代碼,HTML代碼,或者是另一個JSP頁面。Eg:<%@include file=”other.jsp” %>
3 、taglib指令
taglib指令允許用戶使用標簽庫自定義新的標簽,
Eg:<% 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的值既可以直接給出,也可以在請求的時候動態計算
獲得上個頁面傳個來的參數值。
2.jsp:include動作 (拿目標頁面插入原有頁面)
該動作是一個動態的include指令,也用於帶入某個頁面,他不會導入被include頁面的編譯指令,僅僅導入頁面的body內容插入到本頁面,該動作把指定文件插入正在生成的頁面。
其語法如下: flush:用於指定輸出緩存是否轉移到被導入的文件中, true:包含在被導入的文件中 false:包含在源文件中。
前面已經介紹過include指令,它是在JSP文件被轉換成Servlet的時候引入文件,而這里的jsp:include動作不同,插入文件的時間是在頁面被請求的時候。jsp:include動作的文件引入時間決定了它的效率要稍微差一點,而且被引用文件不能包含某些JSP代碼(例如不能設置HTTP頭),但它的靈活性卻要好得多。
例如,下面的JSP頁面把4則新聞摘要插入一個“What''s New ?”頁面。改變新聞摘要時只需改變這四個文件,而主JSP頁面卻可以不作修改:
-
<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
-
-
<HTML>
-
<HEAD>
-
<TITLE>在JSP中使用JavaBean</TITLE>
-
</HEAD>
-
<BODY>
-
<CENTER>
-
<TABLE BORDER=5>
-
<TR><TH CLASS="TITLE">
-
在JSP中使用JavaBean </TABLE>
-
</CENTER>
-
<P>
-
<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) 返回給定名的屬性值
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的對象。
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初始化所需所有參數的枚舉
原文:https://blog.csdn.net/huanyuminhao/article/details/52048947