Java Servlet和JSP教程(12)(轉)
Java Servlet和JSP教程(12)(轉)[@more@][b]此篇是本站CnJSP小組核心成員鈍刀原創作品[/b]12 JSP基礎內容及指令12.1 JSP指令碼元素 JSP指令碼元素用來插入Java程式碼,這些Java程式碼將出現在由當前JSP頁面生成的Servlet中。指令碼元素有三種格式: 表示式格式:計算表示式並輸出其結果。 Scriptlet格式:把程式碼插入到Servlet的service方法。 宣告格式:把宣告加入到Servlet類(在任何方法之外)。 下面我們詳細說明它們的用法。 12.1.1 JSP表示式 JSP表示式用來把Java資料直接插入到輸出。其語法如下: 計算Java表示式得到的結果被轉換成字串,然後插入到頁面?撲閽讜誦惺苯?校ㄒ趁奼磺肭笫保??虼絲梢苑夢屎頹肭笥洩氐娜?啃畔?@?紓?旅嫻拇?胂允疽趁奼磺肭蟮娜掌?時間: Current time: 為簡化這些表示式,JSP預定義了一組可以直接使用的物件變數。後面我們將詳細介紹這些隱含宣告的物件,但對於JSP表示式來說,最重要的幾個物件及其型別如下: request:HttpServletRequest; response:HttpServletResponse; session:和request關聯的HttpSession out:PrintWriter(帶緩衝的版本,JspWriter),用來把輸出傳送到客戶端 下面是一個例子: Your hostname: 最後,如果使用XML的話,JSP表示式也可以寫成下面這種形式: Java Expression 請記住XML元素和HTML不一樣。XML是大小寫敏感的,因此務必使用小寫。有關XML語法的說明,請參見《XML教程 》 12.1.2 JSP Scriptlet 如果你要完成的任務比插入簡單的表示式更加複雜,可以使用JSP Scriptlet。JSP Scriptlet允許你把任意的Java程式碼插入Servlet。JSP Scriptlet語法如下: 和JSP表示式一樣,Scriptlet也可以訪問所有預定義的變數。例如,如果你要向結果頁面輸出內容,可以使用out變數: String queryData = request.getQueryString(); out.println("Attached GET data: " + queryData); %> 注意Scriptlet中的程式碼將被照搬到Servlet內,而Scriptlet前面和後面的靜態HTML(模板文字)將被轉換成println語句。這就意味著,Scriptlet內的Java語句並非一定要是完整的,沒有關閉的塊將影響Scriptlet外的靜態HTML。例如,下面的JSP片斷混合了模板文字和Scriptlet: Have a nice day! Have a lousy day! 上述JSP程式碼將被轉換成如下Servlet程式碼: if (Math.random() < 0.5) { out.println("Have a nice day!"); } else { out.println("Have a lousy day!"); } 如果要在Scriptlet內部使用字元“%>”,必須寫成“%>”。另外,請注意的XML等價表達是: Code 12.1.3 JSP宣告 JSP宣告用來定義插入Servlet類的方法和成員變數,其語法如下: 由於宣告不會有任何輸出,因此它們往往和JSP表示式或Scriptlet結合在一起使用。例如,下面的JSP程式碼片斷輸出自從伺服器啟動(或Servlet類被改動並重新裝載以來)當前頁面被請求的次數: 自從伺服器啟動以來頁面訪問次數為: 和Scriptlet一樣,如果要使用字串“%>”,必須使用“%>”代替。最後,的XML等價表達方式為: Code 12.2 JSP指令 JSP指令影響Servlet類的整體結構,它的語法一般如下: 另外,也可以把同一指令的多個屬性結合起來,例如: attribute2="value2" ... attributeN="valueN" %> JSP 指令分為兩種型別:第一是page指令,用來完成下面這類任務:匯入指定的類,自定義Servlet的超類,等等;第二是include指令,用來在 JSP檔案轉換成Servlet時引入其他檔案。JSP規範也提到了taglib指令,其目的是讓JSP開發者能夠自己定義標記,但JSP 1.0不支援該指令,有希望它將成為JSP 1.1的主要改進之一。 12.2.1 page指令 page指令的作用是定義下面一個或多個屬性,這些屬性大小寫敏感。 import="package.class",或者import="package.class1,...,package.classN": 用於指定匯入哪些包,例如:。import是唯一允許出現一次以上的屬性。 contentType="MIME-Type" 或contentType="MIME-Type; charset=Character-Set": 該屬性指定輸出的MIME型別。預設是text/html。例如,下面這個指令: 。 和下面的Scriptlet效果相同: isThreadSafe="true|false" 預設值true表明Servlet按照標準的方式處理,即假定開發者已經同步對例項變數的訪問,由單個Servlet例項同時地處理多個請求。如果取值 false,表明Servlet應該實現SingleThreadModel,請求或者是逐個進入,或者多個並行的請求分別由不同的Servlet例項處理。 session="true|false" 預設值true表明預定義變數session(型別為 HttpSession)應該繫結到已有的會話,如果不存在已有的會話,則新建一個並繫結session變數。如果取值false,表明不會用到會話,試圖訪問變數session將導致JSP轉換成Servlet時出錯。 buffer="size kb|none" 該屬性指定JspWrite out的快取大小。預設值和伺服器有關,但至少應該是8 KB。 autoflush="true|false" 預設值true表明如果快取已滿則重新整理它。autoflush很少取false值,false值表示如果快取已滿則丟擲異常。如果buffer="none",autoflush不能取false值。 extends="package.class" 該屬性指出將要生成的Servlet使用哪個超類。使用該屬性應當十分小心,因為伺服器可能已經在用自定義的超類。 info="message" 該屬性定義一個可以透過getServletInfo方法提取的字串。 errorPage="url" 該屬性指定一個JSP頁面,所有未被當前頁面捕獲的異??篩靡趁媧?懟? isErrorPage="true|false" 該屬性指示當前頁面是否可以作為另一JSP頁面的錯誤處理頁面。預設值false。 language="java" 該屬性用來指示所使用的語言。目前沒有必要關注這個屬性,因為預設的Java是當前唯一可用的語言。 定義指令的XML語法為: 例如,下面這個指令: 它的XML等價表達是: 12.2.2 include指令 include指令用於JSP頁面轉換成Servlet時引入其他檔案。該指令語法如下: 這裡所指定的URL是和發出引用指令的JSP頁面相對的URL,然而,與通常意義上的相對URL一樣,你可以利用以“/”開始的URL告訴系統把URL視為從Web伺服器根目錄開始。包含檔案的內容也是JSP程式碼,即包含檔案可以包含靜態HTML、指令碼元素、JSP指令和動作。 例如,許多網站的每個頁面都有一個小小的導航條。由於HTML框架存在不少問題,導航條往往用頁面頂端或左邊的一個表格製作,同一份HTML程式碼重複出現在整個網站的每個頁面上。include指令是實現該功能的非常理想的方法。使用include指令,開發者不必再把導航HTML程式碼複製到每個檔案中,從而可以更輕鬆地完成維護工作。 由於include指令是在JSP轉換成Servlet的時候引入檔案,因此如果導航條改變了,所有使用該導航條的JSP頁面都必須重新轉換成Servlet。如果導航條改動不頻繁,而且你希望包含操作具有儘可能好的效率,使用include指令是最好的選擇。然而,如果導航條改動非常頻繁,你可以使用jsp:include動作。jsp:include動作在出現對JSP頁面請求的時候才會引用指定的檔案,請參見本文後面的具體說明。 12.3 例項:指令碼元素和指令的應用 下面是一個使用JSP表示式、Scriptlet、宣告、指令的簡單例子。 JavaServer Pages VLINK="#551A8B" ALINK="#FF0000">
JSP應用例項 |
---|
下面是一些利用各種JSP功能生成的動態內容:
- 表示式.
你的主機名: . - JSP Scriptlet.
request.getQueryString()); %> - 宣告(和表示式).
伺服器啟動以來訪問次數: - 指令(和表示式).
當前日期:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-946048/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java Servlet和JSP教程(6)(轉)JavaServletJS
- Java Servlet和JSP教程(7)(轉)JavaServletJS
- Java Servlet和JSP教程(8)(轉)JavaServletJS
- Java Servlet和JSP教程(9)(轉)JavaServletJS
- Java Servlet和JSP教程(10)(轉)JavaServletJS
- Java Servlet和JSP教程(11)(轉)JavaServletJS
- Java Servlet和JSP教程(13)(轉)JavaServletJS
- Java Servlet和JSP教程(1)(轉)JavaServletJS
- Java Servlet和JSP教程(2)(轉)JavaServletJS
- Java Servlet和JSP教程(3)(轉)JavaServletJS
- Java Servlet和JSP教程(4)(轉)JavaServletJS
- Java Servlet和JSP教程(5)(轉)JavaServletJS
- jsp進階教程和ServletJSServlet
- Java之JSP和Servlet基礎知識。JavaJSServlet
- JAVA基礎:JSP與Servlet的區別(轉)JavaJSServlet
- Java Servlet完全教程JavaServlet
- java servlet 與jsp幾種頁面跳轉的方法JavaServletJS
- Day91.Servlet基本內容① -Servlet、jsp和表示式ServletJS
- jsp servlet javabeanJSServletJavaBean
- JSP與ServletJSServlet
- Jsp和Servlet有什麼區別?JSServlet
- maven中新增Servlet和jsp依賴MavenServletJS
- 基於jsp和servlet簡單的java web開發(idea)JSServletJavaWebIdea
- Servlet/JSP 容器開發手記2 (轉)ServletJS
- Java學習筆記-Day53 Servlet與JSPJava筆記ServletJS
- tomact和javaee、jsp、servlet對應的版本MacJavaJSServlet
- 深入剖析JSP和Servlet對中文的處理JSServlet
- jsp+servlet 練習JSServlet
- EJB/JSP/Servlet Sequence GeneratorJSServlet
- 在Jsp/Servlet中的中文解決辦法 (轉)JSServlet
- Servlet.service() for Servlet jsp threw exception javax.servlet.ServletException:File "/pageFooServletJSExceptionJava
- Java後臺開發必備技能JDBC+Servlet+JSPJavaJDBCServletJS
- Tomcat下JSP、Servlet和JavaBean環境的配置TomcatJSServletJavaBean
- Servlet和JSP規範及版本對應關係ServletJS
- 記錄web中的servlet轉發及jsp的接受WebServletJS
- jsp隱式物件-Servlet物件JS物件Servlet
- JSP/Servlet基礎語法JSServlet
- 求助servlet&jsp問題ServletJS