1. 程式人生 > >JAVA企業面試題精選 Servlet和JSP 31-40

JAVA企業面試題精選 Servlet和JSP 31-40

2.31.session如何存取?何時被建立?session何時被刪除?如何在關閉瀏覽器的時候刪除session?

參考答案:

1.通過HttpServletRequest物件的getSession()來獲取session.
    儲存資料方式:session.setAttribute(“key”,value);
    獲取資料方式:session.getAttribute(“key”);
2.session物件在呼叫HttpServletRequest.getSession(true)語句時被建立.
3.刪除session:
 1)呼叫HttpSession.invalidate()方法;
 2)舉例上一次收到客戶端傳送的session id時間間隔超過了session的超時設定.
4.關閉瀏覽器的時候刪除session:
 在頁面中天劍onunload事件,當關閉瀏覽器時,執行伺服器端刪除session程式碼;
 優點:退出時,能及時進行處理.缺點:當用戶開啟多個頁面時,關閉任何一個頁面都有可能導致使用者的退出.

2.32.HttpSession session = request.getSession()與HttpSession session = request.getSession(true)的區別?getParameter與getAttribute的區別?

參考答案:

  1)HttpSession session = request.getSession()與HttpSession session = request.getSession(true)的區別如下:
  HttpSession session = request.getSession(true)表示當flag為true時:先檢視請求中有沒有SessionId,如果沒有SessionId,伺服器建立一個Session物件;如果有SessionId,依據SessionId查詢對應Session物件,找到則返回,找不到則建立一個新的Session物件,所以flag為true時,一定能得到一個Session物件;當flag為false時,沒有SessionId及有SessionId但沒有找到Session物件,均返回null;找到則返回.HttpSession session = request.getSession()等價於ttpSession session = request.getSession(true);提供該方法是為了程式碼書寫更方便一些,大部分情況下是不管找沒找到都需要返回一個Session物件.
  2)getParameter與getAttribute的區別如下:
  request.getParameter()方法是獲得客戶端傳送給伺服器的引數值,代表http請求資料.由URL傳入或由FORM提交的內容,返回值是String型別.
  request.getAttribute()方法獲得屬性值,資料在具有轉發關係的Web元件之間共享,返回值為Object型別.

2.33.在JSP頁面中,能否獲得Servlet中request.setAttribute中的值,如果能獲得,通過何種方式,如果不能獲得,請簡述為什麼?

參考答案:

  servlet通過轉發方式跳轉到JSP頁面,JSP頁面就可以獲得request中屬性的值.
  例如:servlet程式碼如下:

request.setAttribute("name","zs");
request.getRequsetDispatcher("/XX.jsp").forward(request,response);
    
  • 1
  • 2

  JSP程式碼如下:

<%=(String)request.getAttribute("name") %>
    
  • 1

2.34.簡述什麼是Session超時,如何修改預設的時間限制?

參考答案:

  Session超時是指:Web伺服器會將空閒時間過長的Session物件刪除掉,以節省伺服器記憶體空間資源.Web伺服器預設的超時時間限制:一般是30分鐘.修改Session的預設時間限制,有如下兩種方式:
  1.通過修改Tomcat中conf/web.xml檔案的設定,程式碼如下所示:

<session-config>
    <session-timeout>30</session-timeout>
</session-config>
    
  • 1
  • 2
  • 3

  2.通過程式設計的方式來修改,通過呼叫session物件的setMaxInactiveInterval方式來修改,該方法的宣告如下所示:

void setMaxInactiveInterval (int seconds){}
    
  • 1

2.35.JSP標準提供了三種獨立的向JSP新增Java程式碼的技術,請列舉

參考答案:

  JSP標準提供了三種獨立的想JSP新增Java程式碼的技術,分別是:
  1)<% %> JSP小指令碼
  2)<%! %> JSP宣告
  3)<%= %> JSP表示式

2.36.JSP中的include有兩種形式,分別用在何處

參考答案:

  動態include用jsp:include動作實現<jsp:include page="head.jsp>.它總是會檢查所含檔案中的變化,適合用於包含動態頁面,並且可以帶引數;
  靜態include用include偽碼實現<%@include file="head.html"%>.它不會檢查所含問價你的變化,適用於包含靜態頁面.

