面試題6.jsp中的四個作用域,九個內建物件分別是什麼?
四個作用域
pageContext, request, session、application
1. 輸出輸入物件:request物件、response物件、out物件
2. 通訊控制物件:pageContext物件、session物件、application物件
3. Servlet物件:page物件、config物件
4. 錯誤處理物件:exception物件
page 當前頁面有效時間最短(頁面執行期)
request HTTP請求開始到結束這段時間
session HTTP會話開始到結束這段時間
application 伺服器啟動到停止這段時間
out:所屬類JspWriter
request:實現了HttpServletRequest介面(此介面繼承於ServletRequest介面)
response:實現了HttpServletResponse介面(此介面繼承於ServletResponse介面)
session:實現了HttpSession介面
application物件實現的介面ServletContext
九個內建物件
- out物件:向客戶端輸出資訊
主要有兩個方法,print和println,後者不能實現換行
舉例:輸出一段粗體文字
out.print("<b>這是一段粗體文字</b>");
我們可以用out.print向客戶端輸出任何資訊,比如說輸出一個表格,等等。
在網頁上使用System.out.println(),資訊輸出到控制檯上。
- request物件:獲取客戶端傳遞到伺服器的資訊。
request常用方法舉例
(1)getParameter
獲取客戶端傳遞給伺服器的一個引數的值
(2)getParameterNames
獲取客戶端傳遞給伺服器的所有引數的名字
(3)getParameterValues
獲取一個引數的所有值(比如checkbox的情況)
(4)setAttribute
(5)getAttribute attribute=屬性
(6)removeAttribute
主要用在struts框架中
必須在同一次請求中設定的屬性,才能獲取到
(7)getAttributeNames
(8)getCookies,講Cookie的時候單獨講
cookie 小甜餅,把個人資訊存放在客戶端的一門技術
(9)getCharacterEncoding
(10)getContentLength
(11)getMethod
(12)getRequestURL
(13)getRemoteAddr
(14)getServerName
(13)getServerPort
(14)getServletPath
(15)getContextPath
(16)getHeader,getHeaders,getHeaderNames
Header:網頁頭,網頁控制資訊
request.getHeader("Referer") 來自的網頁
3.response物件: 向客戶端瀏覽器輸出資訊,對客戶的請求做成響應
4.session: 會話失效時間 ,tomcat中預設是30分鐘,可以設定。 每個使用者的會話空間是隔離的。
5.application 應用物件
application,session,request:都可以通過setAttribute來設定屬性,用getAttribute來獲取屬性,但是可見範圍不一樣。
application物件所設定的屬性,所有會話可見,而session物件設定的屬性,只有在同一個session中可見。
同樣,前面講過的request,它所設定的屬性,只有在同一次請求之間可見。
application 不會過期,在整個伺服器執行期間都有效,伺服器重啟後丟失。
application的其他一些方法:
application.getRealPath()
6.page物件
JSP網頁本身,page物件是當前頁面轉換後的Servlet類的例項。從轉換後的Servlet類的程式碼中,可以看到這種關係:Object page = this;在JSP頁面中,很少使用page物件。
7.config物件:主要作用是取得伺服器的配置資訊。
常用的方法有getInitParameter和getInitParameterNames,以獲得Servlet初始化時的引數。
通過 pageConext物件的 getServletConfig() 方法可以獲取一個config物件。當一個Servlet 初始化時,容器把某些資訊通過 config物件傳遞給這個 Servlet。 開發者可以在web.xml 檔案中為應用程式環境中的Servlet程式和JSP頁面提供初始化引數。
8.exception物件
在可能產生錯誤的檔案中用page指令指定errorpage
在所指定的errorpage中,設定isErrorPage="true"這個page指令,然後用exception物件獲取錯誤資訊。
<%@page errorPage="error.jsp"%>
session也是需要在頁面上設定page指令的。
9.pageContext物件
作用:a.可以用它獲取其他八大內建物件的控制代碼(本身的控制代碼不用獲取)
out pageContext.getOut()
request pageContext.getRequest();
response pageContext.getResponse();
session pageContext.getSession();
application pageContext.getServletContext();
config pageContext.getServletConfig();
exception pageContext.getException();
page pageContext.getPage();
b.可以用它設定或者獲取4個不同範圍(page,request,session,application)內的變數的值
設定的值只能在本頁面內有效
pageContext.setAttribute ("name" , "John") ;
設定的值在同一個request請求中有效。
pageContext.setAttribute("name" , "John", PageContext.REQUEST_SCOPE))
相當於request.setAttribute("name" , "John");
設定的值在同一個session請求中有效。
pageContext.setAttribute("name" , "John", PageContext.SESSION_SCOPE))
相當於session.setAttribute("name" , "John");
設定的值在整個應用中有效。
pageContext.setAttribute("name" , "John", PageContext.APPLICATION_SCOPE))
相當於application.setAttribute("name" , "John");