JSP學習筆記(一)

JSP的內置對象

是web容器創建的一組對象,不使用new關鍵字就可以使用的內置對象。

JSP的九大內置對象:

常用:out,request,response,session,application

不常用:page,pageContext,exception,config

web程序的請求響應模式

用戶發送請求(request)

服務器給用戶響應(response)

緩衝區:Buffer,所謂緩衝區就是內存的一塊區域用來保存臨時數據

out對象:

是JspWriter類的實例是向客戶端輸出內容常用的對象。

常用方法如下:

1. void println()向客戶端打印字符串

2. void clear()清除緩衝區的內容,如果在flush之後調用會拋出異常

3. void clearBuffer()清除緩衝區的內容,如果在flush之後調用不會拋出異常

4. void flush()將緩衝區內容輸出到客戶端

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

6. int getRemaining()返回緩衝區還剩餘多少可用

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

8. void close()關閉輸出流

get與post區別

表單有兩種提交方式:

1. get:以明文的方式通過URL提交,數據在URL中可以看到提交的數據最多不超多2KB, 安全性較低但是效率比post方式高。適合提交數據量不大,安全性不高的數據。 比如:搜索、查詢等功能。

2. post:將用戶提交的信息封裝在HTML HEADER內。適合提交數據量大,安全性高的 用戶信息,比如:註冊、修改、上傳等功能。

request對象

客戶端的請求信息被封裝在request對象中,通過它才能瞭解到客戶的需求,然後做出響應。他是HttpServletRequest類的實例。request對象具有請求域,即完成客戶端的請求之前,該對象一直有效。

常用方法如下:

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

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

3. void setAttribute(String,Object)存儲此請求中的屬性

4. object getAttribute(String name)返回指定屬性的屬性值

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

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

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

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

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

10. void setCharacterEncoding()設置請求的字符編碼方式

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

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

13. String getRealPath(String path)返回虛擬路徑的真實路徑

14. String request.getContextPath()返回上下文路徑

response對象

response對象包含了響應客戶端請求的有關信息,但在JSP中很少直接用到它。他是HttpServletResponse類的實例。response對象具有頁面作用域,即訪問一個頁面時,該頁面內的response對象只能對這次訪問有效,其他頁面的response對象對當前頁面無效。

常用方法如下:

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

2. void setContentType(String type)設置想用的MIME

3. PrintWriter getWriter()返回可以向客戶端輸出字符的一個對象(注意比較: PrintWriter與內置out對象的區別)

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

請求轉發與請求重定向

請求重定向:客戶端行為,response.sendRedirect(),從本質上講等同於兩次請求,前一次的請求對象不會保存,地址欄的URL地址會改變。

請求轉發:服務器行為,request.getRequestDispatcher().forward(req,resp);是一次請求,轉發後請求對象會保存,地址欄的URL地址不會改變。

session

session表示客戶端與服務器的一次會話

Web中的session指的是用戶在瀏覽某個網站時,從進入網站到瀏覽器關閉所經過的這段時間愛你,也就是用戶瀏覽這個網站所花費的時間

在服務器的內存中保存不同用戶的session

session對象

1.session對象是一個JSP內置對象

2.session對象在第一個JSP頁面被裝載時自動創建,完成會話期管理

3.從一個客戶打開瀏覽器並連接到服務器開始,到客戶關閉瀏覽器離開這個服務器 結束,被稱為一個會話

4.當一個客戶訪問一個服務器時,可能會在服務器的幾個頁面之間切換,服務器應 該當通過某種辦法知道這是一個用戶

5.session對象是HttpSession類的實例

session對象的常用方法如下:

1. long getCreationTime()返回session創建時間

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

3. public Object setAttribute(String name,Object value)使用指定名稱將對象綁定到 此會話

4. public Object getAttribute(String name)返回與此會話中的指定名稱綁定在一起 的對象,如果沒有對象綁定在該名稱下,則返回null

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

6. int getMaxInactiveInterval()返回兩次請求間隔多長時間此session被取消(單位 秒)

session的生命週期

創建:

當客戶端第一次訪問某個JSP或是Servlet時候,服務器會為當前會話創建一個 SessionId,每次客戶端向服務端發送請求時,都會將此SessionId攜帶過去,服務 端會對此SessionId進行校驗。

活動:

l 某次會話當中通過超鏈接打開的新頁面屬於同一會話

l 只要當前會話頁面沒有全部關閉,重新打開新的瀏覽器串口訪問同一項目資源時屬於同一次會話

l 除非本次會話所有的頁面都關閉後再重新訪問某個jsp或者servlet將會創建新的會話

注意事項:注意原有會話還存在,只是這個舊的sessionid仍然存在於服務端, 只不過再也沒有客戶端會攜帶它然後交於服務端校驗。

銷燬:

session的銷燬只有三種方式:

1. 調用了session.invalidate()方式

2. session過期(超時)

Tomcat默認session超時時間為30分鐘

3. 服務器重新啟動

application對象

1. application對象實現了用戶間數據的共享,可存放全局變量。

2. application開始於服務器的啟動,終止於服務器的關閉

3. 在用戶的前後鏈接或不同用戶的鏈接中,可以對application對象的同一屬性進行操 作。

4. 在任何地方對application對象屬性的操作,都將影響到其他用戶對此的訪問

5. 服務器的啟動和關閉決定了application對象的生命

6. application對象是ServletContext類的實例

application對象的常用方法:

1. public void setAttribute(String name,Object value)使用指定名稱將對象綁定到此 會話。

2. public Object getAttribute(String name)返回與此會話中的指定名稱綁定在一起的對象,如果沒有對象綁定在該名稱下,則返回null。

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

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

page對象

page對象就是指向當前JSP頁面本身,有點像類中的指針,它是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()使一個線程處於等待直到被喚醒

pageContext對象

l pageContext對象提供了對JSP頁面內所有的對象及名字空間的訪問

l pageContext對象可以訪問到本頁所在的session,也可以取本頁面所在的application的某一屬性

l pageContext對象相當於頁面中所有功能的集大成者

l pageContext對象的本類名也叫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. void serAttribute(String name,Object attribute)設置屬性及屬性值

7. Object getAttribute(String name,int scope)在指定範圍內取屬性的值

8. int getAttributeScope(String name)返回某屬性的作用範圍

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

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

Config對象

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

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

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

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

Exception對象

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

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

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

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

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

JSP學習筆記(一)


分享到:


相關文章: