JSP的腳本元素 指令元素 動作元素 頁面元素以及執行過程
JSP: Java Server Page ,生成動態網頁, servlet的一個升級產品
一、語法
1..jsp爲後綴
2.存放位置,除WEB-INF以外的位置,也可以是web應用的根目錄中
3.在html標籤中,使用特殊的JSP元素添加JAVA代碼
特殊的JSP元素:腳本元素、指令元素、動作元素
二、腳本元素
1)表達式腳本:<%= %> 計算表達式的值,並輸出到瀏覽器
注意:表達式必須要有計算結果;沒有分號
2)聲明腳本:<%! %> 聲明/定義變量或方法
3)普通腳本:<% %> 可以寫java有效方法體語句,通常用於寫邏輯代碼(順序/分支/循環)
注意,不能出現:定義方法、import、package語句
三、JSP執行過程[難點]
1)翻譯:根據特定的翻譯規則,將.jsp翻譯成.java文件(servlet) jsp就是servlet.
2)編譯:將.java文件編譯成.class文件
3)執行:執行.class文件(進入servlet的生命週期)
JSP在訪問時,第一次會慢,以後運行速度會提高,原因:
第一次請求:翻譯、編譯、執行
以後再請求時:直接運行編譯後.class文件.
.jsp翻譯成.java的翻譯規則:
<%= %> --> service方法體語句,out.print(XXX);
<%! %> --> 成員方法和成員變量(注意線程同步問題)
<% %> --> service方法體語句
html標籤 --> service方法體語句,out.write(XXX);
代碼閱讀,有錯找出錯誤,沒錯輸出結果:
test1.jsp
<%!
int num = 10;
%>
num = <%=num %> //10
<%
int num = 100; //OK
%>
num = <%=num %> //100
num = <%=this.num %> //10
test2.jsp
<%
int num = 100;
%>
num = <%=num %> //100
<%!
int num = 10; //
%>
num = <%=num %> //100
num = <%=this.num %> //10
課堂練習:使用腳本元素打印9*9乘法表,奇數行紅字顯示,偶數行藍字顯示。
http://ip:port/web應用/xx.jsp
所有JSP元素,不允許嵌套訪問。
四、指令元素 <%@指令名 屬性名=值 屬性名2=值2 %>
1、頁面指令 <%@ page %> 定義當前jsp頁面相關的屬性值
1)contentType="text/html;charset=gbk" 標識當前jsp頁面中的響應的類型
2)import="" 導入的包或類,默認導入4個包
(java.lang.*/javax.servlet.*/javax.servlet.http.*/javax.servlet.jsp.*)
a.import="java.util.*"
import="java.text.*"
b.import="java.util.*,java.text.*"
3)isErrorPage="true|false(默認)" 標識當前頁是否能處理異常
4)errorPage="url" 標識當前jsp頁面如果出了異常,由誰來處理異常
(isErrorPage=false)
5)language="java" 標識當前jsp頁面使用的語言,默認java
6)session="true(默認)|false" 標識當前jsp頁面中是否能直接使用session對象
servlet中session的創建採用的是懶漢式 request.getSession(true|false);
jsp中session的創建採用的是餓漢式(client向server第一次請求jsp時,當前
client的session就自動創建)
7)isElIgnored="true|false" 默認值取決於server的版本 標識當前jsp頁面是否忽略EL表
達式
8)pageEncoding="" 標識當前jsp頁面使用的字符編碼
2、包含指令 <%@ include file="url" %> 標識在當前jsp頁面中要引入/包含其他web資源
特點:靜態包含(源碼包含,編譯前包含)
-------------------------------------
a.jsp aaaaaa
bbbbbb
<%@ include file="/b.jsp"%>
ccc
ddd
-------------------------------------
b.jsp 111
222
-------------------------------------
a.jsp --> 翻譯過程,a.jsp+b.jsp=total(a.java)-->編譯a.class-->執行
-------------------------------------
注意事項:相互包含的頁面中,變量的重複定義問題。
3、標籤庫指令 <%@ taglib uri="" prefix="" %> 標識當前jsp頁面中要用標籤庫
五、動作元素
1、包含動作 <jsp:include page="url"/> 標識當頁JSP頁面要引入/包含其他web資源
特點:動態包含(結果包含,編譯後包含)
等價於:
request.getRequestDispatcher("/url-pattern").include(request, response);
-------------------------------------
a.jsp aaaaaa
bbbbbb
<jsp:include page="/b.jsp"/>
ccc
ddd
-------------------------------------
b.jsp 111
222
-------------------------------------
a.jsp-->翻譯a.jsp(a.java)-->編譯-->執行結果:resulta+resultb==客戶端的最終結果
b.jsp-->翻譯b.jsp(b.java)-->編譯-->執行結果:resultb
-------------------------------------
<jsp:include page="url">
<jsp:param name="" value=""/> 給被包含的資源傳參數
</jsp:include>
在被包含的資源中獲取參數的方式:String str = request.getParameter("name");
2、請求轉發動作 <jsp:forward page="url"/> 標識在當前jsp中要轉到其他web資源
等價於:
request.getRequestDispatcher("/url-pattern").forward(request, response);
特點:1)地址欄不變
2)服務器端的轉發
3)永久轉向
4)共享同一個request對象
<jsp:forward page="url">
<jsp:param name="" value=""/> 給被轉向的資源傳參數
</jsp:forward>
在被轉向的資源中獲取參數的方式:String str = request.getParameter("name");
---------------------------
JSP頁面元素
1、腳本元素
<%= %>
<%! %>
<% %>
2、指令元素
<%@ page contentType="" import="" isErrorPage="" errorPage="" %>
<%@ include file="url" %> 特點、與<jsp:include >的區別
<%@ taglib uri="" prefix="" %>
3、動作元素
<jsp:include page="url"/> 特點、與<%@include %>的區別
<jsp:forward page="url">
<jsp:param name="" value=""/>
</jsp:forward>
一、語法
1..jsp爲後綴
2.存放位置,除WEB-INF以外的位置,也可以是web應用的根目錄中
3.在html標籤中,使用特殊的JSP元素添加JAVA代碼
特殊的JSP元素:腳本元素、指令元素、動作元素
二、腳本元素
1)表達式腳本:<%= %> 計算表達式的值,並輸出到瀏覽器
注意:表達式必須要有計算結果;沒有分號
2)聲明腳本:<%! %> 聲明/定義變量或方法
3)普通腳本:<% %> 可以寫java有效方法體語句,通常用於寫邏輯代碼(順序/分支/循環)
注意,不能出現:定義方法、import、package語句
三、JSP執行過程[難點]
1)翻譯:根據特定的翻譯規則,將.jsp翻譯成.java文件(servlet) jsp就是servlet.
2)編譯:將.java文件編譯成.class文件
3)執行:執行.class文件(進入servlet的生命週期)
JSP在訪問時,第一次會慢,以後運行速度會提高,原因:
第一次請求:翻譯、編譯、執行
以後再請求時:直接運行編譯後.class文件.
.jsp翻譯成.java的翻譯規則:
<%= %> --> service方法體語句,out.print(XXX);
<%! %> --> 成員方法和成員變量(注意線程同步問題)
<% %> --> service方法體語句
html標籤 --> service方法體語句,out.write(XXX);
代碼閱讀,有錯找出錯誤,沒錯輸出結果:
test1.jsp
<%!
int num = 10;
%>
num = <%=num %> //10
<%
int num = 100; //OK
%>
num = <%=num %> //100
num = <%=this.num %> //10
test2.jsp
<%
int num = 100;
%>
num = <%=num %> //100
<%!
int num = 10; //
%>
num = <%=num %> //100
num = <%=this.num %> //10
課堂練習:使用腳本元素打印9*9乘法表,奇數行紅字顯示,偶數行藍字顯示。
http://ip:port/web應用/xx.jsp
所有JSP元素,不允許嵌套訪問。
四、指令元素 <%@指令名 屬性名=值 屬性名2=值2 %>
1、頁面指令 <%@ page %> 定義當前jsp頁面相關的屬性值
1)contentType="text/html;charset=gbk" 標識當前jsp頁面中的響應的類型
2)import="" 導入的包或類,默認導入4個包
(java.lang.*/javax.servlet.*/javax.servlet.http.*/javax.servlet.jsp.*)
a.import="java.util.*"
import="java.text.*"
b.import="java.util.*,java.text.*"
3)isErrorPage="true|false(默認)" 標識當前頁是否能處理異常
4)errorPage="url" 標識當前jsp頁面如果出了異常,由誰來處理異常
(isErrorPage=false)
5)language="java" 標識當前jsp頁面使用的語言,默認java
6)session="true(默認)|false" 標識當前jsp頁面中是否能直接使用session對象
servlet中session的創建採用的是懶漢式 request.getSession(true|false);
jsp中session的創建採用的是餓漢式(client向server第一次請求jsp時,當前
client的session就自動創建)
7)isElIgnored="true|false" 默認值取決於server的版本 標識當前jsp頁面是否忽略EL表
達式
8)pageEncoding="" 標識當前jsp頁面使用的字符編碼
2、包含指令 <%@ include file="url" %> 標識在當前jsp頁面中要引入/包含其他web資源
特點:靜態包含(源碼包含,編譯前包含)
-------------------------------------
a.jsp aaaaaa
bbbbbb
<%@ include file="/b.jsp"%>
ccc
ddd
-------------------------------------
b.jsp 111
222
-------------------------------------
a.jsp --> 翻譯過程,a.jsp+b.jsp=total(a.java)-->編譯a.class-->執行
-------------------------------------
注意事項:相互包含的頁面中,變量的重複定義問題。
3、標籤庫指令 <%@ taglib uri="" prefix="" %> 標識當前jsp頁面中要用標籤庫
五、動作元素
1、包含動作 <jsp:include page="url"/> 標識當頁JSP頁面要引入/包含其他web資源
特點:動態包含(結果包含,編譯後包含)
等價於:
request.getRequestDispatcher("/url-pattern").include(request, response);
-------------------------------------
a.jsp aaaaaa
bbbbbb
<jsp:include page="/b.jsp"/>
ccc
ddd
-------------------------------------
b.jsp 111
222
-------------------------------------
a.jsp-->翻譯a.jsp(a.java)-->編譯-->執行結果:resulta+resultb==客戶端的最終結果
b.jsp-->翻譯b.jsp(b.java)-->編譯-->執行結果:resultb
-------------------------------------
<jsp:include page="url">
<jsp:param name="" value=""/> 給被包含的資源傳參數
</jsp:include>
在被包含的資源中獲取參數的方式:String str = request.getParameter("name");
2、請求轉發動作 <jsp:forward page="url"/> 標識在當前jsp中要轉到其他web資源
等價於:
request.getRequestDispatcher("/url-pattern").forward(request, response);
特點:1)地址欄不變
2)服務器端的轉發
3)永久轉向
4)共享同一個request對象
<jsp:forward page="url">
<jsp:param name="" value=""/> 給被轉向的資源傳參數
</jsp:forward>
在被轉向的資源中獲取參數的方式:String str = request.getParameter("name");
---------------------------
JSP頁面元素
1、腳本元素
<%= %>
<%! %>
<% %>
2、指令元素
<%@ page contentType="" import="" isErrorPage="" errorPage="" %>
<%@ include file="url" %> 特點、與<jsp:include >的區別
<%@ taglib uri="" prefix="" %>
3、動作元素
<jsp:include page="url"/> 特點、與<%@include %>的區別
<jsp:forward page="url">
<jsp:param name="" value=""/>
</jsp:forward>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.