2.37.在JSP中:

  1.如何獲得當前Web應用在檔案系統裡的絕對路徑?

  2.如何獲得Web應用中某一檔案的絕對路徑?

參考答案:

  1.獲得當前Web應用在檔案系統裡的絕對路徑的方式如下:

<%= application.getRealPath("/"); %>
    
  • 1

  2.獲取應用中/WebRoot/img資料夾裡的a.png檔案的絕對路徑的方式如下:

<%= request.getContextPath() %>/img/a.png
    
  • 1

2.38.JSP和Servlet區別和聯絡是什麼?

參考答案:

  JSP是Servlet技術的擴充套件,本質上是Servlet的簡易方式,更強調應用的外表表達.JSP編譯後是”類servlet”.Servlet和JSP最主要的不同點在於,Servlet的應用邏輯是在Java檔案中,並且完全從表示層中的HTML裡分離開來.而JSP的情況是Java和HTML可以組合城一個副檔名為.jsp的檔案.JSP側重於檢視,Servlet主要用於控制邏輯.

2.39.JSP是怎麼轉化為HTML的?

參考答案:

  JSP在執行前仙貝轉譯成.java檔案(servlet),在編譯成.class檔案.每個JSP例項都有個jspservice方法,而這個方法將動態資料解釋成以html標記的內容,然後子安用JspWriter物件將一段一段內容寫向伺服器,之後重新整理JspWriter物件和關閉它,最後客戶端所得到的就是html內容了.

2.40.JSP的四種範圍

參考答案:

  JSP的四種範圍如下:
  1.page是代表與一個頁面相關的物件和屬性.一個頁面由一個編譯好的Java servlet類表示.這既包括servlet又包括被譯成servlet的JSP頁面;
  2.request是代表與Web客戶機發出的一個請求相關的物件和屬性.一個請求可能跨越多個頁面,涉及多個Web元件;
  3.session是代表與用於某個Web客戶機的一個使用者體驗相關的物件和屬性.一個Web會話可以也經常會跨越多個客戶機請求;
  4.application是代表與整個Web應用程式相關的物件和屬性.這實質上是跨越整個Web應用程式,包括多個頁面,請求以及會話的一個全域性作用域.

2.31.session如何存取?何時被建立?session何時被刪除?如何在關閉瀏覽器的時候刪除session?

參考答案:

1.通過HttpServletRequest物件的getSession()來獲取session.
    儲存資料方式:session.setAttribute(“key”,value);
    獲取資料方式:session.getAttribute(“key”);
2.session物件在呼叫HttpServletRequest.getSession(true)語句時被建立.
3.刪除session:
 1)呼叫HttpSession.invalidate()方法;
 2)舉例上一次收到客戶端傳送的session id時間間隔超過了session的超時設定.
4.關閉瀏覽器的時候刪除session:
 在頁面中天劍onunload事件,當關閉瀏覽器時,執行伺服器端刪除session程式碼;
 優點:退出時,能及時進行處理.缺點:當用戶開啟多個頁面時,關閉任何一個頁面都有可能導致使用者的退出.

2.32.HttpSession session = request.getSession()與HttpSession session = request.getSession(true)的區別?getParameter與getAttribute的區別?

參考答案:

  1)HttpSession session = request.getSession()與HttpSession session = request.getSession(true)的區別如下:
  HttpSession session = request.getSession(true)表示當flag為true時:先檢視請求中有沒有SessionId,如果沒有SessionId,伺服器建立一個Session物件;如果有SessionId,依據SessionId查詢對應Session物件,找到則返回,找不到則建立一個新的Session物件,所以flag為true時,一定能得到一個Session物件;當flag為false時,沒有SessionId及有SessionId但沒有找到Session物件,均返回null;找到則返回.HttpSession session = request.getSession()等價於ttpSession session = request.getSession(true);提供該方法是為了程式碼書寫更方便一些,大部分情況下是不管找沒找到都需要返回一個Session物件.
  2)getParameter與getAttribute的區別如下:
  request.getParameter()方法是獲得客戶端傳送給伺服器的引數值,代表http請求資料.由URL傳入或由FORM提交的內容,返回值是String型別.
  request.getAttribute()方法獲得屬性值,資料在具有轉發關係的Web元件之間共享,返回值為Object型別.

