jsp常見面試題(1)
jsp常見面試題(1)
1.jsp的內建物件有哪些?功能是什麼?
內建物件是不需要宣告,直接可以在JSP中使用的物件,JSP有以下幾種內建物件:
request: request表示HttpServletRequest物件。它包含了有關瀏覽器請求的資訊,並且提供了幾個用於獲取cookie,header,和session資料的有用的方法。(使用者端請求,此請求會包含來自GET/POST請求的引數)
response:response表示HttpServletResponse物件,並提供了幾個用於設定送回 瀏覽器的響應的方法(如cookies,頭資訊等)
out:out 物件是javax.jsp.JspWriter的一個例項,並提供了幾個方法使你能用於向瀏覽器回送輸出結果。
pageContext:pageContext表示一個javax.servlet.jsp.PageContext物件。它是用於方便存取各種範圍的名字空間、servlet相關的物件的API,並且包裝了通用的servlet相關功能的方法。(網頁的屬性是在這裡管理)
session:session表示一個請求的javax.servlet.http.HttpSession物件。Session可以存貯使用者的狀態資訊(與請求有關的會話期)
application: applicaton 表示一個javax.servle.ServletContext物件。這有助於查詢有關servlet引擎和servlet環境的資訊(servlet 正在執行的內容)
config: config表示一個javax.servlet.ServletConfig物件。該物件用於存取servlet例項的初始化引數。
page: page表示從該頁面產生的一個servlet例項。(JSP網頁本身)
exception:針對錯誤網頁,未捕捉的例外。
2。JSP中動態INCLUDE與靜態INCLUDE的區別?
答:動態INCLUDE用jsp:include動作實現<jsp:include page="included.jsp" flush="true" />它總是會檢查所含檔案中的變化,適合用於包含動態頁面,並且可以帶引數
靜態INCLUDE用include偽碼實現,不會檢查所含檔案的變化,適用於包含靜態頁面<%@ include file="included.htm" %>
(另一個參考)
1. 靜態include的結果是把其他jsp引入當前jsp,兩者合為一體;動態include的結構是兩者獨立,直到輸出時才合併( 看看jsp生成的java檔案就可以知道了)
2.正是因為這樣,動態include的jsp檔案獨立性很強,是一個單獨的jsp檔案,需要使用的物件,頁面 設定,都必須有自己建立,當然,還好它和include它的頁面的request範圍是一致的;而靜態include純粹是把程式碼寫在外面的一種共享方法,所有的變數都是可以和include它的主檔案共享,兩者高度緊密結合,不能有變數同名的衝突.而頁面設定也可以借用主檔案的.
3。forward 和redirect的區別
答:forward是伺服器請求資源,伺服器直接訪問目標地址的URL,把那個URL的響應內容讀取過來,然後把這些內容再發給瀏覽器,瀏覽器根本不知道伺服器傳送的內容是從哪兒來的,所以它的位址列中還是原來的地址。
redirect就是服務端根據邏輯,傳送一個狀態碼,告訴瀏覽器重新去請求那個地址,一般來說瀏覽器會用剛才請求的所有引數重新請求,所以session,request引數都可以獲取。
4。jsp有哪些動作?作用分別是什麼?
答:JSP共有以下6種基本動作
1)jsp:include:在頁面被請求的時候引入一個檔案。
2)jsp:useBean:尋找或者例項化一個JavaBean。
3)jsp:setProperty:設定JavaBean的屬性。
4)jsp:getProperty:輸出某個JavaBean的屬性。
5)jsp:forward:把請求轉到一個新的頁面。
6)jsp:plugin:根據瀏覽器型別為Java外掛生成OBJECT或EMBED標記
5。兩種跳轉方式分別是什麼?有什麼區別?
答:有兩種,分別為:
<jsp:include page="included.jsp" flush="true">
<jsp:forward page= "nextpage.jsp"/>
前者頁面不會轉向include所指的頁面,只是顯示該頁的結果,主頁面還是原來的頁面。執行完後還會回來,相當於函式呼叫。並且可以帶引數
.後者完全轉向新頁面,不會再回來。相當於go to 語句。
1.jsp的內建物件有哪些?功能是什麼?
內建物件是不需要宣告,直接可以在JSP中使用的物件,JSP有以下幾種內建物件:
request: request表示HttpServletRequest物件。它包含了有關瀏覽器請求的資訊,並且提供了幾個用於獲取cookie,header,和session資料的有用的方法。(使用者端請求,此請求會包含來自GET/POST請求的引數)
response:response表示HttpServletResponse物件,並提供了幾個用於設定送回 瀏覽器的響應的方法(如cookies,頭資訊等)
out:out 物件是javax.jsp.JspWriter的一個例項,並提供了幾個方法使你能用於向瀏覽器回送輸出結果。
pageContext:pageContext表示一個javax.servlet.jsp.PageContext物件。它是用於方便存取各種範圍的名字空間、servlet相關的物件的API,並且包裝了通用的servlet相關功能的方法。(網頁的屬性是在這裡管理)
session:session表示一個請求的javax.servlet.http.HttpSession物件。Session可以存貯使用者的狀態資訊(與請求有關的會話期)
application: applicaton 表示一個javax.servle.ServletContext物件。這有助於查詢有關servlet引擎和servlet環境的資訊(servlet 正在執行的內容)
config: config表示一個javax.servlet.ServletConfig物件。該物件用於存取servlet例項的初始化引數。
page: page表示從該頁面產生的一個servlet例項。(JSP網頁本身)
exception:針對錯誤網頁,未捕捉的例外。
2。JSP中動態INCLUDE與靜態INCLUDE的區別?
答:動態INCLUDE用jsp:include動作實現<jsp:include page="included.jsp" flush="true" />它總是會檢查所含檔案中的變化,適合用於包含動態頁面,並且可以帶引數
靜態INCLUDE用include偽碼實現,不會檢查所含檔案的變化,適用於包含靜態頁面<%@ include file="included.htm" %>
(另一個參考)
1. 靜態include的結果是把其他jsp引入當前jsp,兩者合為一體;動態include的結構是兩者獨立,直到輸出時才合併( 看看jsp生成的java檔案就可以知道了)
2.正是因為這樣,動態include的jsp檔案獨立性很強,是一個單獨的jsp檔案,需要使用的物件,頁面 設定,都必須有自己建立,當然,還好它和include它的頁面的request範圍是一致的;而靜態include純粹是把程式碼寫在外面的一種共享方法,所有的變數都是可以和include它的主檔案共享,兩者高度緊密結合,不能有變數同名的衝突.而頁面設定也可以借用主檔案的.
3。forward 和redirect的區別
答:forward是伺服器請求資源,伺服器直接訪問目標地址的URL,把那個URL的響應內容讀取過來,然後把這些內容再發給瀏覽器,瀏覽器根本不知道伺服器傳送的內容是從哪兒來的,所以它的位址列中還是原來的地址。
redirect就是服務端根據邏輯,傳送一個狀態碼,告訴瀏覽器重新去請求那個地址,一般來說瀏覽器會用剛才請求的所有引數重新請求,所以session,request引數都可以獲取。
4。jsp有哪些動作?作用分別是什麼?
答:JSP共有以下6種基本動作
1)jsp:include:在頁面被請求的時候引入一個檔案。
2)jsp:useBean:尋找或者例項化一個JavaBean。
3)jsp:setProperty:設定JavaBean的屬性。
4)jsp:getProperty:輸出某個JavaBean的屬性。
5)jsp:forward:把請求轉到一個新的頁面。
6)jsp:plugin:根據瀏覽器型別為Java外掛生成OBJECT或EMBED標記
5。兩種跳轉方式分別是什麼?有什麼區別?
答:有兩種,分別為:
<jsp:include page="included.jsp" flush="true">
<jsp:forward page= "nextpage.jsp"/>
前者頁面不會轉向include所指的頁面,只是顯示該頁的結果,主頁面還是原來的頁面。執行完後還會回來,相當於函式呼叫。並且可以帶引數
.後者完全轉向新頁面,不會再回來。相當於go to 語句。