1.JSP全稱是Java Server Pages,它和servle技術一樣,都是SUN公司定義的一種用於開發動態web資源的技術。
2.JSP技術也是一種動態web資源的開發技術
因為JSP技術允許在頁面中嵌套java代碼,以產生動態數據,並且web服務器在執行jsp時,web服務器會傳遞web開發相關的對象給jsp,jsp通過這些對象,可以與浏覽器進行交互,所以jsp當然也是一種動態web資源開發技術。
3.JSP和Servlet的比較
本人是先學Servlet的,Servlet感覺就是在寫純粹的java代碼,而jsp中既可以寫java代碼又可以寫 腳本語言。很大程度上jsp和servlet是很相似的,只不過jsp站的更高,將很多servlet的操作給封裝起來了。不管是JSP還是Servlet,雖然都可以用於開發動態web資源。但由於這2門技術各自的特點,在長期的軟件實踐中,人們逐漸把servlet作為web應用中的控制器組件來使用,而把JSP技術作為數據顯示模板來使用。
4.JSP的原理圖:
原理解釋:
(1)Web容器根據客戶端訪問的資源類別(Web容器會根據資源的第一行代碼確定),如果你訪問的是JSP資源,就交由JSP引擎處理如果訪問的是Servlet資源,就交由Servlet引擎處理
(2)如果是JSP資源,JSP引擎會將其翻譯成Servlet資源,傳入相關的對象,如果是靜態資源,以out.write()形式輸出,如果是動態資源,以out.print()形式輸出。(這個查看C:\apache-tomcat-7.0.22-windows-x86\apache-tomcat-7.0.22\wZ喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcmtcQ2F0YWxpbmFcbG9jYWxob3N0z8K1xLbU06a5pLPMzsS8/rXE1LS0+sLrvs2/ydLUv7Sz9sC0o6k8YnI+CiAgo6gzo6m1sUpTUNL9x+bU2ret0uvV/ci3uvOjrL2rxuTK5LP2uPhTZXJ2bGV00v3H5qOstbHX91NlcnZsZXS0psDtoaM8YnI+CiAgo6g0o6nI57n71Nm0zrfDzsrNrNK7uPZqc3BuYW1lLmpzcM7EvP6jrLet0uu5pNf30sDIu7340NCjrFNlcnZsZXTS/cfmuaTX97/J0tS89buvo6zL+dLU1eLKx86qu+HDtLXaTrTOvc+12jG0zr/stcTUrdLyPC9zdHJvbmc+PC9wPgo8cD48c3Ryb25nPjUuIEpTUNPvt6ggPGJyPgogIKOoMaOpSlNQxKOw5tSqy9ggPGJyPgrEo7Dm1KrL2L7NysdIVE1M1tC1xL6yzKzE2sjdo6y8tDxib2R5Piw8dGFibGU+LDxmb3JtPrXI1NpodG1s1tDTw7W9tcSx6sepPGJyPgo8YnI+CiAgo6gyo6lKU1Cx7bTvyr0gPGJyPgogICAgICAgIGE+0++3qKO6PCU9"字符串變量或表達式"%>
b>結束無分號
c>默認輸出到浏覽器
(3)JSP腳本片斷
a>語法:<% ...java代碼; %>
b>腳本片斷中的注釋符號與java代碼一致
c>多個JSP腳本片斷中定義的變量,本質是_jspService()方法中的局部變量,可以訪問
注意:JSP修改後,無需重新部署,直接刷新,Web容器會自動比較新舊二個版本JSP
(4)JSP聲明
a>語法:<%! ...java代碼 %>
b>JSP聲明的變量或方法,會成為Servlet的實例變量或實例方法或普通方法
c>JSP腳本片斷中不能定義局部方法,方法只能定義在JSP聲明中
5)JSP注釋
a>語法:<%-- 注釋的內容 --%>
b>對於HTML注釋來說,JSP引擎會將其翻譯成servlet內容,
對於JSP注釋來說,JSP引擎不會將其翻譯成servlet內容
所以綜合上述,對於注釋應該優先考慮用jsp的注釋方式。
c>注釋不能嵌套使用
6)JSP指令
a>指令是程序員控制JSP引擎做什麼的依據
b>有三類:
page
include
tablib
c>page指令的屬性有
language="指明JSP支持的語言,默認為java語言"
import="當前JSP頁面中,需要導入的包,其中import可以寫多次"
session="true表示需要服務器創建session/false不需要服務器創建session",默認true
buffer="none|8kb|sizekb"JSP輸出使用的緩存大小,默認8kb
autoFlush="true表示當緩存滿時,web容器是自動刷新到客戶端/false需要手工刷新到客戶端",默認true
isThreadSafe="true表示web服務器確保線程安全/false不確保線程安全",默認true
info="text"表示jsp的相關描述信息,可以通過getServletInfo()取得該jsp的信息
errorPage="當前jsp頁面出錯後,轉發到的目標頁面"
isErrorPage="true"(當某個jsp頁面有該屬性時,web容器會自動創建exception對象
上述異常處理屬於局部異常處理
在web.xml文件:
這個配置文件代碼說明了,當出現了代號為500的浏覽器異常時, 此時頁面會跳轉到error_500.jsp的頁面中,如果出現NumberFormatException異常時,頁面也會跳轉到error_500.jsp上,至於具體跳轉到那個頁面上可以隨意的修改
如果全局中有code又有type,此時二者同時顯示
當全局和局部異常同時出現時,局部異常優先
a)JSP頁面的中文采用UTF-8方式編碼
b)JSP保存時采用UTF-8方式編碼
c)指示浏覽器以UTF-8方式查看
contentType="text/html;charset=UTF-8"
isELIgnored="false表法JSP引擎不忽略EL表達式語言/true表法JSP引擎忽略EL表達式語言"