JSP內置對象是為了簡化JSP頁面開發(fā)而建立的一些內部對象。這些對象不需要聲明,可以在程序中直接使用躬拢。它們是JSP語言的精髓做个,掌握常見內建對象的使用技巧是進行JavaWeb開發(fā)必不可少的。正確地掌握和靈活地使用JSP內置對象是學習JSP開發(fā)的重中之重秋茫。本章就來為大家講解九大內置對象
內置對象主要方法
前五種方法最常用
內置對象 | 主要作用 |
---|---|
request | 包含客戶端請求信息 |
response | 頁面?zhèn)骰亟o用戶端的相應信息 |
out | 用來向客戶端瀏覽器輸出信息的數據流 |
session | 為發(fā)送請求的客戶建立會話 |
application | 保存整個應用程序的共享信息 |
pageContext | 保存當前JSP頁面的共享信息 |
config | 讀取初始化參數 |
page | 代表JSP網頁本身 |
exception | 獲取運行時的異常 |
request內置對象
request對象用來接收客戶端提交的各種信息史简。如果要與用戶的互動,必須要知道用戶的需求肛著,然后根據這個需求生成用戶期望看到的結果圆兵。這樣才能實現與用戶的互動。在Web應用中枢贿,用戶的需求就抽象成一個request對象殉农,這個對象中間包括用戶所有的請求數據,例如通過表單提交的表單數據等方式傳遞的參數局荚,這些就是用戶的需求超凳。
主要方法
方法 | 方法描述 |
---|---|
getParameter(Sting name) | 獲取客戶端傳給服務器的參數值,name指定表單中參數的名字 |
getParameterNames() | 獲取客戶端傳給服務器的所有參數的名字,返回的結果是一個枚舉實例 |
getParameterValues(Sting name) | 獲得某一個參數的所有的值聪建,name指定參數名字 |
getAttribute(Sting name) | 獲得request對象中某一個屬性的值钙畔,name為屬性名,如果該屬性不存在金麸,則返回null |
setAttribute(Sting name,Java.long.Object.objt) | 給request對象設置一個名字為name的屬性值擎析,該值由objt設置 |
removeAttribute(String name) | 移除request對象中名字為name的屬性 |
getAttributeNames() | 返回request對象中所有屬性的名字,結果是一個枚舉類型 |
getCookies() | 返回客戶端所有的Cookie對象挥下,結果是一個Cookie數組 |
getCharacterEncoding() | 返回客戶端請求中字符的編碼方式 |
getContentLength | 返回客戶端請求的body的長度 |
getMethod() | 返回客戶端向服務器傳輸數據的方法揍魂,如get、post棚瘟、header现斋、trace等 |
getRequestURL() | 獲取發(fā)送請求的客戶端地址 |
getRemoteAddr() | 獲取客戶端的IP地址 |
getServerName() | 獲取服務器的名字 |
getServerPort() | 獲取服務器的端口號 |
getServletPath() | 獲取客戶端所請求的腳本文件的文件路徑 |
response內置對象
response對象是服務器端向客戶端返回的數據,從這個對象中間可以取出一部分與服務器互動的數據和信息偎蘸。
主要方法
方法 | 方法描述 |
---|---|
addCookie(Cookie cookie) | 添加一個Cookie對象庄蹋,用來保存客戶端信息 |
addHeader(Sting name, String value) | 添加HTTP文件頭信息,如果已有同名的Header迷雪,則覆蓋它 |
containHeader(String name) | 判斷名字為name的HTTP文件頭是否已存在 |
flushBuffer() | 強制將當前緩沖區(qū)的內容發(fā)送到客戶端 |
getBufferSize() | 返回緩沖區(qū)的大小 |
getOutputStream() | 獲取到客戶端的輸出流對象 |
sendError(int) | 向客戶端發(fā)送錯誤信息 |
sendRedirect(String location) | 發(fā)響應發(fā)送到另一個位置去處理 |
setContentType(Sting contentType) | 設置響應的MIME類型 |
setHeader(String name, String value) | 設置名字為name的HTTP文件頭的值限书,新設置的值可以覆蓋舊值 |
forward和sendRedirect的區(qū)別
<jsp:forward> |
sendRedirect |
---|---|
jsp引擎控制,url不會變 | 完全跳轉 |
url必須是相對路徑 | 合法的url就行 |
轉向頁面和到達頁面需要在同一個app中 | 只要合法章咧,隨便跳轉 |
動態(tài)設置頁面返回的MIME類型
在JSP中可以使用page編譯指令來設置頁面的MIME(Multipurpose Internet Mail Extensions多功能Internet郵件擴充服務倦西,即文件的類型)返回類型,但是在這里設置是頁面的編譯階段赁严,以電腦設置完成扰柠,在運行階段是不可更改的。而使用response對象中的setContentType(String type)方法可以來動態(tài)設置頁面的返回類型疼约。
out內置對象
out內置對象是在Web應用開發(fā)過程中使用最多的一個對象卤档,其功能就是動態(tài)的向JSP頁面輸出字符流,從而把動態(tài)的內容轉化成HTML形式來展示忆谓。這個對象在任何JSP頁面中都可以任意訪問裆装。out對象的方法主要用于輸出各種各樣格式的數據
主要方法
方法 | 方法描述 |
---|---|
clear() | 清除緩沖區(qū)的數據,不向用戶輸出 |
clearBuffer() | 清除緩沖區(qū)的數據倡缠,同時把這些數據向用戶輸出 |
close() | 關閉out輸出流 |
flush() | 輸出緩沖區(qū)的內容 |
isAutoFlush() | 判斷是否為自動刷新 |
print(String str) | 輸出帶HTML格式的各種類型的數據哨免,下一個輸出語句不換行 |
println(String str) | 輸出帶HTML格式的各種類型的數據,下一個輸出語句換行 |
在out對象方法中昙沦,最常用的就是print()和println()方法琢唾。我們可以運用這兩種方法實現各種類型數據的輸出。
session內置對象
session對象用來保存每個用戶的信息盾饮。例如:用戶名采桃、密碼懒熙、上次訪問時間等,從而可以跟蹤每個用戶的操作狀態(tài)普办。一般情況下工扎,當用戶首次登錄系統(tǒng)時,Web容器就會給該用戶創(chuàng)建一個唯一用來標識該用戶會話的session id衔蹲。為了跟蹤用戶的操作狀態(tài)肢娘,在多個頁面之間保存共享信息,JSP中提供了session對象舆驶。當該用戶退出系統(tǒng)時橱健,這個session自動消失。
主要方法
方法 | 方法描述 |
---|---|
getAttribute(String name) | 從session中獲取名字為name的屬性 |
getAttributeNames() | 返回存儲在session對象中的所有屬性的名字沙廉,結果為一個枚舉類型 |
removeAttribute(String name) | 刪除名字為name的屬性 |
setAttribute(String name, Java.lang.Object value) | 設置一個名字為name的屬性拘荡,其值為value |
getCreationTimes() | 返回該session被創(chuàng)建的時間 |
getId() | 返回唯一標識該session的ID |
getLastAccessedTime() | 返回與該session相關的客戶端最后發(fā)送請求的時間 |
獲取session的ID
session對象的ID是用來唯一識別session的標識。該ID由一個32位的十六進制字符串組成撬陵,可以保證服務器中所創(chuàng)建的所有session對象都不相同珊皿。
session中保存和讀取共享數據
與request對象一樣,session對象也有一對setAttribute()和getAttribute()方法袱结,用來存儲或者讀取session中的共享信息亮隙。而兩種對象的兩個方法的區(qū)別在于共享信息的范圍不同,session對象中保存的共享信息的范圍是整個會話過程垢夹,而request對象中保存共享信息的范圍則是提交和被提交的頁面。
session對象的生命周期
session對象的創(chuàng)建是由服務器完成的维费,當客戶端第一次請求服務器時由服務器創(chuàng)建果元。如果會話過程一直存在,則session對象也將一直存在下去犀盟。只有當session過期而晒、客戶端關閉瀏覽器或者服務器端調用了session的invalIDate()方法時session對象才被釋放掉,結束其生命周期阅畴。
application內置對象
application對象保存著整個Web應用運行期間的全局數據和信息倡怎。從Web應用開始運行開始,這個對象就會被創(chuàng)建贱枣。在整個Web應用運行期間可以在任何JSP頁面中訪問這個對象监署。所以如果要保存在整個Web應用運行期間都可以訪問的數據,這時候就要用到application對象纽哥。
主要方法
方法 | 方法描述 |
---|---|
getAttribute(String name) | 返回application對象中名字為name的屬性的值 |
getAttributeNames() | 返回application對象中所有屬性的名字钠乏,結果為一個枚舉類型 |
getInitParameter(String name) | 返回application對象中名字為name的屬性的初始值 |
getServletInfo() | 返回Servlet編譯器的當前版本的信息 |
setAttribute(String name,Object object) | 在application對象中設置一個名字為name的屬性,其值為object |
application對象最常用的方法回是getAttribute()和set Attribute()方法春塌。
pageContext內置對象
pageContext對象又被稱為JSP作用域通信對象晓避。該對象提供了訪問其他內置對象的統(tǒng)一入口簇捍,使用戶可以方便地訪問頁面作用域中定義的所有內置對象。
主要方法
方法 | 方法描述 |
---|---|
getRequest() | 返回當前頁面的request對象 |
getResponse() | 返回當前頁面的response對象 |
getServletConfig() | 返回當前頁面的servletConfig對象 |
getServletContext() | 返回當前頁面的ServletContext對象俏拱,這個對象是所有的頁面共享的 |
getSession() | 返回當前頁面的session對象 |
setAttribute() | 設置默認頁面范圍或特定對象范圍之中的的對象 |
removeAttribute() | 刪除默認頁面對象或特定對象范圍之中的已命名對象 |
config內置對象
config對象代表當前JSP頁面的配置信息暑塑。但JSP頁面通常無須預先進行配置,也就不存在配置信息了锅必。因此該對象在JSP頁面中比較少用事格,但在Servlet中則用處相對較大,因為Servlet需要在web.xml文件中進行配置况毅,從而設置初始化配置參數分蓖。
主要方法
方法 | 方法描述 |
---|---|
getInitParameter(String name) | 返回String類型的初始化參數 |
getInitParameterNames(String name) | 返回所有初始化參數的名稱 |
getServletName() | 獲得當前JSP頁面名稱 |
getServletContext() | 獲得當前JSP頁面的服務器上下文環(huán)境 |
exception內置對象
exception對象用來封裝運行時出現的異常信息。該對象只能被處理錯誤的頁面使用尔许,一般用來處理錯誤的頁面會在其頁面指令中聲明“isErrorPage=true”么鹤。
主要方法
方法 | 方法描述 |
---|---|
getMessage() | 返回描述異常的消息 |
toString() | 返回關于異常的簡短描述消息 |
printStackTrace() | 顯示異常及其棧中的跟蹤信息 |
page內置對象
page內置對象指向當前JSP頁面本身,有點類似于類中的this指針味廊,它表示當前JSP頁面轉換后生成的Servlet類的實例蒸甜。
主要方法
方法 | 方法描述 |
---|---|
getClass() | 返回當前Object的類 |
toString() | 返回當前Object對象的字符串 |
hashCode() | 返回當前Object的哈希代碼 |
equals(Object o) | 比較當前對象與給定的對象是否相等 |
copy(Object o) | 把當前對象賦值到給定的對象中去 |
clone() | 對當前對象進行克隆操作 |