1. 程式人生 > >面試題6.jsp中的四個作用域,九個內建物件分別是什麼?

面試題6.jsp中的四個作用域,九個內建物件分別是什麼?

四個作用域

pageContext, request, sessionapplication

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 

九個內建物件

  1. out物件:向客戶端輸出資訊

主要有兩個方法,print和println,後者不能實現換行  

 舉例:輸出一段粗體文字

  out.print("<b>這是一段粗體文字</b>");

 我們可以用out.print向客戶端輸出任何資訊,比如說輸出一個表格,等等。

 在網頁上使用System.out.println(),資訊輸出到控制檯上。

  1. 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");