Jsp 1.什么是jsp? 他和servlet的技術(shù)一樣,都是sun公司,定義的一種開發(fā)動態(tài)web資源的技術(shù),
Jsp和html很相似,區(qū)別在于html只能為提供靜態(tài)數(shù)據(jù),而jsp技術(shù)允許在于面中嵌套java代碼。為用戶提供動態(tài)數(shù)據(jù)。
Jsp≈java html Jsp實(shí)際就是servlet,他是由容器翻譯稱為servlet源文件,在編譯用戶看見的就是servlet的響應(yīng)結(jié)果
2.為什么要使用jsp? 其原因?yàn)椋撼绦虻臄?shù)據(jù)通常美化后輸出 讓jsp既能夠用java代碼生成動態(tài)數(shù)據(jù),又能夠做美化顯示,便于頁面的維護(hù),讓servlet即產(chǎn)生數(shù)據(jù), 又可以在里面嵌套html代碼美化數(shù)據(jù),但是會導(dǎo)致程序的可讀性差。難以維護(hù)
總結(jié):不管是jsp還是servlet,都可以用于開發(fā)動態(tài)的web資源,但是由于這兩門技術(shù)特點(diǎn),逐漸把servlet作為web應(yīng)用中的控制邏輯組件來使用,然后把jsp作為展示數(shù)據(jù)的模板來使用
<% %> 引用java腳本 <%= .... %> 表達(dá)式 練習(xí):通過jsp在網(wǎng)頁上做九九乘法表
3.JSP的流程? 每個(gè)jsp頁面在第一個(gè)訪問時(shí),web容器都會把請求交給jsp引擎,(即一個(gè)java程序)去處理,jsp引擎將jsp翻譯成一個(gè)JSPServlet(實(shí)質(zhì)上也是一個(gè)Servlet)然后按照Servlet的調(diào)用方式進(jìn)行調(diào)用
由于jsp第一次訪問時(shí)會翻譯稱為servlet所以訪問通常會比較慢,但是第二次訪問,jsp引擎如果發(fā)現(xiàn)jsp沒有變化,就不會翻譯。
4.Jsp運(yùn)行原理和九大內(nèi)置對象 Jsp引擎在調(diào)用jsp對應(yīng)的JSPServlet時(shí),會傳遞或者創(chuàng)建9個(gè)于web開發(fā)相關(guān)的對象供JSPServlet使用,jsp技術(shù)的設(shè)計(jì)者為便于開發(fā)人員在編寫jsp頁面時(shí)獲得這些web對象的引用,特地定義了9個(gè)相應(yīng)的變量,開發(fā)人員在jsp頁面中通過這些變量就可以快速獲得者9大對象引用
Jsp語法 A. 編輯器的指令: Page include taglib B.腳本語法: 注釋:<!-- -->,<% .... --> 表明:<%! .....%> 表達(dá)式:<%= ......%> Java腳本段:<% .....%> 頁面指令:<%@.....%> C.動態(tài)語法: <jsp: foward>,<jsp:include>,<jsp:plugin>,<jsp:getProerty>,<jsp:useBean> Page: page用于定義jsp頁面各種屬性,無論page指令出現(xiàn)的在jsp頁面中的什么地方,它的作用都是jsp頁面,為了保持程序的可讀性和良好的編程習(xí)慣,page指令是放在整個(gè)jsp頁面的初始化位置
Include: 翻譯:包括包含 靜態(tài)導(dǎo)入: 兩個(gè)文件進(jìn)行合并,編譯成一個(gè)servlet,在A.jsp文件中,可以直接使用B.jsp文件中的變量,所以A.jsp中不能定義B.jsp中的相同變量。 <%@ include file=”B.jsp” %> 動態(tài)導(dǎo)入: 兩個(gè)文件是獨(dú)立的編譯成多個(gè)servlet,在A.jsp文件中值不可以直接使用,B.jsp文件中的變量,所以A.jsp中可以定義B.jsp中的相同變量。 <jsp:include page=”B.jsp”></jsp:include>
表達(dá)式: <%=....%>在頁面中輸出變量值。注意后面不能有分號 聲明: <%!...%>相當(dāng)于定義了一個(gè)類的成員變量或者成員方法 Java腳本: <%.....%>這里聲明的變量都是局部變量,或放置語句 |
|