隨筆-22  評論-8  文章-0  trackbacks-0

          一、指令元素(directive elements):控制所生成的servlet結構。
           JSP指令用于“轉換階段”提供整個JSP頁面的相關信息,影響由JSP頁面生成的Servlet的整體結構。
          指令不會產生任何的輸出到當前的輸出流中。

           1,指令元素語法:
            <%@ directive {attr="value"}* %>
             說明:
            <和% 以及和@,%和>之間不能有任何的空格。
            屬性值兩邊的雙引號可以替換為單引號。引號標記不能完全省略。
            在屬性中使用引號使用\進行轉義。
           2,指令的xml語法:
            <jsp:directive.directiveType attr="value1" attr="value2" ... />
           
            在編寫XML兼容的jsp頁面時,只要不在同一頁面中混用xml語法和標準語法,就可以使用指令的xml兼容模式。
           
           3,指令的三種類型:
            page,include,taglib。

          二、page指令 : 用于設置JSP頁面的屬性,這些屬性將用于和JSP容器通信,控制所生成的servlet結構。

           page指令作用整個JSP頁面,可以將一個指令放在文檔中任何地方。
           
               a,page指令的語法:
            <%@ page attr="value1" attr="value2" ... %>
           
            xml語法格式的page指令:
             <jsp:directive.page attr="value1" attr="value2" ... />
           
               b,page指令的13個屬性
           
           1,import屬性:page指令中唯一容許在同一文檔出現多次的屬性。屬性的值可以以逗號隔開。
            指定jsp頁面轉換成servlet應該輸入的包。對于沒有明確指定包的類,將根據jsp頁面所在的包(生成的servlet的目錄)決定類的包的位置。
            這意味著,將在jsp頁面所在的包來尋找該類。

            一定要將實用工具類和bean包放在指定的包中。不要依賴于自動導入

           2,language屬性:
            用于指定在腳本元素中使用的腳本語言,默認java。在jsp2.0規范中,只能是java。
           
           3,contentType和pageEncoding屬性:
            contentType屬性設置發送到客戶端文檔的響應報頭的MIME類型和字符編碼。多個使用;號分開。
            pageEncodeing屬性只用于更改字符編碼。
           
            servlet默認MIME是text/plain,jsp默認MIME是text/html。
           
           3,session屬性:控制頁面是否參與會話

            默認true。如果存在已有會話,則預定義session變量,綁定到已有會話中。否則創建新會話將其綁定到session。
            對于高流量網站,設置false可以節省大量服務器內存。
            設置false表示不自動創建新會話,在jsp頁面轉換為servlet時,這時對變量session的訪問導致錯誤。
            設置為false并不是禁用會話跟蹤,它只是阻止jsp頁面為不擁有會話的用戶創建新會話。

            * 對于不需要會話跟蹤的頁面那就設置為false;當設置為false時session對象是不可訪問的。

           4,isELlgnored屬性:
            定義在jsp頁面中是否執行或忽略EL表達式。true表示忽略,false表示執行。
            默認值依賴于web.xml的版本。servlet2.3之前默認true,servlet2.4默認false。
            用于JSP版本不一致造成使用EL表達式出現的問題。使用:isELlgnored="true";

           5,buffer和autoFlush屬性:
            buffer屬性指定out對象(JspWriter)使用的緩沖區大小,以kb為單位,默認8kb。
            none表示不使用緩沖區。這樣要求設置報頭或狀態代碼的jsp元素要出現在文件的頂部,任何HTML內容之前。

            autoFlush屬性控制當緩沖區滿了后,是自動清空輸出緩沖區(默認true),還是在緩沖區溢出后拋出異常(false)。
            在buffer=none的時候,autoFlush=false是錯誤的。
           
           6,info屬性:
            定義一個可以在servlet中通過getServletInfo方法獲取的字符串。

            jsp容器做的是在servlet中生成getServletInfo方法返回info屬性指定的String。

           7,errorPage和isErrorPage屬性:指定頁面專用的錯誤頁面。
            errorPage屬性用來指定一個jsp頁面,由該頁面來處理當前頁面中拋出但沒有捕獲的任何異常。指定的頁面可以通過exception變量訪問異常信息。
            isErrorPage屬性表示當前頁是否可以作為其他jsp頁面的錯誤頁面。true或false。
            錯誤頁面應該放在WEB-INF目錄下面,只讓服務器訪問,也不會生成轉發的調用,客戶端只能看到最初的請求頁面URL,看不到錯誤頁面的URL。
           
            如果為整個web應用程序指定錯誤頁面,或為應用中不同類型的錯誤指定錯誤處理頁面,使用web.xml中的error-page元素。

            如果一個頁面通過該屬性定義了專有的錯誤頁面,那么在web.XML文件中定義的任何錯誤頁面不會被使用。
           
            只能夠在錯誤處理頁面中使用錯誤對象exception。

           8,isThreadSafe屬性:采用顯式的同步來代替該方法。
            控制由jsp頁面生成的servlet是否允許并發訪問(默認true允許)。
            這種阻止并發訪問的實現是基于SingleThreadModel接口。所以,避免使用isThreadSafe屬性。
           
           9,extends屬性:避免使用。這是服務器提供商該做的事情。父類必須是對HttJspPage接口的實現類。而HttJspPage是應用于HTTP協議的請求和響應的JspPage擴展接口。
            指定JSP頁面生成的servlet的超類。

          三,include指令:在頁面轉換期間將文件包含到jsp頁面。

           include指令用于在jsp頁面中靜態包含一個文件,該文件可以是jsp頁面,html頁面,文本文件或一段Java代碼。
                在主頁面“轉換為servlet前”將jsp代碼插入。被包含的頁面發生更改的時候,主頁面也要更新(轉譯)。
           對于文件包含,使用jsp:include。僅在所包含的文件中定義了主頁面需要的字段和方法,或者所包含的文件設置了主頁面的響應報頭時,才使用include指令。
           
           1,include語法:
            <%@ include file="url"%>
            file的屬性值被解釋為相對于當前jsp文件的URL.

           2,在被包含的文件中不要使用和主頁重復的HTML標簽。這樣會影響原jsp文件中同樣的標簽導致錯誤。
              因為原文件和被包含文件可以互相訪問彼此定義的變量和方法,所以要避免變量和方法在命名上的問題。
             
           3,在jsp中,只有3種功能可以將外部內容包含到JSP文檔中。
            a,jsp:include動作
            
            b,include指令
            
            c,jsp:plugin動作

           4,include指令:
            服務器將被包含文件內容每字節插入到主頁面中,然后將產生的頁面作為單個JSP頁面進行處理。
             
           5,jsp:include動作:在“請求”期間將其他頁面的“輸出”包含進來。這樣的行為和RequestDispatcher類的include方法完全相同。
            
             優點:包含頁面被更改,無需對主頁面做修改。
             缺點:被包含頁面不能使用任何有可能影響主頁面的jsp構造。
              也就是不能將完整的HTML文檔作為被包含頁面,只能含有適合于出現在文件插入點的HTML標簽。
            
             參數(使用jsp:param動作元素增加請求參數):
              在被包含頁面與主頁面使用相同的請求對象。可以在被包含頁面“看到”主頁面的參數,而在主頁面“看不到”被包含頁面的參數。

            a,page屬性:指定所包含的頁面,應該是指向某種資源的相對URL.
             相對URL不以/開頭,則表示為相對于主頁面的位置。以/開頭表示相對于WEB應用的根目錄。
             如果由服務器來處理該資源,按相對于當前web應用進行解釋;只有瀏覽器處理該資源時,按相對于服務器的根目錄來解釋。
            
             對于/開頭的URL,服務器總是相對于當前web應用對它進行解釋,瀏覽器總是相對于服務器的根目錄來對它進行解釋。

             可以將要包含的頁面放在WEB-INF目錄下面,對客戶端隱藏。
           
            b,flush屬性:指定將頁面包含進來之前是否應該清空主頁面的輸入流(默認false)。


           6,include指令和jsp:include動作的區別:
            調用的時間:
             jsp:include動作在“請求期間”被包含。
             include指令在“轉換期間”被包含。
            包含的內容:
             jsp:include動作是包含jsp頁面或servlet的“輸出”和HTML文本。
             include指令是文件的實際內容。

            最終轉換的servle個數:
             jsp:include動作在請求期間,會將被請求頁面轉譯為獨立的servlet。和主頁面的servlet對應。
             include指令在轉換期間將被包含頁面的內容插入到主頁面中,得到主頁面轉譯成的servlet。
           
            可否設置影響主頁面的響應報頭和參數:
             jsp:incurred動作不可以,include指令可以。
            更新:
             jsp:include動作是在請求期間被插入所以他的更改不需要更新主頁面。
             include指令的更新意味著主頁面servlet的更新。
           

          四,taglib指令:聲明用戶使用的自定義標簽。

           聲明用戶使用自定義的標簽,將標簽庫描述符文件導入到jsp頁面。

           taglib指令語法:
            <%@ taglib (uri="tigLibURL" 或 tagDir="tagDir") prefix="tagPrefix" %>

            uri屬性:定位標簽庫描述符的位置。唯一標識和前綴相關的標簽庫描述符,可以使用絕對或相對URL。
            tagDir屬性:指示前綴將被用于標識在WEV-INF/tags目錄下的標簽文件。

            prefix屬性:標簽的前綴,區分多個自定義標簽。不可以使用保留前綴和空前綴,遵循XML命名空間的命名約定。


          本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/qfs_v/archive/2008/09/14/2799118.aspx

          @import url(http://www.aygfsteel.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
          posted on 2011-08-29 17:12 Hukin 閱讀(1628) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 通辽市| 磐石市| 翁源县| 定南县| 即墨市| 湖口县| 澄江县| 昌吉市| 平阴县| 泰兴市| 南川市| 镇巴县| 灯塔市| 潞城市| 昭苏县| 安宁市| 平凉市| 博乐市| 万盛区| 京山县| 金湖县| 镇宁| 肇庆市| 旌德县| 巨鹿县| 南陵县| 镇安县| 建德市| 广汉市| 漾濞| 吉水县| 绥江县| 涞水县| 铅山县| 德昌县| 宁河县| 高阳县| 读书| 麻阳| 苗栗市| 任丘市|