千里馬

          天馬行空

          jsp技術(shù)基礎(chǔ)

          1,jsp是什么?
           jsp是建立在servlet規(guī)范功能至上的動態(tài)網(wǎng)頁技術(shù),與asp和php相似,都是在網(wǎng)頁文件里嵌入腳本代碼,產(chǎn)生動態(tài)的內(nèi)容,只不過jsp使用的腳本語言是java語言。
            jsp文件在用戶第一次請求是,web容器會把jsp文件編譯成servlet,再有servlet處理用戶請求,jsp本質(zhì)上就是servlet。
          2,jsp文件的執(zhí)行過程:請求jsp文件-》web容器檢驗jsp語法是否正確-》將其轉(zhuǎn)換成servlet的源文件-》javac編譯工具把該源碼文件編譯成clss文件-》創(chuàng)建servlet實例-》以servlet的方式為請求提供服務(wù)。
          3,jsp元素的三中內(nèi)容:指令元素,腳本元素,動作元素。
           指令元素有:page include,taglib 指令元素為jsp的轉(zhuǎn)換過程提供一些配置信息,不會產(chǎn)生任何的輸入。
                       page指令就是設(shè)置頁面的屬性,這些屬性將用于web容器轉(zhuǎn)換和編譯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 指令用于將其他頁面的內(nèi)容引入,包括jsp,html ,文本文件等只有一哥屬性file
                       taglib指令用于引入一個標(biāo)簽庫。在使用標(biāo)簽時,需要制定標(biāo)簽庫的uri唯一標(biāo)示符,和prefix前綴。
            腳本元素:分為聲明<!% %>,腳本段<%  %>,表達(dá)式<%= %>。聲明是為添加成員變量的代碼。腳本段是添加代碼段到服務(wù)的方法里。表達(dá)式是一個輸出語句。
          動作元素為請求在處理階段,也就是servlet的提供服務(wù)階段提供一些信息,好像做了某個動作,影響了返回客戶端的結(jié)果。
          動作元素 的最大好處是可以使用一個標(biāo)簽來完成一個復(fù)雜的功能使代碼更衣閱讀和維護(hù)。
              一、JSP動作元素分類

          JSP動作元素分為如下五類。

          第一類是與存取JavaBean有關(guān)的,包括如下三個動作元素。

          <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有關(guān),包括如下六個動作元素。

          <jsp:root>、<jsp:declaration>、<jsp:scriptlet>、<jsp:expression_r>、<jsp:text>、<jsp:output>

          第四類也是JSP 2.0新增的動作元素,主要用來動態(tài)的生成XML元素標(biāo)簽的值,包括如下三個動作元素。

          <jsp:attribute>、<jsp:body>、<jsp:element>

          第五類也是JSP 2.0新增的動作元素,主要用來Tag File中,包括如下兩個動作元素。

          <jsp:invoke>、<jsp:doBody>
          4,jsp頁面的三種注釋:
          <!---->jsp注釋
          java注釋
          <%----%>隱藏注釋
          5,jsp的九種內(nèi)置對象:
           
          (1).request對象
          客戶端的請求信息被封裝在request對象中,通過它才能了解到客戶的需求,然后做出響應(yīng)。它是HttpServletRequest類的實例。
          (2).response對象
          response對象包含了響應(yīng)客戶請求的有關(guān)信息,但在JSP中很少直接用到它。它是HttpServletResponse類的實例。
          (3).session對象
          session對象指的是客戶端與服務(wù)器的一次會話,從客戶連到服務(wù)器的一個WebApplication開始,直到客戶端與服務(wù)器斷開連接為止。它是HttpSession類的實例。
          (4).out對象
          out對象是JspWriter類的實例,是向客戶端輸出內(nèi)容常用的對象
          (5).page對象
          page對象就是指向當(dāng)前JSP頁面本身,有點象類中的this指針,它是java.lang.Object類的實例 。
           (6).application對象
          application對象實現(xiàn)了用戶間數(shù)據(jù)的共享,可存放全局變量。它開始于服務(wù)器的啟動,直到服務(wù)器的關(guān)閉,在此期間,此對象將一直存在;這樣在用戶的前后連接或不同用戶之間的連接中,可以對此對象的同一屬性進(jìn)行操作;在任何地方對此對象屬性的操作,都將影響到其他用戶對此的訪問。服務(wù)器的啟動和關(guān)閉決定了application對象的生命。它是ServletContext類的實例。
           (7).exception對象
          exception對象是一個例外對象,當(dāng)一個頁面在運行過程中發(fā)生了例外,就產(chǎn)生這個對象。如果一個JSP頁面要應(yīng)用此對象,就必須把isErrorPage設(shè)為true,否則無法編譯。他實際上是java.lang.Throwable的對象。
            (8).pageContext對象
          pageContext對象提供了對JSP頁面內(nèi)所有的對象及名字空間的訪問,也就是說他可以訪問到本頁所在的SESSION,也可以取本頁面所在的application的某一屬性值,他相當(dāng)于頁面中所有功能的集大成者,它的本類名也叫pageContext。
            (9).config對象
          config對象是在一個Servlet初始化時,JSP引擎向它傳遞信息用的,此信息包括Servlet初始化時所要用到的參數(shù)(通過屬性名和屬性值構(gòu)成)以及服務(wù)器的有關(guān)信息(通過傳遞一ServletContext對象)
          6,jsp和servlet的關(guān)系是什么?
          jsp是一種腳本語言,包裝了servlet系統(tǒng)的界面,簡化了java和servlet的使用難度。jsp仍沒有超出java和servlet的使用范圍,不僅jsp頁面內(nèi)可以使用java代碼,而且jsp是先編譯成servlet之后才開始運行的。jsp在服務(wù)器上執(zhí)行,并將輸出結(jié)果返回給客戶端瀏覽器,可以說基本上與瀏覽器無關(guān)。換句話說,jsp是一種特殊的servlet。jsp與servlet的主要差異在于,jsp提供了一套簡單的標(biāo)簽,和html融合的相當(dāng)好,可以使不了解servlet的人做出動態(tài)網(wǎng)頁。對于java語言不熟悉 的人覺得jsp開發(fā)比較方便。jsp修改后可以立即看到結(jié)果,不需要手工編譯,jsp引擎會來做這些工作;而servlet確需要編譯,重新啟動servlet引擎一系列動作。除了轉(zhuǎn)換和編譯階段,區(qū)別不大。

          posted on 2012-05-14 19:56 Mr Lee 閱讀(119) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           

          My Links

          Blog Stats

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章檔案

          (hibernate)http://www.aygfsteel.com/dyllove98/archive/2012/05/12/377959.html

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 仙居县| 都匀市| 商河县| 吕梁市| 且末县| 利辛县| 区。| 茂名市| 邵东县| 包头市| 神农架林区| 石泉县| 和田市| 中超| 甘德县| 甘泉县| 晴隆县| 武宣县| 博罗县| 舒城县| 娄烦县| 马公市| 灵宝市| 阜宁县| 和静县| 洪湖市| 巨野县| 合阳县| 肥东县| 灵台县| 浦江县| 阳东县| 赤峰市| 寿宁县| 错那县| 太保市| 富裕县| 锡林郭勒盟| 哈密市| 鄯善县| 玛沁县|