2.33.在JSP頁面中,能否獲得Servlet中request.setAttribute中的值,如果能獲得,通過何種方式,如果不能獲得,請簡述為什麼?

參考答案:

  servlet通過轉發方式跳轉到JSP頁面,JSP頁面就可以獲得request中屬性的值.
  例如:servlet程式碼如下:

request.setAttribute("name","zs");
request.getRequsetDispatcher("/XX.jsp").forward(request,response);
  
  • 1
  • 2

  JSP程式碼如下:

<%=(String)request.getAttribute("name") %>
  
  • 1

2.34.簡述什麼是Session超時,如何修改預設的時間限制?

參考答案:

  Session超時是指:Web伺服器會將空閒時間過長的Session物件刪除掉,以節省伺服器記憶體空間資源.Web伺服器預設的超時時間限制:一般是30分鐘.修改Session的預設時間限制,有如下兩種方式:
  1.通過修改Tomcat中conf/web.xml檔案的設定,程式碼如下所示:

<session-config>
    <session-timeout>30</session-timeout>
</session-config>
  
  • 1
  • 2
  • 3

  2.通過程式設計的方式來修改,通過呼叫session物件的setMaxInactiveInterval方式來修改,該方法的宣告如下所示:

void setMaxInactiveInterval (int seconds){}
  
  • 1

2.35.JSP標準提供了三種獨立的向JSP新增Java程式碼的技術,請列舉

參考答案:

  JSP標準提供了三種獨立的想JSP新增Java程式碼的技術,分別是:
  1)<% %> JSP小指令碼
  2)<%! %> JSP宣告
  3)<%= %> JSP表示式

2.36.JSP中的include有兩種形式,分別用在何處

參考答案:

  動態include用jsp:include動作實現<jsp:include page="head.jsp>.它總是會檢查所含檔案中的變化,適合用於包含動態頁面,並且可以帶引數;
  靜態include用include偽碼實現<%@include file="head.html"%>.它不會檢查所含問價你的變化,適用於包含靜態頁面.

2.37.在JSP中:

  1.如何獲得當前Web應用在檔案系統裡的絕對路徑?

  2.如何獲得Web應用中某一檔案的絕對路徑?

參考答案:

  1.獲得當前Web應用在檔案系統裡的絕對路徑的方式如下:

<%= application.getRealPath("/"); %>
  
  • 1

  2.獲取應用中/WebRoot/img資料夾裡的a.png檔案的絕對路徑的方式如下:

<%= request.getContextPath() %>/img/a.png
  
  • 1

2.38.JSP和Servlet區別和聯絡是什麼?

參考答案:

  JSP是Servlet技術的擴充套件,本質上是Servlet的簡易方式,更強調應用的外表表達.JSP編譯後是”類servlet”.Servlet和JSP最主要的不同點在於,Servlet的應用邏輯是在Java檔案中,並且完全從表示層中的HTML裡分離開來.而JSP的情況是Java和HTML可以組合城一個副檔名為.jsp的檔案.JSP側重於檢視,Servlet主要用於控制邏輯.

2.39.JSP是怎麼轉化為HTML的?

參考答案:

  JSP在執行前仙貝轉譯成.java檔案(servlet),在編譯成.class檔案.每個JSP例項都有個jspservice方法,而這個方法將動態資料解釋成以html標記的內容,然後子安用JspWriter物件將一段一段內容寫向伺服器,之後重新整理JspWriter物件和關閉它,最後客戶端所得到的就是html內容了.

2.40.JSP的四種範圍

參考答案:

  JSP的四種範圍如下:
  1.page是代表與一個頁面相關的物件和屬性.一個頁面由一個編譯好的Java servlet類表示.這既包括servlet又包括被譯成servlet的JSP頁面;
  2.request是代表與Web客戶機發出的一個請求相關的物件和屬性.一個請求可能跨越多個頁面,涉及多個Web元件;
  3.session是代表與用於某個Web客戶機的一個使用者體驗相關的物件和屬性.一個Web會話可以也經常會跨越多個客戶機請求;
  4.application是代表與整個Web應用程式相關的物件和屬性.這實質上是跨越整個Web應用程式,包括多個頁面,請求以及會話的一個全域性作用域.