文章目錄
- Javaweb核心裡面的轉發-重定向和EL表達式
-
- 【面試必備】請求轉發RequestDispatcher
-
- 簡介:講解請求轉發RequestDispatcher的知識點
-
- EL表達式-讓JSP通路JavaBean中的資料更簡單
-
- 【面試必備】什麼是請求重定向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);
- 注意點:在浏覽器位址欄中不會顯示出轉發後的位址,屬于伺服器内部轉發,整個過程處于同一個請求當中,是以轉發中資料的存取可以用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");
注意點
- 重定向是取不到request中的存儲的資料,如果目前servlet是重定向,浏覽器可以看到兩個請求
- 案例測試:在reqeust中設定值,然後在請求轉發到頁面,使用EL表達式取值
- 調用sendRedirect)方法,會在響應中設定Location響應報頭,這個過程對于使用者來說是透明的,浏覽器會自動完成新的通路
- 重定向路徑問題:如果沒有加http開頭,則認為是目前應用裡面的servlet重定向,預設加上應用上下文;
- 如果有加http則會使用配置的全路徑進行跳轉o如果請求轉發可以滿足需要時,盡量使用請求轉發,而不是重定向,效率性能更好