天天看點

Javaweb核心裡面的轉發-重定向和EL表達式Javaweb核心裡面的轉發-重定向和EL表達式

文章目錄

  • Javaweb核心裡面的轉發-重定向和EL表達式
    • 【面試必備】請求轉發RequestDispatcher
      • 簡介:講解請求轉發RequestDispatcher的知識點
        • 什麼是請求轉發:
    • EL表達式-讓JSP通路JavaBean中的資料更簡單
      • 簡介:介紹EL表達式
        • 什麼是EL表達式
        • 屬性範圍在EL中的名稱
        • 對比
    • 【面試必備】什麼是請求重定向sendRedirect
      • 簡介:講解請求重定向sendRedirect
        • 什麼是請求重定向
        • 注意點

Javaweb核心裡面的轉發-重定向和EL表達式

【面試必備】請求轉發RequestDispatcher

簡介:講解請求轉發RequestDispatcher的知識點

什麼是請求轉發:

request.getRequestpispatcher(URL位址).forward(request,response)
           
  • 用戶端發送請求,Servlet做出業務邏輯處理。
  • Servlet調用forword()方法,伺服器Servlet把目标資源傳回給用戶端浏覽器
  • 可以通路WEB-INF下的檔案,WEB-INF的檔案一般是需要一定的權限才可以通路
  • 例子:req.getRequestDispatcher("/WEB-INF/admin.jsp").forward(req,resp);
Javaweb核心裡面的轉發-重定向和EL表達式Javaweb核心裡面的轉發-重定向和EL表達式
  • 注意點:在浏覽器位址欄中不會顯示出轉發後的位址,屬于伺服器内部轉發,整個過程處于同一個請求當中,是以轉發中資料的存取可以用request作用域

EL表達式-讓JSP通路JavaBean中的資料更簡單

簡介:介紹EL表達式

什麼是EL表達式

  • 什麼是EL表達式:全稱Expression Language,讓jSP寫起來更加簡單。表達式語言的靈感來自于ECMAScript和XPath 表達式語言,它提供了在JSP中簡化表達式的方法,讓Jsp的代碼更加簡化
  • 文法
EL表達式的格式都是以s{}表示。例如${userinfo}代表擷取變量userinfo的值,${對象.屬性},可以有多層操作
    
當EL表達式中的變量不給定範圍時,則預設在page範圍查找,然後依次在request、session、application範圍查找,如果找到不再繼續找下去,但是假如全部的範圍都沒有找到時,就回傳””
    
可以用範圍作為字首表示屬于哪個範圍的變量,例如:${pagescope.userinfo}表示通路page範圍中的userinfo變量
           

屬性範圍在EL中的名稱

【jsp中】【sL表達式中】
       
    Page    pagescope 
       
    Request requestScope
       
    Session sessionScope 
       
    Application applicationscope

           

對比

  • <%= (String)request.getAttribute(“name”)%> 等價于 ${name}
  • 在reqeust中設定值,然後在請求轉發到頁面,使用EL表達式取值

【面試必備】什麼是請求重定向sendRedirect

簡介:講解請求重定向sendRedirect

什麼是請求重定向

  • 用戶端發送請求,Servlet做出業務邏輯處理
  • Servlet調用response.sendRedirect(“xxx.jsp”)方法,把要通路的目标資源作為response響應資訊發給用戶端浏覽器
  • 用戶端浏覽器重新通路伺服器資源xx.jsp,伺服器再次對用戶端浏覽器做出響應o請求重定向,不能通路WEB-INF下的檔案,浏覽器上的視窗位址會改版,可以用于跳轉第三方位址或者應用裡面的其他Servelt、jsp等
  • 例子:response.sendRedirect("/WEB-INF/admin.jsp");
Javaweb核心裡面的轉發-重定向和EL表達式Javaweb核心裡面的轉發-重定向和EL表達式

注意點

  • 重定向是取不到request中的存儲的資料,如果目前servlet是重定向,浏覽器可以看到兩個請求
    • 案例測試:在reqeust中設定值,然後在請求轉發到頁面,使用EL表達式取值
  • 調用sendRedirect)方法,會在響應中設定Location響應報頭,這個過程對于使用者來說是透明的,浏覽器會自動完成新的通路
  • 重定向路徑問題:如果沒有加http開頭,則認為是目前應用裡面的servlet重定向,預設加上應用上下文;
  • 如果有加http則會使用配置的全路徑進行跳轉o如果請求轉發可以滿足需要時,盡量使用請求轉發,而不是重定向,效率性能更好