Servlet之間的交互

Servlet-平常筆記3面試


Web之間的跳轉和信息共享

  Servlet之間的交互:信息共享和相互跳轉。跨域

 

Web組件之間的跳轉:

  1)三種類型:請求轉發(forward)、URL重定向(redirect)、請求包含(include)。瀏覽器

  請求轉發:session

    用法:request對象.getRequestDispatcher(String path).forword(request, response);app

    參數:path表示目標資源名稱(就是要跳轉到哪裏)。spa

forward(request, response)纔是跳轉,不能漏對象

  URL重定向: blog

    用法:response對象.sendRedirect(String path);接口

    參數:path表示目標資源名稱。生命週期

  常見面試題:轉發和URL重定向的區別。

請求轉發 URL重定向
不改變瀏覽器地址路徑 瀏覽器地址改變
跳轉先後是同一個請求,共享數據  跳轉先後是兩個不一樣的請求,數據不共享
不能夠跨域訪問資源 能夠跨域訪問資源
能夠訪問WEB-INF下的資源 不能夠訪問WEB-INF下的資源
最終響應輸出有跳轉後的決定 最終響應輸出有跳轉後的決定

 

Web組件的四大做用域對象

  四大做用域對象從小到大分別爲:pageContext、request、session、application。

名稱 類型 描述
pageContext PageContext 當前JSP頁面範圍
request HttpServletRequest 當前請求範圍,同一個請求中,有效,每次請求都是新的請求對象
session HttpSession 當前會話範圍,(通常瀏覽器不關閉就在)同一個session中共享會話
application ServletContext 當前應用範圍,Tomcat開啓就建立該對象(有且只有一個),直至Tomcat關閉

 

  操做:

  設置共享信息:

    域對象.setAttribute(String name, Object value);

  獲取共享信息:

    Object value = 域對象.getAttribute(String name);

  修改共享信息:

    從新設置一個同名屬性

  刪除共享信息:

    域對象.removeAttribute(String name);

  1.通常登錄信息存放在Session中。

  2.組件之間的數據共享存放在request中,此時只能使用請求轉發。

 

ServletContext接口

  Web容器在啓動時,會建立一個ServletContext對象,當容器關閉時,對象被銷燬,在整個Web生命週期中,只有該對象,表示當前的應用。


  如何獲取ServletContext對象:

  1)若在Servlet中,使用super.getServletContext獲取。 GenericServlet實現了Servlet和ServletConfig接口,而getServletContext方法就在ServletConfig接口中。

  2)經過請求對象獲取:

    request對象.getServletContext();  Tomcat7開始支持

    request對象.getSession().getServletContext();

  經常使用方法:

  1)String getContextPath(); 獲取當前應用的上下文路徑。

  2)StringgetRealPath(String path); 獲取資源的絕對路徑。

  3)全局初始化參數:

  

  獲取全局的初始化參數,就不能使用ServletConfig對象.getInitParameter來獲取,而應該使用ServletContext對象.getInitParameter來獲取。

 

   在總結的最後發現,getParameter()方法和getAttribute()方法好像都能獲取信息,那他們有什麼區別呢?

  百度了一下,他們的用途不同,前者多用於獲取用戶輸入的信息,如表格;後者多用於開發者本身設置的用來共享的信息。

相關文章
相關標籤/搜索