1. 程式人生 > 遊戲 >《戰地2042》PS5/XS數字標準版升級 現已包含舊世代版本

《戰地2042》PS5/XS數字標準版升級 現已包含舊世代版本

JSP

什麼是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]%>