1.JSP 的運行原理
當服務器上的一個JSP 頁面被第一次請求執行時,服務器上的JSP引擎首先將JSP 頁面文件轉譯成一個java 文件,再將這個java 文件
編譯生成字節碼文件,而後經過執行字節碼文件響應客戶的請求,而當這個JSP 頁面再次被請求執行時,JSP 引擎將直接執行這個字節碼文件來響應客戶。
字節碼文件的主要工做是:
(1) 把 JSP 頁面中普通的HTML 標記符號(頁面的靜態部分)交給客戶的瀏覽器負責顯示。
(2) 執行「<%」和「%>」之間的java 程序片(JSP 頁面中的動態部分),並把執行結果交給客戶的瀏覽器顯示。
(3) 當多個客戶請求一個 JSP 頁面時,JSP 引擎爲每一個客戶啓動一個線程而不是啓動一個進程,
2.一個JSP 頁面可由5種元素組合而成:
(1)普通的 HTML 標記符。
(2)JSP 標籤:如,指令標籤、動做標籤。
(3)變量和方法的聲明。
在「<%!」和「%>」標記符號之間聲明變量和方法
在「<%!」和「%>」之間聲明的變量在整個JSP 頁面內都有效。「<%!」和「%>」之間聲明的變量在整個JSP 頁面內都有效,因
爲JSP 引擎將JSP 頁面轉譯成Java 文件時,將這些變量做爲類的成員變量。
在「<%!」和「%>」之間聲明方法,該方法在整個JSP 頁面有效
(4)Java 程序片。
在「<%」和「%>」之間插入Java 程序片。JSP 引擎將JSP 頁面轉譯成Java 文件時,將各個程序片的這些變量做爲類中某個方法的
變量,即局部變量。
(5)Java 表達式。
在「<%=」和「%>」之間插入一個表達式(注意:不可插入語句,「<%=」是一個完整的符號,「<%」和「=」之間不要有空格)
3.JSP 中的註釋
(1) HTML 註釋:在標記符號「<!--」和「-->」之間加入註釋內容
(2) JSP 註釋:在標記符號「<%--」和「--%>」之間加入註釋內容
4.JSP 指令標籤
1.page 指令用來定義整個JSP 頁面的一些屬性和這些屬性的值。
page 指令的格式:
<%@ page 屬性1= 「屬性1的值」 屬性2=「屬性2的值」 ……%>
屬性值老是用單引號或引號雙號括起來
<%@ page contentType="text/html;charset=GB2312" %>
1.language 屬性
定義 JSP 頁面使用的腳本語言,該屬性的值目前只能取"java"
<%@ page language="java" %>
language 屬性的默認值是"java",即便你在JSP 頁面中沒有使用page 指令指定該屬性的值的話
2.import 屬性
該屬性的做用是爲 JSP 頁面引入Java 核心包中的類,這樣就能夠在JSP 頁面的程序片部分、變量及函數聲明部分、表達式部分使用包
中的類。能夠爲該屬性指定多個值,該屬性的值能夠是Java 某包中的全部類或一個具體的類
3.contentType 屬性
定義 JSP 頁面響應的MIME(Multipurpose Internet Mail Extention)類型和JSP 頁面字符的編碼
<%@ page contentType="text/html;charset=GB2312" %>
4.session 屬性
用於設置是否須要使用內置的 session 對象。
session 的屬性值能夠是true 或false,session 屬性默認的屬性值是true。
5.buffer 屬性
內置輸出流對象 out 負責將服務器的某些信息或運行結果發送到客戶端顯示,buffer 屬性用來指定out 設置的緩衝區的大小或不使用緩衝區。
buffer 屬性能夠取值 「none」,設置out 不使用緩衝區。Buffer 屬性的默認值是8kb
<%@ page buffer= 「24kb」 %>
6.auotFlush 屬性
指定 out 的緩衝區被填滿時,緩衝區是否自動刷新
auotFlush 能夠取值true 或false。auotFlush 屬性的默認值是true。當auotFlush 屬性取值false 時,若是out 的緩衝區填滿時,就會出現
緩存溢出異常。當buffer 的值是 「none」時,auotFlush 的值就不能設置成false。
7.isThreadSafe 屬性
用來設置 JSP 頁面是否可多線程訪問。
isThreadSafe 的屬性值取true 或false。當isThreadSafe 屬性值設置爲true 時,JSP 頁面能同時響應多個客戶的請求;當isThreadSafe 屬
性值設置成false 時,JSP 頁面同一時刻只能處理響應一個客戶的請求,其餘客戶需排隊等待。isThreadSafe 屬性的默認值是true。
8.info 屬性
該屬性爲 JSP 頁面準備一個字符串,屬性值是某個字符串
<%@ page info= 「we are students」 %>
能夠在 JSP 頁面中使用方法:getServletInfo();獲取 info 屬性的屬性值。
注意:page 指令只能給import 屬性指定多個值;其它屬性只能指定一個值。
2.include 指令標籤
格式:
<%@ include file= 「文件的名字」 %>
做用:
是在 JSP 頁面出現該指令的位置處,靜態插入一個文件。被插入的文件必須是可訪問和可以使用的,即該文件必須和
當前JSP 頁面在同一Web 服務目錄中。所謂靜態插入,就是當前JSP頁面和插入的部分合併成一個新的JSP 頁面,而後JSP 引擎再將這個
新的JSP 頁面轉譯成Java 類文件。所以,插入文件後,必須保證新合併成的JSP 頁面符合JSP 語法規則,即可以成爲一個JSP 頁面文件。html
5.JSP 動做標籤
動做標籤是一種特殊的標籤,它影響JSP 運行時的功能。
1.include 動做標籤
格式:
<jsp:include page= 「文件的名字」/>或<jsp:include page= 「文件的名字」></jsp:include>
該動做標籤告訴 JSP 頁面動態包含一個文件,即JSP 頁面運行時纔將文件加入。與靜態插入文件的include 指令標籤不一樣,當JSP 引
擎把JSP 頁面轉譯成Java 文件時,不把JSP 頁面中動做指令include所包含的文件與原JSP 頁面合併一個新的JSP 頁面,而是告訴Java
解釋器,這個文件在JSP 運行時(Java 文件的字節碼文件被加載執行)才包含進來。若是包含的文件是普通的文本文件,就將文件的內容發
送到客戶端,由客戶端負責顯示;若是包含的文件是jsp 文件,JSP引擎就執行這個文件,而後將執行的結果發送到客戶端,並由客戶端負責顯示這些結果。
2.param 動做標籤
param 標籤以「名字—值」對的形式爲其它標籤提供附加信息,這個標籤與jsp:include、jsp:forward、jsp:plugin 標籤一塊兒使用。
param 動做標籤:
<jsp:param name= 「名字」 value= 「指定給param 的值」>
當該標籤與 jsp:include 標籤一塊兒使用時,能夠將param 標籤中的值傳遞到include 指令要加載的文件中去,所以include 動做標籤若是
結合param 標籤,能夠在加載文件的過程當中向該文件提供信息
<jsp:include page="tom.jsp">
<jsp:param name="computer" value="300" />
</jsp:include>
3.forward 動做標籤
forwar 指令:
<jsp:forward page="要轉向的頁面" ></jsp:forward>或<jsp:forward page="要轉向的頁面" />
做用是:從該指令處中止當前頁面的繼續執行,而轉向其它的一個JSP 頁面
該指令也能夠結合param 指令,向要轉到的頁面傳送信息。
<jsp:forward page="come.jsp" >
<jsp:param name="number" value="12345" />
</jsp:forward>
4.plugin 動做標籤
在頁面中使用普通的HTML 標記<apple ….></apple>可讓客戶下載運行一個java applet 小應用程序,但並非全部的客戶的瀏覽器
都支持java apple 小程序。使用plugin 動做標籤能夠保證客戶能執行你的小應用程序。
該動做標籤指示 JSP 頁面加載java plugin,該插件由客戶負責下載,並使用該插件來運行Java applet。
Plugin 動做標籤:
<jsp:plugin type="applet" code="小應用程序的字節碼文件" jreversion="java 虛擬機版本號" width=" 小程序寬度值" height="小程序高度值" >
<jsp:fallback>
提示信息:用來提示用戶的瀏覽器是否支持插件下載
</jsp:fallback>
</jsp:plugin>
5.useBean 動做標籤
該標籤用來建立並使用一個java beans,是很是重要的一個動做標籤
java