J2EE Servlet 知識點

來源:互聯網
上載者:User

1.如何擷取RequestDispatcher
可以通過request或者web context擷取RequestDispatcher對象,不過兩個方法稍有不同。一個request可以採用相對的路徑 
      (也就是不以"/"開頭)作為參數,而web context需要的是絕對路徑。
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/banner");
if (dispatcher != null)
   dispatcher.include(request, response);

2.Forward(dispatcher.forward(request, response)或<jsp:forward>)發生後,如何取得之前的url的相關部分
當一個請求被forward到另一個請求後,原始的URI和其組成部分被儲存為請求屬性:
      javax.servlet.forward.[request-uri|context-path|servlet-path|path-info|query-string]

3.Include(dispatcher.include(request, response)或<jsp:include>)發生後,如何擷取被包含的頁面的資訊
當一個頁面被包含到另個一頁面中後,可以通過request.getRequestURL()擷取原來的父URL,而對於被包含的頁面的資訊,可以通
      過擷取request中的下列屬性擷取:
javax.servlet.include.[request-uri|context-path|servlet-path|path-info|query-string]

4.session.invalidate和session.reomveAttribute區別:
       removeAttribute就是從session刪除指定名稱的綁定對象,也就是說調用此方法後再調用getAttribute(Stringname)時,不能擷取
       指定名稱的綁定對象,調用getAttribute方法時傳回值是null,但是session還存在。invalidate就是廢止此 session對象,解除與
       此session對象綁定的所有對象,這個時候調用getAttribute方法會拋出“Session already invlidated!”異常。
       註:Session的銷毀有兩種情況:逾時和手動銷毀,(1)tomcat可以通過在web.xml中添加如下的配置設定逾時的時間
       <session-config><session-timeout>30</session-timeout></session-config>;(2)手動銷毀是指直接調用其invalidate方
       法,此方法實際上是調用expire方法來手動將其設定為逾時invalidate是使此session對象失效,調用request.getSession(false)
       返回的是null;

5.HttpServletRequest.encodeURL在session跟蹤中的應用
       encodeURL(url)方法主要用於通過url重寫的機制來實現session跟蹤,它實現的邏輯如下:
       (1)先判斷當前的 Web 元件是否啟用 Session,如果沒有啟用 Session,直接返回參數 url。 
       (2)再判斷用戶端瀏覽器是否支援 Cookie,如果支援 Cookie,直接返回參數 url;如果不支援 Cookie,就在參數 url 中加入 
       Session ID 資訊,然後返回修改後的 url。 
       對於健壯的session跟蹤,servlet中派發的所有的url都應該經過這個方法,否則的話,url重寫機制對不支援cookie的瀏覽器將不能
       使用;例:
       如果瀏覽器的cookie禁用,encoded url類似:http://localhost:8080/bookstore1/cashier;jsessionid=c0o7fszeb1
       如果瀏覽器的cookie啟用,encoded url類似:http://localhost:8080/bookstore1/cashier

6.終止Servlet(TBD)

       http://download.oracle.com/javaee/5/tutorial/doc/bnags.html

       http://hi.baidu.com/clisdena/blog/item/0350621fb20df0cda786698e.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.