一、page?對(duì)象
????page對(duì)象代表JSP本身,更準(zhǔn)確地說它代表JSP被轉(zhuǎn)譯后的Servlet,它可以調(diào)用Servlet類所定義的方法。
????????
二、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)求的來源、標(biāo)頭、cookies和請(qǐng)求相關(guān)的參數(shù)值等等。
????request?對(duì)象實(shí)現(xiàn)javax.servlet.http.HttpServletRequest接口的,所提供的方法可以將它分為四大類:
????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ù)名稱
????????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)頭名稱
????????Enumeration?getHeaders(String?name)??????????????? 取得所有name?的標(biāo)頭
????????int?getIntHeader(String?name)????????????????????? 取得整數(shù)類型name?的標(biāo)頭
????????long?getDateHeader(String?name)??????????????? ??? 取得日期類型name?的標(biāo)頭
????????Cookie?[]?getCookies(?)??????????????????????? ??? 取得與請(qǐng)求有關(guān)的cookies
????4.其他的方法
????????String?getContextPath(?)?????????????????????????? 取得Context?路徑(即站臺(tái)名稱)
????????String?getMethod(?)??????????????????????????????? 取得HTTP?的方法(GET、POST)
????????String?getProtocol(?)?????????????????????????? ?? 取得使用的協(xié)議?(HTTP/1.1、HTTP/1.0?)
????????String?getQueryString(?)??????????????????? ? ? ?? 取得請(qǐng)求的參數(shù)字符串,不過,HTTP的方法必須為GET
????????String?getRequestedSessionId(?)???????????? ? ? ?? 取得用戶端的Session?ID
????????String?getRequestURI(?)????????????????????????????取得請(qǐng)求的URL,但是不包括請(qǐng)求的參數(shù)字符串
????????String?getRemoteAddr(?)????????????????????????????取得用戶的IP?地址
????????String?getRemoteHost(?)????????????????????????????取得用戶的主機(jī)名稱
????????int?getRemotePort(?)?????????????????????????? ? ? 取得用戶的主機(jī)端口
????????String?getRemoteUser(?)????????????????????? ? ? ? 取得用戶的名稱
????????void?etCharacterEncoding(String????encoding)?????? 設(shè)定編碼格式,用來解決窗體傳遞中文的問題
四、response?對(duì)象
????response?對(duì)象主要將JSP?處理數(shù)據(jù)后的結(jié)果傳回到客戶端。
????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類型的值到name標(biāo)頭
????????void?addHeader(String?name,?String?value)????????? 新增String類型的值到name標(biāo)頭
????????void?addIntHeader(String?name,?int?value)??????? ? 新增int類型的值到name標(biāo)頭
????????void?setDateHeader(String?name,?long?date)????? ?? 指定long類型的值到name標(biāo)頭
????????void?setHeader(String?name,?String?value)?????? ?? 指定String類型的值到name標(biāo)頭
????????void?setIntHeader(String?name,?int?value)????????? 指定int類型的值到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.用來URL?重寫(rewriting)的方法????
????????String?encodeRedirectURL(String????url)????????????對(duì)使用sendRedirect(?)方法的URL予以編碼
五、out?對(duì)象
????out?對(duì)象能把結(jié)果輸出到網(wǎng)頁(yè)上。
????out主要是用來控制管理輸出的緩沖區(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ū)滿時(shí)會(huì)自動(dòng)清除;false表示不會(huì)自動(dòng)清除并且產(chǎn)生異常處理
????????
六、session?對(duì)象
????session對(duì)象表示目前個(gè)別用戶的會(huì)話(session)狀況。
????session對(duì)象實(shí)現(xiàn)javax.servlet.http.HttpSession接口,HttpSession接口所提供的方法
????????long?getCreationTime()?????????????????????????? ? 取得session產(chǎn)生的時(shí)間,單位是毫秒
????????String?getId()?????????????????????????????????????取得session?的ID
????????long?getLastAccessedTime()????????????????????? ?? 取得用戶最后通過這個(gè)session送出請(qǐng)求的時(shí)間
????????long?getMaxInactiveInterval()?????????????????? ?? 取得最大session不活動(dòng)的時(shí)間,若超過這時(shí)間,session?將會(huì)失效
????????void?invalidate()?????????????????????????????? ?? 取消session?對(duì)象,并將對(duì)象存放的內(nèi)容完全拋棄
????????boolean?isNew()????????????????????????????????????判斷session?是否為"新"的
????????void?setMaxInactiveInterval(int????interval)?????? 設(shè)定最大session不活動(dòng)的時(shí)間,若超過這時(shí)間,session?將會(huì)失效
七、application對(duì)象
????application對(duì)象最常被使用在存取環(huán)境的信息。
????因?yàn)榄h(huán)境的信息通常都儲(chǔ)存在ServletContext中,所以常利用application對(duì)象來存取ServletContext中的信息。
????application?對(duì)象實(shí)現(xiàn)javax.servlet.ServletContext?接口,ServletContext接口容器所提供的方法
????????int?getMajorVersion(?)?????????????????????????????取得Container主要的Servlet?API版本
????????int?getMinorVersion(?)?????????????????????????????取得Container次要的Servlet?API?版本
????????String?getServerInfo(?)??????????????????????? ? ? 取得Container的名稱和版本
????????String?getMimeType(String?file)?????????????? ? ?? 取得指定文件的MIME?類型
????????ServletContext?getContext(String?uripath)????? ? ? 取得指定Local?URL的Application?context
????????String?getRealPath(String?path)??????????????? ? ? 取得本地端path的絕對(duì)路徑
????????void?log(String?message)??????????????????????? ?? 將信息寫入log文件中
????????void?log(String?message,?Throwable?throwable)????? 將stack?trace?所產(chǎn)生的異常信息寫入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è)的異常,不過此網(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ì)話(session),例如:session
????3.PageContext對(duì)象提供取得屬性的方法
????????Object?getAttribute(String?name,?int?scope)????????回傳name?屬性,范圍為scope的屬性對(duì)象,回傳類型為Object
????????Enumeration?getAttributeNamesInScope(int?scope)????回傳所有屬性范圍為scope?的屬性名稱,回傳類型為Enumeration
????????int?getAttributesScope(String?name)??????????????? 回傳屬性名稱為name?的屬性范圍
????????void?removeAttribute(String?name)??????????????? ? 移除屬性名稱為name?的屬性對(duì)象
????????void?removeAttribute(String?name,?int?scope)?????? 移除屬性名稱為name,范圍為scope?的屬性對(duì)象
????????void?setAttribute(String?name,?Object?value,?int?scope)????????指定屬性對(duì)象的名稱為name、值為value、范圍為scope
????????Object?findAttribute(String?name)????????????????? 尋找在所有范圍中屬性名稱為name?的屬性對(duì)象
九、exception對(duì)象
????若要使用exception?對(duì)象時(shí),必須在page?指令中設(shè)定。<%@?page?isErrorPage="true"?%>才能使用。
????exception提供的三個(gè)方法:
????????getMessage(?)
????????getLocalizedMessage(?)、
????????printStackTrace(new?java.io.PrintWriter(out))?
原文出處:http://www.javaresearch.org/article/68164.htm