詳細(xì)了解JSP中九個(gè)隱含對(duì)象
為簡(jiǎn)化Web頁(yè)面的開(kāi)發(fā)過(guò)程,JSP提供了一些由容器實(shí)現(xiàn)和管理的隱含對(duì)象,這些對(duì)象在JSP頁(yè)面中可以直接使用,不需要JSP頁(yè)面編寫(xiě)者實(shí)例化。在JSP頁(yè)面中,可以通過(guò)存取這些隱含對(duì)象實(shí)現(xiàn)與JSP頁(yè)面和SERVLET環(huán)境的相互訪(fǎng)問(wèn)。
詳細(xì)了解JSP中九個(gè)隱含對(duì)象,page對(duì)象代表JSP本身,更準(zhǔn)確地說(shuō)它代表JSP被轉(zhuǎn)譯后的Servlet,它可以調(diào)用Servlet類(lèi)所定義的方法。
一、page 對(duì)象
page對(duì)象代表JSP本身,更準(zhǔn)確地說(shuō)它代表JSP被轉(zhuǎn)譯后的Servlet,它可以調(diào)用Servlet類(lèi)所定義的方法。
二、config 對(duì)象
config 對(duì)象里存放著一些Servlet 初始的數(shù)據(jù)結(jié)構(gòu)。
config 對(duì)象實(shí)現(xiàn)于javax.servlet.ServletConfig 接口,它共有下列四種方法:
- public String getInitParameter(name)
- public java.util.Enumeration getInitParameterNames( )
- public ServletContext getServletContext( )
- public Sring getServletName( )
三、request 對(duì)象
request 對(duì)象包含所有請(qǐng)求的信息,如:請(qǐng)求的來(lái)源、標(biāo)頭、cookies和請(qǐng)求相關(guān)的參數(shù)值等等。
request 對(duì)象實(shí)現(xiàn)javax.servlet.http.HttpServletRequest接口的,所提供的方法可以將它分為四大類(lèi):
1.儲(chǔ)存和取得屬性方法;
- void setAttribute(String name, Object value)設(shè)定name屬性的值為value
- Enumeration getAttributeNamesInScope(int scope)取得所有scope 范圍的屬性
- Object getAttribute(String name)取得name 屬性的值
- void removeAttribute(String name)移除name 屬性的值
2.取得請(qǐng)求參數(shù)的方法
- String getParameter(String name) 取得name 的參數(shù)值Enumeration
- getParameterNames( ) 取得所有的參數(shù)名稱(chēng)String[]
- getParameterValues(String name) 取得所有name 的參數(shù)值
- Map getParameterMap( )取得一個(gè)要求參數(shù)的Map
3.能夠取得請(qǐng)求HTTP 標(biāo)頭的方法
- String getHeader(String name)取得name 的標(biāo)頭
- Enumeration getHeaderNames()取得所有的標(biāo)頭名稱(chēng)
- Enumeration getHeaders(String name)取得所有name 的標(biāo)頭
- int getIntHeader(String name)取得整數(shù)類(lèi)型name 的標(biāo)頭
- long getDateHeader(String name) 取得日期類(lèi)型name 的標(biāo)頭
- Cookie [] getCookies( ) 取得與請(qǐng)求有關(guān)的cookies
4.其他的方法
- String getContextPath( )取得Context 路徑(即站臺(tái)名稱(chēng))
- String getMethod( )取得HTTP 的方法(GET、POST)
- String getProtocol( )取得使用的協(xié)議 HTTP/1.1、HTTP/1.0 )
- String getQueryString( )取得請(qǐng)求的參數(shù)字符串,不過(guò),HTTP的方法必須為GET
- String getRequestedSessionId( ) 取得用戶(hù)端的Session ID
- String getRequestURI( )取得請(qǐng)求的URL,但是不包括請(qǐng)求的參數(shù)字符串
- String getRemoteAddr( )取得用戶(hù)的IP 地址
- String getRemoteHost( )取得用戶(hù)的主機(jī)名稱(chēng)
- int getRemotePort( )取得用戶(hù)的主機(jī)端口
- String getRemoteUser( ) 取得用戶(hù)的名稱(chēng)
- void etCharacterEncoding(String encoding)設(shè)定編碼格式,用來(lái)解決窗體傳遞中文的問(wèn)題
四、response 對(duì)象
response 對(duì)象主要將JSP 處理數(shù)據(jù)后的結(jié)果傳回到客戶(hù)端。
response 對(duì)象是實(shí)現(xiàn)javax.servlet.http.HttpServletResponse 接口。response對(duì)象所提供的方法。
1.設(shè)定表頭的方法
- void addCookie(Cookie cookie)新增cookie
- void addDateHeader(String name, long date)新增long類(lèi)型的值到name標(biāo)頭
- void addHeader(String name, String value)新增String類(lèi)型的值到name標(biāo)頭
- void addIntHeader(String name, int value)新增int類(lèi)型的值到name標(biāo)頭
- void setDateHeader(String name, long date)指定long類(lèi)型的值到name標(biāo)頭
- void setHeader(String name, String value)指定String類(lèi)型的值到name標(biāo)頭
- void setIntHeader(String name, int value)指定int類(lèi)型的值到name標(biāo)頭
2.設(shè)定響應(yīng)狀態(tài)碼的方法
- void sendError(int sc)傳送狀態(tài)碼(status code)
- void sendError(int sc, String msg)傳送狀態(tài)碼和錯(cuò)誤信息
- void setStatus(int sc)設(shè)定狀態(tài)碼
3.用來(lái)URL 重寫(xiě)(rewriting)的方法
- String encodeRedirectURL(String url)對(duì)使用sendRedirect( )方法的URL予以編碼
五、out 對(duì)象
out 對(duì)象能把結(jié)果輸出到網(wǎng)頁(yè)上。
out主要是用來(lái)控制管理輸出的緩沖區(qū)(buffer)和輸出流(output stream)。
- void clear( )清除輸出緩沖區(qū)的內(nèi)容
- void clearBuffer( )清除輸出緩沖區(qū)的內(nèi)容
- void close( )關(guān)閉輸出流,清除所有的內(nèi)容
- int getBufferSize( )取得目前緩沖區(qū)的大小(KB)
- int getRemaining( )取得目前使用后還剩下的緩沖區(qū)大小(KB)
- boolean isAutoFlush( )回傳true表示緩沖區(qū)滿(mǎn)時(shí)會(huì)自動(dòng)清除;false表示不會(huì)自動(dòng)清除并且產(chǎn)生異常處理
六、session 對(duì)象
session對(duì)象表示目前個(gè)別用戶(hù)的會(huì)話(huà)(session)狀況。
session對(duì)象實(shí)現(xiàn)javax.servlet.http.HttpSession接口,HttpSession接口所提供的方法
- long getCreationTime()取得session產(chǎn)生的時(shí)間,單位是毫秒
- String getId()取得session 的ID
- long getLastAccessedTime()取得用戶(hù)***通過(guò)這個(gè)session送出請(qǐng)求的時(shí)間
- long getMaxInactiveInterval()取得***session不活動(dòng)的時(shí)間,若超過(guò)這時(shí)間,session 將會(huì)失效
- void invalidate()取消session 對(duì)象,并將對(duì)象存放的內(nèi)容完全拋棄
- boolean isNew()判斷session 是否為"新"的
- void setMaxInactiveInterval(int interval)設(shè)定***session不活動(dòng)的時(shí)間,若超過(guò)這時(shí)間,session 將會(huì)失效
七、application對(duì)象
application對(duì)象最常被使用在存取環(huán)境的信息。
因?yàn)榄h(huán)境的信息通常都儲(chǔ)存在ServletContext中,所以常利用application對(duì)象來(lái)存取ServletContext中的信息。
application 對(duì)象實(shí)現(xiàn)javax.servlet.ServletContext 接口,ServletContext接口容器所提供的方法
- int getMajorVersion( )取得Container主要的Servlet API版本
- int getMinorVersion( )取得Container次要的Servlet API 版本
- String getServerInfo( )取得Container的名稱(chēng)和版本
- String getMimeType(String file)取得指定文件的MIME 類(lèi)型
- ServletContext getContext(String uripath)取得指定Local URL的Application context
- String getRealPath(String path)取得本地端path的絕對(duì)路徑
- void log(String message)將信息寫(xiě)入log文件中
- void log(String message, Throwable throwable)將stack trace 所產(chǎn)生的異常信息寫(xiě)入log文件中
八、pageContext對(duì)象
pageContext對(duì)象能夠存取其他隱含對(duì)象。
1.pageContext對(duì)象存取其他隱含對(duì)象屬性的方法,此時(shí)需要指定范圍的參數(shù)。
- Object getAttribute(String name, int scope)
- Enumeration getAttributeNamesInScope(int scope)
- void removeAttribute(String name, int scope)
- void setAttribute(String name, Object value, int scope)
范圍參數(shù)有四個(gè),分別代表四種范圍:PAGE_SCOPE、REQUEST_SCOPE、SESSION_SCOPE、APPLICATION_SCOPE
2.PageContext對(duì)象取得其他隱含對(duì)象的方法
Exception getException( )回傳目前網(wǎng)頁(yè)的異常,不過(guò)此網(wǎng)頁(yè)要為error page,
JspWriter getOut( )回傳目前網(wǎng)頁(yè)的輸出流,例如:out
Object getPage( )回傳目前網(wǎng)頁(yè)的Servlet 實(shí)體(instance),例如:page
ServletRequest getRequest( )回傳目前網(wǎng)頁(yè)的請(qǐng)求,例如:request
ServletResponse getResponse( )回傳目前網(wǎng)頁(yè)的響應(yīng),例如:response
ServletConfig getServletConfig( )回傳目前此網(wǎng)頁(yè)的ServletConfig 對(duì)象,例如:config
ServletContext getServletContext( ) 回傳目前此網(wǎng)頁(yè)的執(zhí)行環(huán)境(context),例如:application
HttpSession getSession( )回傳和目前網(wǎng)頁(yè)有聯(lián)系的會(huì)話(huà)(session),例如:session
3.PageContext對(duì)象提供取得屬性的方法
Object getAttribute(String name, int scope)回傳name 屬性,范圍為scope的屬性對(duì)象,回傳類(lèi)型為Object
Enumeration getAttributeNamesInScope(int scope)回傳所有屬性范圍為scope 的屬性名稱(chēng),回傳類(lèi)型為Enumeration
int getAttributesScope(String name)回傳屬性名稱(chēng)為name 的屬性范圍
void removeAttribute(String name)移除屬性名稱(chēng)為name 的屬性對(duì)象
void removeAttribute(String name, int scope)移除屬性名稱(chēng)為name,范圍為scope 的屬性對(duì)象
void setAttribute(String name, Object value, int scope)指定屬性對(duì)象的名稱(chēng)為name、值為value、范圍為scope
Object findAttribute(String name)尋找在所有范圍中屬性名稱(chēng)為name 的屬性對(duì)象
九、exception對(duì)象
若要使用exception 對(duì)象時(shí),必須在page 指令中設(shè)定。才能使用。
exception提供的三個(gè)方法:
getMessage( )
getLocalizedMessage( )、
printStackTrace(new java.io.PrintWriter(out))
本文介紹了JSP頁(yè)面中使用的主要隱含對(duì)象。正是由于這些隱含對(duì)象,你可以進(jìn)入JSP頁(yè)面的代碼段,用不著深入了解太多的SERVLER API細(xì)節(jié)。從本質(zhì)上講,JSP的這些隱含對(duì)象其實(shí)都是由特定的JAVA類(lèi)所產(chǎn)生的,在服務(wù)器運(yùn)行時(shí)根據(jù)情況自動(dòng)生成,所以如果你有較好的JAVA基礎(chǔ),可以參考相應(yīng)的類(lèi)說(shuō)明。
【編輯推薦】



















