1,jsp是什么?
jsp是建立在servlet規范功能至上的動態網頁技術,與asp和php相似,都是在網頁文件里嵌入腳本代碼,產生動態的內容,只不過jsp使用的腳本語言是java語言。
jsp文件在用戶第一次請求是,web容器會把jsp文件編譯成servlet,再有servlet處理用戶請求,jsp本質上就是servlet。
2,jsp文件的執行過程:請求jsp文件-》web容器檢驗jsp語法是否正確-》將其轉換成servlet的源文件-》javac編譯工具把該源碼文件編譯成clss文件-》創建servlet實例-》以servlet的方式為請求提供服務。
3,jsp元素的三中內容:指令元素,腳本元素,動作元素。
指令元素有:page include,taglib 指令元素為jsp的轉換過程提供一些配置信息,不會產生任何的輸入。
page指令就是設置頁面的屬性,這些屬性將用于web容器轉換和編譯jsp的時候使用。
<%@ page
[ language="java" ]
[ extends="package .class" ]
[ import="{package .class | .*}, ..." ]
[ session="true|false" ]
[ buffer="none|8kb|sizekb" ]
[ autoFlush="true|false" ]
[ isThreadSafe="true|false" ]
[ info="text" ]
[ errorPage="relativeURL" ]
[ contentType="mimeType [ ;charset=characterSet ]" |
"text/html ; charset=ISO-8859-1" ]
[ isErrorPage="true|false" ]
%>
include 指令用于將其他頁面的內容引入,包括jsp,html ,文本文件等只有一哥屬性file
taglib指令用于引入一個標簽庫。在使用標簽時,需要制定標簽庫的uri唯一標示符,和prefix前綴。
腳本元素:分為聲明<!% %>,腳本段<% %>,表達式<%= %>。聲明是為添加成員變量的代碼。腳本段是添加代碼段到服務的方法里。表達式是一個輸出語句。
動作元素為請求在處理階段,也就是servlet的提供服務階段提供一些信息,好像做了某個動作,影響了返回客戶端的結果。
動作元素 的最大好處是可以使用一個標簽來完成一個復雜的功能使代碼更衣閱讀和維護。
一、JSP動作元素分類
JSP動作元素分為如下五類。
第一類是與存取JavaBean有關的,包括如下三個動作元素。
<jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>
第二類是JSP基本動作元素,也是JSP 1.2就開始有的動作元素,包括如下六個動作元素。
<jsp:include>、<jsp:forward>、<jsp:param>、<jsp:plugin>、<jsp:params>、<jsp:fallback>
第三類是JSP 2.0新增的動作元素,主要與JSP document有關,包括如下六個動作元素。
<jsp:root>、<jsp:declaration>、<jsp:scriptlet>、<jsp:expression_r>、<jsp:text>、<jsp:output>
第四類也是JSP 2.0新增的動作元素,主要用來動態的生成XML元素標簽的值,包括如下三個動作元素。
<jsp:attribute>、<jsp:body>、<jsp:element>
第五類也是JSP 2.0新增的動作元素,主要用來Tag File中,包括如下兩個動作元素。
<jsp:invoke>、<jsp:doBody>
4,jsp頁面的三種注釋:
<!---->jsp注釋
java注釋
<%----%>隱藏注釋
5,jsp的九種內置對象:
(1).request對象
客戶端的請求信息被封裝在request對象中,通過它才能了解到客戶的需求,然后做出響應。它是HttpServletRequest類的實例。
(2).response對象
response對象包含了響應客戶請求的有關信息,但在JSP中很少直接用到它。它是HttpServletResponse類的實例。
(3).session對象
session對象指的是客戶端與服務器的一次會話,從客戶連到服務器的一個WebApplication開始,直到客戶端與服務器斷開連接為止。它是HttpSession類的實例。
(4).out對象
out對象是JspWriter類的實例,是向客戶端輸出內容常用的對象
(5).page對象
page對象就是指向當前JSP頁面本身,有點象類中的this指針,它是java.lang.Object類的實例 。
(6).application對象
application對象實現了用戶間數據的共享,可存放全局變量。它開始于服務器的啟動,直到服務器的關閉,在此期間,此對象將一直存在;這樣在用戶的前后連接或不同用戶之間的連接中,可以對此對象的同一屬性進行操作;在任何地方對此對象屬性的操作,都將影響到其他用戶對此的訪問。服務器的啟動和關閉決定了application對象的生命。它是ServletContext類的實例。
(7).exception對象
exception對象是一個例外對象,當一個頁面在運行過程中發生了例外,就產生這個對象。如果一個JSP頁面要應用此對象,就必須把isErrorPage設為true,否則無法編譯。他實際上是java.lang.Throwable的對象。
(8).pageContext對象
pageContext對象提供了對JSP頁面內所有的對象及名字空間的訪問,也就是說他可以訪問到本頁所在的SESSION,也可以取本頁面所在的application的某一屬性值,他相當于頁面中所有功能的集大成者,它的本類名也叫pageContext。
(9).config對象
config對象是在一個Servlet初始化時,JSP引擎向它傳遞信息用的,此信息包括Servlet初始化時所要用到的參數(通過屬性名和屬性值構成)以及服務器的有關信息(通過傳遞一ServletContext對象)
6,jsp和servlet的關系是什么?
jsp是一種腳本語言,包裝了servlet系統的界面,簡化了java和servlet的使用難度。jsp仍沒有超出java和servlet的使用范圍,不僅jsp頁面內可以使用java代碼,而且jsp是先編譯成servlet之后才開始運行的。jsp在服務器上執行,并將輸出結果返回給客戶端瀏覽器,可以說基本上與瀏覽器無關。換句話說,jsp是一種特殊的servlet。jsp與servlet的主要差異在于,jsp提供了一套簡單的標簽,和html融合的相當好,可以使不了解servlet的人做出動態網頁。對于java語言不熟悉 的人覺得jsp開發比較方便。jsp修改后可以立即看到結果,不需要手工編譯,jsp引擎會來做這些工作;而servlet確需要編譯,重新啟動servlet引擎一系列動作。除了轉換和編譯階段,區別不大。