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>




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章