|
轉(zhuǎn)載至:http://fulong258.blog.163.com
JSP內(nèi)置對象詳解 JSP程序中8個默認的內(nèi)置對象對于它們而言,不用聲明就可以直接使用.這8個對象分別是request,response,pageContext,session,application,out,config和page. page 實現(xiàn)處理本頁當前請求的類的實例 java.1ang.Object page page 本 JSP 的 ServletConfig javax.servlet.ServletConfig config page 向輸出流寫入內(nèi)容的對象 Javax.servlet.jsp.JspWriter out application 從 servlet 配置對象獲得的 servlet 上下文(如在 getServletConfig() ,getContext()的調(diào)用中) Javax.servlet.ServletContext application session 為請求的客戶創(chuàng)建的session對象 Javax.servlet.http.HttpSession session page 本 JSP 的頁面上下文 Javax.servlet.jsp.PageContext pageContext page 對請求的應(yīng)答 依賴協(xié)議的java.servlet.ServletResponse 子類(例如,javax.servlet.HttpServletResponse) response request 觸發(fā)服務(wù)調(diào)用的請求 依 ??協(xié)議的java.servlet.ServletRequest 子類(例如,javax.servlet.HttpServletRequest) Request 范圍 代表內(nèi)容 類型 內(nèi)置對象 3.2 request對象 request 對象是ServletRequest的一個實例.當客戶端請求一個JSP網(wǎng)頁時,JSP引擎會將客戶端的請求信息包裝在這個request對象中,請求信 息的內(nèi)容包括請求的標題頭(Header),信息(如瀏覽器的版本信息,語言和編碼方式等),請求的方式(如HTTP方法:GET,POST,PUT 等),請求的參數(shù)名稱,參數(shù)值和客戶端的主機名稱等,然后將request對象當作jspService方法的HttpServletRequest參數(shù) 值,所以我們可以通過這個對象來取得有關(guān)客戶端的請求信息. 3.2.1 request對象的方法 方法 返回接收請求的端口 getServerPort 返回接收請求的服務(wù)器的主機名 getServerName 返回發(fā)出請求的 URL 的機制 getScheme 返回發(fā)送請求的接口程序的完全限定的主機名 getRemoteHost 返回發(fā)送請求的接口程序的 IP 地址 getRemoteAddr 返回運用替換規(guī)則從虛擬地址中獲得的實際地址 getRealPath 返回從請求體中讀取的文本的緩存數(shù)據(jù) getReader 返回請求的協(xié)議和版本號 getProtocol 返回作為字符串列舉的指定參數(shù)的值 getParameterValues 返回本次請求的參數(shù)名字 getParameterName 返回包含指定參數(shù)的單獨值的字符串 getParameter 返回在請求體中讀取二進制數(shù)據(jù)的輸入流 getlnputStream 返回請求實體數(shù)據(jù)的 InternetMedia 類型 getContenType 返回請求實體數(shù)據(jù)的大小 getContentLength 返回為請求的輸入進行編碼的字符集合 getCharacterEncoding 返回請求的給出名字的屬性的值 getAttribute 3.3 response對象 response 對象的類型是javax.servlet.ServletResponse類的實例,JSP引擎會根據(jù)客戶端的請求信息建立一個默認的response對 象.它用于將瀏覽器參考信息,如回應(yīng)的Header,回應(yīng)本體(HTML的內(nèi)容)以及服務(wù)器端的狀態(tài)碼等信息提供給客戶端. 3.3.1 response對象的方法 重定向客戶端的地址 sendRedirect 設(shè)定指定名字的HTTP文件頭的值 setHeader 向客戶端發(fā)送錯誤信息 sendError 判斷指定的HTTP文件頭是否存在 containsHeader 添加HTTP文件頭(Header),將會傳送到客戶端 addHeader 添加一個Cookie對象,用來保存客戶端的用戶信息 addCookie 為應(yīng)答設(shè)置內(nèi)容類型 setContentType 為應(yīng)答設(shè)置內(nèi)容長度 setContentLength 返回用于格式化文本應(yīng)答的打印程序 getWriter 返回用于書寫二進制應(yīng)答數(shù)據(jù)的輸出流 getCharacterEncoding 返回用于MIME編碼的字符集合 getCharacterEncoding 3.4 session對象 session對象是JSP中一個很重要的內(nèi)部對象,我們使用它來保存某個特定客戶端(訪問者)一次訪問的一些特定信息. 在JSP網(wǎng)絡(luò)編程中,有多種方法可以保存客戶信息,但是最常用,最實用的還是session對象. 3.4.1 session對象介紹 session對象,實際上就是服務(wù)器與客戶端之間的"會話" (1) session可以用來儲存訪問者的一些特定信息.主機服務(wù)器就是根據(jù)session來跟蹤這些信息的. (2) session可以創(chuàng)建訪問者信息容器. (3) session可以用來跟蹤訪問者的訪問路徑,從中挖掘有用的信息,如訪問者的興趣愛好,訪問目的. 用戶在Web應(yīng)用程序中訪問同一頁面時,session變量始終存在,當用戶在應(yīng)用程序的頁之間跳轉(zhuǎn)時,存儲在session對象中的變量也不會清除,當然也可以使用session方法顯式地結(jié)束一個會話和設(shè)置空閑會話的超時期限. session在JSP程序中是一個內(nèi)置的對象 每一個客戶端都有一個session對象用來存放于這個客戶端相關(guān)的數(shù)據(jù). 在JSP的程序中,通常不用任何代碼,就可以直接使用session對象.不過為了確認,可以加入以下代碼,以表示需要啟動session功能. 如果設(shè)置上述的session值為false,則說明禁用session功能. session對象的類為HttpSession,它提供了很多使用的方法. 3.4.2 session對象的方法 session對象的類是HttpSession.HttpSession由服務(wù)器的程序?qū)崿F(xiàn),提供HTTP服務(wù)器和HTTP客戶端之間的會話.會話,就是在給定時間段內(nèi)持續(xù)進行多路連接和請求.會話被用來在多頁面請求中保持狀態(tài)和用戶認證. session對象的常用方法 移去和會話應(yīng)用層數(shù)據(jù)中指定名字相連的對象 removeValue 將指定的對象和使用指定名字的會話應(yīng)用層數(shù)據(jù)相連 putValue 檢查是否客戶端參加了會話 isNew 使會話無效,并將其從上下文中移出 invalidate 返回和會話相連的應(yīng)用層數(shù)據(jù)對象的名字 getValueNames 返回和應(yīng)用層數(shù)據(jù)中指定名字相聯(lián)系的對象 getValue 返回會話相連的上下文 getSessionContext 返回客戶端上一次發(fā)送攜帶會話賬號的時間 getLastAccessTime 返回會話標識符 getId 返回會話創(chuàng)建的時間 getCreationTime 3.5 application對象 application 對象保存了一個應(yīng)用系統(tǒng)中一些公用的數(shù)據(jù).與session對象相比,application對象是所有客戶共享的,而session對象則是每個客戶專 用的.application對象可以是javax.servlet.ServletContext類型的.ServletContext接口讓 servlet訪問關(guān)于其環(huán)境的信息.application對象的范圍是application. 3.5.1 application對象的方法 方法 設(shè)置某個application對象的某個屬性值 setAttribute 獲得當前版本的Servlet編譯器的信息 getServerInfo 返回application某個屬性的值 getInitParameter 以Enumeration數(shù)據(jù)形式返回所有application對象的屬性名稱 getAttributeNames 以O(shè)bject對象的形式返回對應(yīng)名稱的application對象的屬性值 getAttribute 3.6 out對象 out對象用于輸出數(shù)據(jù),它可以是javax.servlet.jsp.JspWriter的一個實例.out對象的范圍是page. 從 java.io.Writer拓展而來的公共抽象類JspWriter效仿了java.io.BufferedWriter和 java.Io.PrintWriter中的某些功能.但是,不同之處在于它會在打印方法中拋出(throw) java.Io.IOException異常,而PrintWriter不這樣做. JSP中的out對象就是這種類型的.如果page指令選擇了 autoflush="true",那么當出現(xiàn)由于當前的操作不清空緩存而造成緩沖區(qū)溢出的情況時,這個類的所有I/O操作會自動清空緩沖區(qū)的內(nèi)容.如果 autoflush="false",那么當操作造成了緩沖區(qū)溢出時,這個類的所有的I/O操作將拋出一個IOException. 3.6.1 out對象的變量 autoFlush 類型為protected boolean autoflush 如果變量值為真,則當當前的操作造成緩沖區(qū)溢出時,緩沖區(qū)會被清空. 如果變量值為假,則如果當前操作造成緩沖區(qū)溢出就會拋出一個IOException. bufferSize 類型為protectedintbufferSize 表示緩沖區(qū)目前的大小.初始值根據(jù)不同的設(shè)備而不同,但是不少于8KB. DEFAULT_BUFFER 類型為publicstaticfinalintDEFAULT_BUFFER 表示W(wǎng)riter正使用的缺省的緩沖區(qū)大小設(shè)置. No_BUFFER 類型為Public static final int NO_BUFFER 表示W(wǎng)riter是否處于緩存輸出狀態(tài). 3.6.2 Out對象的方法 方法 打印一個對象 Object 打印一個長整數(shù) long 打印一個整數(shù) int 打印一個浮點數(shù) float 打印一個雙精度浮點數(shù) double 打印一個字符數(shù)組 char[] 打印一個字符 char 打印一個布爾值 boolean 寫一行分隔符 _ newLine 獲得autoFlush的當前值 _ isAutoFlush 獲得緩沖區(qū)中未使用的字節(jié)數(shù) _ getRemaining 獲得緩沖區(qū)的大小 _ getBufferSize 清除緩沖區(qū)的流 _ clearBuffer Clear 清除緩沖區(qū)內(nèi)容 _ Clear 輸出流 _ flush 關(guān)閉流,并輸出 _ Close 描述 參數(shù) 方法 打印一個字符串,然后結(jié)束行 String println 打印一個對象,然后結(jié)束行 Object println 打印一個長整數(shù),然后結(jié)束行 long println 打印一個整數(shù),然后結(jié)束行 int println 打印一個浮點數(shù),然后結(jié)束行 float println 打印一個雙精度浮點數(shù),然后結(jié)束行 double println 打印一個字符數(shù)組,然后結(jié)束行 char[] println 打印一個字符,然后結(jié)束行 char prinfln 打印一個布爾值,然后結(jié)束行 boolean println 通過寫一個行分隔符來結(jié)束當前行 _ println 打印一個字符串 String 3.6.3 Out對象的使用示例 用out對象輸出多種不同類型的數(shù)據(jù),包括輸出中文 文件out.jsp 3.7 其他對象 pageContext對象 pageContext 對象是javax.servlet.jsp.PageContext類的一個實例.pageContext對象提供了存取所有關(guān)于JSP程序執(zhí)行時所需要 用到的屬性和方法,如session,application,config,out等對象屬性.對于pageContext對象,它的范圍是page. page對象 page對象是java.lang.Object類型的,它是處理當前請求的JSP頁的實現(xiàn)類的實例.page對象在頁的正文中可以被看作"this"的同義詞.page對象的范圍是page. config對象 config對象是javax.servlet.ServletConfig類型的.它提供存取servlet class初始參數(shù)及有關(guān)Server環(huán)境信息的ServletContext對象.config對象的范圍是page. |
|
|