五------Jsp九大內置對象。

Jsp九大內置對象,其中最主要的是前五個對象。html

5-1 out對象 out對象是JSPWriter類的實例,是向客戶端輸出內容經常使用的對象。 out對象經常使用的方法以下: 1,out.println():向客戶端打印字符串 2,out.clear():清除緩衝區的內容,若是在flush以後調用會拋出異常 3,out.clearBuffer():清除緩衝區的內容,若是在flush以後調用不會拋出異常 4,out.flush():將緩衝區內容輸出到客戶端 5,int getBufferSize():返回緩衝區的字節數的大小,如不設緩衝區則爲0 6,int getRemaining():返回緩衝區還剩餘多少可用 7,boolean isAutoFlush():返回緩衝區滿時,是自動清空仍是拋出異常 8,out.close :關閉輸出流 5-2 request內置對象 客戶端的請求信息被封裝在request對象中,經過它才能瞭解到客戶的需求,而後作出響應。它是HttpServletRequest類 的實例。request對象具備請求域,即完成客戶端的請求以前,該對象一直有效。經常使用方法以下。 1,密碼:<%= request.getAttribute("password") %><br>, 2,請求體的MIME類型:<%= request.getContentType() %><br> 3,協議類型及版本號:<%= request.getProtocol() %><br>, 4,服務器主機名:<%= request.getServerName() %><br> 5,服務器端口號:<%= request.getServerPort() %><br> 6,請求文件的長度:<%= request.getContentLength() %><br> 7,請求客戶端的IP地址:<%= request.getRemoteAddr() %><br> 8,請求的真實路徑:<%= request.getRealPath(path) %><br> 9.請求的上下文路徑:<%= request.getContextPath() %><br> 10.設置字符碼:request.setCharacterEncoding("utf-8"); 11.設置屬性值(以設置密碼爲例):request.setAttribute("password", "123456"); 12.獲取單個屬性值(以用戶名爲例):<%= request.getParameter("username") %><br/> 13.獲取多個屬性值(以用戶提交的愛好爲例): <%     if(request.getParameterValues("favorite")!=null){     String[] favorites=request.getParameterValues("favorite");     for(String s:favorites){     out.println(s+"&nbsp;&nbsp;&nbsp;");     } } %> 5-3 response對象 response對象包含了響應客戶請求的有關信息,但在JSP中不多直接用到它,它是HttpServletResponse類的實例。 response對象具備頁面做用域,即訪問一個頁面時,該頁面內的response對象只能對此次訪問有效,其它頁面的response 對象對當前頁面無效經常使用方法以下。 1,response.setContentType("text/html;charset=utf-8");設置響應的MIME類型 2,String getCharacterEncoding();返回響應用的是何種字符編碼。 3,PrintWriter getWriter()返回能夠向客戶端輸出字符的一個對象。 4,response.sendRedirect("reg.jsp");//請求重定向,跳轉到指定頁面。 注意:PrintWriter中的getWriter和out內置對象的區別: getWriter輸出的內容老是先於out輸出的內容<br>解決辦法就是在outer輸出的代碼前強制out.flush 下面是一個response頁面的實例 <%@page import="java.io.PrintWriter"%> <%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%> <% response.setContentType("text/html;charset=utf-8");//設置響應的MIME類型 out.println("<h1>response內置對象</h1>"); out.println("<hr>"); out.flush();//在輸出outer以前清空緩衝區。 PrintWriter outer=response.getWriter();//獲取輸出流對象 outer.println("outer輸出的內容老是先於out輸出的內容<br>解決辦法就是在outer輸出的代碼前強制 out.flush"); //response.sendRedirect("reg.jsp");//請求重定向,跳轉到指定頁面。 %> 5-4 session內置對象 1,什麼是session session表示客戶端與服務器的一次會話。 web中的session指的是用戶在瀏覽某個網站時,從進入網站到瀏覽器關閉所通過的這段時間,也就是用戶瀏覽這個網站所 花費的時間。 從上述定義中能夠看到,session其實是一個特定的時間概念。 2,session對象 session對象是一個JSP內置對象。 session對象在第一個JSP頁面被裝載時自動建立,完成會話期管理。 從一個客戶打開瀏覽器並鏈接到服務器開始,到客戶關閉瀏覽器離開這個服務器結束,被稱爲一個會話。 當一個客戶訪問一個服務器時,可能會在服務器的幾個頁面之間切換,服務器應當經過某種方法知道這是一個客戶,就需 要session對象。 session對象是HttpSession類的實例。 3,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被取消(單位秒) 4,session的生命週期 1)建立: 當客戶端第一次訪問某個JSP或者Servlet時候,服務器會爲當前會話建立一個SessionId,每次客戶端向服務端發送請求 時,都會將此SessionId攜帶過去,服務端會對此SessionId進行校驗。 2)活動: 某次會話當中經過超連接打開的新頁面屬於同一次會話。 只要當前會話頁面沒有所有關閉,從新打開新的瀏覽器窗口訪問同一個項目資源時屬於同一次會話。 除非本次會話的全部頁面都關閉後再從新訪問某個JSP或者Servelt將會建立新的會話。 注意:當建立新的會話時,原有的會話還存在,這個舊的SessionId仍然存在於服務端,只不過再也沒有客戶端會攜帶它 交予服務端校驗。 3)銷燬 session的銷燬只有三種方式 a,調用了session.invalidate()方法。 b,Session過時(超時)建議用這種銷燬方式。 c,服務器從新啓動 補充 Tomcat默認session超時時間爲30分鐘。 設置session超時有兩種方式 1,session.setMaxInactiveInterval(時間);//單位是秒 2,在web.xml中配置 <session-config> <session-timeout>時間</session-timeout> </session-config> //單位是分鐘。 5-5 1,application對象 application對象實現了用戶間數據的共享,可存放全局變量 與session對象不一樣的是,全部客戶的application對象都是同一個,即全部客戶共享application對象,這樣 application對象就能夠起到一個全局變量的做用 application開始於服務器的啓動,終止於服務器的關閉。 在用戶的先後連接或不一樣用戶之間的鏈接中,能夠對application對象的同一屬性進行操做。 在任何地方對application對象屬性的操做,都將影響到其餘用戶對此的訪問 服務器的啓動和關閉決定了application對象的生命。 application對象是ServletContext類的實例。 2,application對象的經常使用方法以下: 1)public void setAttribute(String name,Object value)使用指定名稱將對象綁定到此會話。 2)public Object getAttribute(String name)返回與此會話中的指定名稱綁定在一塊兒的對象,若是沒有對象綁定在該 名稱下,則返回null 3)Enumeration getAttributeNames()返回全部可用屬性名的枚舉。 4)String getServerInfo():返回JSP(Servlet)引擎名及版本號。 5-6 page對象 page對象就是指向當前JSP頁面自己,有點像類中的this指針,它是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():使一個線程處於等待直到被喚醒 5-7 pageContext對象 pageContext對象提供了對JSP頁面內全部的對象及名字空間的訪問。 pageContext對象能夠訪問到本頁所在的session,也能夠獲取本頁所在的application的某一屬性值。 pageContext對象至關於頁面中全部功能的集大成者。 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 setAttribute(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);在當前位置包含另外一個文件 5-8 Config對象 config對象是在一個Servlet初始化時,JSP引擎向它傳遞信息用的,此信息包括Servlet初始化時所要用到的參數(經過 屬性名和屬性值構成)以及服務器的有關信息(經過傳遞一個ServletContext對象)經常使用的方法以下: 1,ServletContext getServletContext():返回含有服務器相關信息的ServletContext對象。 2,String getInitParameter(String name()):返回初始化參數的值。 3,Enumeration getInitParameterNames():返回Servlet初始化所需全部參數的枚舉。 5-9 Exception對象 exception對象是一個異常對象,當一個頁面在運行過程當中發生異常,就產生了這個對象,若是一個JSP頁面要應用此對象 ,就必須把isErrorPage設置爲true,不然沒法編譯,他其實是java.lang.Throwable的對象,經常使用方法以下: 1,String getMessage():返回描述異常的消息。 2,String toString():返回關於異常的簡短描述消息。 3,void printStackTrace():顯示異常及其棧軌跡。 4,Throwable FillInStackTrace():重寫異常的執行棧軌跡。
相關文章
相關標籤/搜索