《戰地2042》PS5/XS數字標準版升級 現已包含舊世代版本
什麼是JSP
JSP:Java Server Pages:Java伺服器端頁面,也和Servlet一樣,用於動態Web技術。
最大的特點:
就像是在寫HTML
HTML和JSP的區別:
1)HTML只給使用者提供靜態的資料
2)JSP頁面中可以嵌入JAVA程式碼,為使用者提供動態資料。
JSP原理
瀏覽器向伺服器傳送請求,無論訪問什麼資源,其實都是在訪問Servlet
JSP最終也會轉換成一個Java類
JSP本質上就是一個Servlet。
JSP裡面書寫Java的命令格式
<%%>的使用規則
<%
//在jsp中,只有書寫在執行標記內容中才會被當做Java命令
//可以在此宣告Java變數
int num=100;
//宣告執行表示式:數學運算,關係運算,邏輯運算
//宣告控制語句(if---else、for迴圈)
%>
<%=變數值%>在響應體中輸出變數值的語句格式
<%
int num1=100;
int num2=200;
%>
變數num1的值:<%=num1%><br/>
//也可以輸出運算結果
num1+num2=<%=num1+num2%>
JSP檔案內建物件
request
型別:HttpServletRequest
型別:在JSP檔案執行時讀取請求包資訊,與Servlet在請求轉發過程中實現資料共享。
session
型別:HttpSession
作用:JSP檔案在執行時,可以session指向當前使用者私人儲物櫃,新增共享資料,或者讀取共享資料。
全域性作用域物件
JSP檔案內建物件:Application
ServletContext Application:全域性作用域物件
同一個網站中Servlet與JSP,都可以通過當前網站的全域性作用域物件實現資料共享。
Servlet與JSP
Servlet與JSP的分工:
Servlet:負責處理業務並得到處理結果
JSP: 不負責處理業務,主要任務將Servlet中處理結果寫入到響應體中。
Servlet與JSP之間的呼叫關係
Servlet工作完畢後,一般通過請求轉發方式向Tomcat申請呼叫JSP
Servlet與JSP之間實現資料共享的方式
Servlet將處理結果新增到【請求作用域物件】
JSP檔案在執行時從【請求作用域物件】得到處理結果
Http伺服器呼叫JSP檔案步驟
1.Http伺服器將JSP檔案內容編輯為一個Servlet介面實現類(.java)
2.Http伺服器將Servlet介面實現類編譯為class檔案
3.Http伺服器負責建立這個class的例項物件,這個例項物件就是Servlet例項物件
4.Http伺服器通過Servlet例項物件呼叫_jspService方法,將jsp檔案內容寫入到響應體。
EL表示式
EL表示式:
1.命令格式:${作用域物件別名.共享資料}
2.命令作用:
1)EL表示式是EL工具包提供一種特殊命令格式【表示式命令格式】
2)EL表示式在JSP檔案上使用
3)負責在JSP檔案上從作用域物件讀取指定的共享資料並輸出到響應體
3.EL表示式---作用域物件別名
1) 全域性作用域物件:ServletContext 固定名稱:Application
2)會話作用域物件: HttpSession 固定名稱:session
3)請求作用域物件: HttpServletRequest 固定名稱:request
4)當前頁作用域物件:pageContext 固定名稱:pageContext
pageContext是JSP檔案獨有的作用域物件,Servlet中不存在。在當前作用域物件存放的共享資料僅能在當前JSP檔案中使用,不能共享給其他Servlet或者其他JSP檔案,真實開發過程中,主要用於JSTL標籤與JSP檔案之間的資料共享。
3.EL表示式提供作用域物件別名
JSP EL表示式
Application ${applicationScope.共享資料名}
session ${sessionScope.共享資料名}
request ${requestScope.共享資料名}
pageContext ${pageScope.共享資料名}
三.EL表示式將引用物件屬性寫入到響應體
1.命令格式: ${作用域物件別名.共享資料名.屬性名}
2.命令作用:從作用域物件讀取指定共享資料關聯的引用物件的屬性值,並自動將屬性的結果寫入到響應體
3.屬性名:一定要去引用型別屬性名完全一致(大小寫要一樣)
4.EL表示式沒有提供遍歷集合方法,因此無法從作用域物件讀取集合內容輸出
四.EL表示式簡化版
1.命令格式:${共享資料名}
2.命令作用:EL表示式允許開發人員開發室省略作用域物件別名。
3.工作原理:EL表示式監護版由於沒有指定作用域物件,所以在執行時採用【猜】演算法
首先到【pageContext】定位共享資料,如果存在直接讀取輸出並結束執行
如果在【pageContext】沒有定位成功,則到【request】定位共享資料,如果存在直接讀取輸出並結束執行。
如果在【request】沒有定位成功,則到【session】定位共享資料,如果存在直接讀取輸出並結束執行。
如果在【session】沒有定位成功,則到【application】定位共享資料,如果存在直接讀取輸出並結束執行。
如果在【application】沒有定位成功,則會返回null。
4.存在隱患:
容易降低程式執行速度。
容易導致資料定位錯誤
5.應用場景:
設計目的就是簡化從pageContext讀取共享資料並輸出的難度。
6.EL表示式簡化版儘管存在很多隱患,但是在世紀開發過程中,開發人員為了節省時間,一般都是用簡化版,拒絕使用標準版
五.EL表示式------支援運算表示式
1.前提:在JSP檔案有時需要將讀取共享資料進行一番運算後,將運算結果寫入到響應體
2.運算表示式:
1)數學運算
2)關係運算:> >= == < <= !=
gt ge eq lt le != (和上面的符號相對應,一樣)
3)邏輯運算: && || !
六.EL表示式提供內建物件
1.命令格式:${param.請求引數名}
2.命令作用:從通過請求物件讀取當前請求包中請求引數內容,並將請求引數內容寫入到響應體。
3.代替命令:index.jsp
在位址列中輸入請求:http://localhost:8080/myweb/index_1.jsp?username=mike&password=123
在jsp檔案中輸入:${param.username}
${param.password}即可
相當於:
<%
String username=request.getParameter("username");
String password=request.getParameter("password");
%>
<%=username%>
<%=password%>
1.命令格式:&{paramValues.請求引數名[下標]}
2.命令作用:如果瀏覽器傳送的請求引數是【一個請求引數關聯多個值】此時可以通過paramValues讀取請求引數下指定位置的值,並寫入到響應體。
3.代替命令:http://localhost:8080/myweb/index_2.jsp?pageN0=1&pageNo=2&pageNo=3
這個時候pageNo請求引數在請求包中以陣列的形式存在
pageNo:[1,2,3]
<%
String array[] =request.getParameterValues("pageNo");
%>
第一個值:<%=array[0]%>
第二個值:<%=array[1]%>
第三個值:<%=array[2]%>