[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 編程技術 > Java > 正文
jsp入門好文章
本文出自: www.dukejava.com 作者:javaduke (2001-05-30 10:08:01)
 
color="#FFFF00" size=5>主頁標題 
 
 
 

 
選項

選項

 

選項

 

......

 

 

 
 
 
---------------------------------------------------------------------------------------------------------------- 
 
 
一、 什是JSP JSP(JavaServer Pages)是由Sun Microsystems公司倡導、許多公司參與一起建立的一種動態網頁技術標準,其網址為http://www.javasoft.com/products/jsp。 在傳統的網頁HTML文件(*htm,*.html)中加入Java程序片段(Scriptlet)和JSP標記(tag),就構成了JSP網頁(*.jsp)。Web服務器在遇到訪問JSP網頁的請求時,首先執行其中的程序片段,然將執行結果以HTML格式返回給客戶。程序片段可以操作數據庫、重新定向網頁以及發送 email 等等,這就是建立動態網站所需要的功能。所有程序操作都在服務器端執行,網絡上傳送給客戶端的僅是得到的結果,對客戶瀏覽器的要求最低,可以實現無Plugin,無ActiveX,無Java Applet,甚至無Frame。 本文將介紹利用JSP技術開發動態網頁的方法,還將簡要分析JSP技術和 Microsoft 公司的 ASP 技術的不同之處。 
二、 如何安裝和啟動 為了實驗JSP技術,首先需要建立運行環境,這個過程相當簡單: 
1、在 http://java.sun.com/jdk/處下載JDK(Java 2 SDK、Standard Edition、v 1.2.2)。 
2、在http://java.sun.com/products/jsp/處下載JSWDK(JavaServer Web Development Kit 1.0.1)。Linux用戶可以在ttp://jakarta.apache.org/處下載Tomcat 3.0。 
3、安裝 以Windows NT環境為例,JDK的安裝是首先運行下載得到的jdk1_2_2-win.exe,然修改系統環境參數,在PATH參數中加入[x:]\jdk1.2.2\bin以及增加新的環境參數 CLASSPATH=[x:]\jdk1.2.2\lib\tools.jar,其中[x:]是安裝JDK的硬盤符(c:、d: 等)。 JSWDK的安裝僅需將jswdk1_0_1-win.zip帶目錄釋放到硬盤根目錄下(c:\、d:\ 等),然就可以在硬盤上找到\jswdk-1.0.1\目錄。將來如果不想保留JSWDK,刪除這個目錄就可以了,沒有任何系統文件和注冊表遺留問題。更詳細的安裝過程以及Solaris/Unix和Linux下JDK、Tomcat的安裝可以參考下載得到的文件包中的安裝說明。 
4、啟動 以Windows NT環境為例,在\jswdk-1.0.1\目錄下執行startserver.bat,就可啟動JSWDK中一個支持JSP網頁技術的Web服務器。為了不與現有的Web服務器(例如IIS、PWS等)沖突,JSWDK的Web服務器使用了8080端口。 在瀏覽器的地址欄中鍵入http://localhost:8080或者http://127.0.0.1:8080,如果能看到 JSWDK 的歡迎頁就說明JSP實驗環境已經建成,可進入下一步實驗。 要關閉Web服務器則運行stopserver.bat。 
三、 JSP簡單示例 JSWDK中包含的Web服務器的文檔目錄在缺省狀態下為\jswdk-1.0.1\webpages,主文檔在缺省狀態下為index.html和index.jsp。也就是說訪問http://localhost:8080等訪問\jswdk-1.0.1\webpages\index.html。 用文本編輯器,如Windows中的記事本(Notepad),創建一個文本文件hi.jsp,保存在\jswdk-1.0.1\webpages\目錄下,其內容如下: 
 
 
Hi-JSP實驗 
 
 
<% 
String Msg = "This JSP test."; 
out.print("Hello World!"); 
%> 

<%=Msg%>

 
 
 

在瀏覽器的地址欄中鍵入http://localhost:8080/hi.jsp,JSWDK中的Web服務器會執行JSP 文件中用<%以及%>括起來的Java程序語句,其中out.print是將文字輸出到網頁,語句<%= 變量 | 表達式 %>的作用是將Java Scriptlet中變量或表達式的值輸出到網頁,執行結果如圖1。 圖1 將變量Msg賦值為中文字符串,用<%= %>輸出,或者用out.print輸出中文字符串,則在英文版NT4及Redhat 6.1下實驗運行結果正常,而在中文NT 4.0和中文98下,則反而會出現亂碼。 
四、 統一的網站界面 JSP支持服務器端的文件包含,即可以在一個JSP文件中插入多個其他文件,用來實現統一的網站界面。修改上述hi.jsp並另存為mypage.jsp: 
<%@ include file="top.htm" %> 
<% 
String Msg = "This JSP test."; 
out.print("Hello World!"); 
%> 

<%=Msg%>

 
<%@ include file="bot.htm" %> 

用可視化HTML編輯器,例如FrontPage、Dreamweave等設計網站的框架結構,將設計好的框架結構文件分割成兩個部分,上面一半保存為top.htm, 下面一半保存為bot.htm,代碼如下面所示: 
 
 
 
我的主頁 
 
 
 
 
 
 

在瀏覽器的地址欄中鍵入http://localhost:8080/mypage.jsp,得到結果如圖2。 圖2 這樣網站的界面就能統一起來,而設計者可以集中精力在功能模塊上處理用戶登錄、連接數據庫、發送email等等。每個JSP文件都有如下結構: 


<%@ include file="top.htm" %> 
<% 
// 實現某些功能 
%> 
<%@ include file="bot.htm" %> 

維護網站的界面也相對比較容易,只要修改top.htm和bot.htm,就能影響到所有網頁。 

五、 服務器參數設置 
JSWDK的Web服務器參數保存在\jswdk-1.0.1\webserver.xml中,用Windows寫字板打開並編輯這個文件就可以修改缺省設置值。本節內容主要針對JSWDK,Linux下Tomcat的設置方法略有不同。 
JSWDK缺省的文檔目錄是\jswdk-1.0.1\webpages,在此目錄下可以建立子目錄,例如\jswdk-1.0.1\webpages\test,就能在瀏覽器中用http://localhost/test訪問這個目錄,為了使得這個子目錄能執行JSP程序,還必須在webserver.xml中的節加入: 
 
並且,還必須建立\jswdk-1.0.1\webpages\test\WEB-INF目錄,並從\jswdk-1.0.1\webpages\WEB-INF目錄中復制過來以下四個文件:mappings.properties、mime.properties、servlets.properties以及webapp.properties。完成這些過程,才能通知JSWDK的Web服務器執行http://localhost/test 中的JSP程序。 

六、 JavaBean 
JSP網頁吸引人的地方之一就是能結合JavaBean技術來擴充網頁中程序的功能。 
JavaBean是一種Java類 (class),通過封裝屬性和方法成為具有某種功能或者處理某個業務的對象。JavaBean被組織成為package(數據包)以便進行管理,實際上就是把一組JavaBean一起放在某某目錄中,每個類的定義前加上package某某,本例中為test。目錄test必須放在系統環境CLASSPATH包含的目錄下,系統才能找到其中的JavaBean。JSWDK在缺省狀態下將\jswdk-1.0.1\webpages\WEB-INF\jsp\beans\ 加入CLASSPATH。建立自己的JavaBean和package時,就放在這個目錄中也不失為一種簡易的方法。 
下面介紹一個簡單的JavaBean框架。用文本編輯器創建一個文本文件helloWorld.java,並保存在\jswdk-1.0.1\webpages\WEB-INF\jsp\beans\test目錄下,其內容如下: 
package test; 
public class helloWorld { 
public String name = "My first bean"; 
public String getHi() 

return "Hello from " + name; 



helloWorld.java編輯好,在DOS狀態下,進入目錄\jswdk-1.0.1\webpages\WEB-INF\jsp\beans\,用JDK的javac命令編譯helloWorld.java如下: 

javac helloWorld.java 

注意,Java是區分大小寫的,在程序中,編譯命令行中字母的大小寫都不能寫錯。 
編譯成功就表示建立了一個JavaBean。下面看如何在JSP中使用這個JavaBean。用文本編輯器創建一個文本文件hi-bean.jsp,並保存在\jswdk-1.0.1\webpages\test目錄下,其內容如下: 

 
 
JavaBean 試驗 
 
 
 
<%= helloBean.getHi() %> 

 
<% 
helloBean.name = "JSP"; 
out.print(helloBean.getHi()); 
%> 
 
 

在JSP網頁中,使用 語法來創建JavaBean對象,並命名為helloBean。讀者可從這個簡單的例子中看出設置、獲取JavaBean屬性,以及調用JavaBean方法的做法。在瀏覽器的地址欄中鍵入http://localhost:8080/test/hi-bean.jsp,得到結果如圖3所示。 
注意,如果修改和重新編譯了JavaBean程序,則需要關閉和重新啟動JSWDK的Web服務器以修改的結果才會有效。如果僅僅修改JSP文件,則不用重新啟動JSWDK的Web服務器. 

雖然,這僅僅完成了一個非常簡單的JavaBean框架,但是遵循這個框架可以設計出多種多樣的JavaBean。例如,從JSP中訪問數據通常就是通過JavaBean來實現的。 

七、 數據庫連接 
數據庫連接對動態網站來說是最為重要的部分,Java中連接數據庫的技術是JDBC(Java Database Connectivity)。很多數據庫系統帶有JDBC驅動程序,Java程序就通過JDBC驅動程序與數據庫相連,執行查詢、提取數據等等操作。Sun公司還開發了JDBC-ODBC bridge,用此技術Java程序就可以訪問帶有ODBC驅動程序的數據庫,目前大多數數據庫系統都帶有ODBC驅動程序,所以Java程序能訪問諸如Oracle、Sybase、MS SQL Server和MS Access等數據庫。下面介紹如何用Access實現一個動態FAQ(常見問題及答案)網站。 
首先建立一個Access數據庫faq.mdb,其中的表faqs有字段id(自動增量型,並設為主關鍵字)、subject(文字型,長度200)、answers(備注型)。這個表中可以存放一些編程知識的常見問題及答案,如圖4。 
圖 4 

然,在Control Panel(控制面板)的ODBC Datasource模塊中加入System DSN,取名faq,並指向faq.mdb。 
創建一個JavaBean,名為faq.java,並保存在\jswdk-1.0.1\webpages\WEB-INF\jsp\beans\test目錄下。faq.java 的內容如下: 

package test; 
import java.sql.*; 

public class faq { 
String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver"; 
String sConnStr = "jdbc:odbc:faq"; 
Connection conn = null; 
ResultSet rs = null; 

public faq() { 
try { 
Class.forName(sDBDriver); 

catch(java.lang.ClassNotFoundException e) { 
System.err.println("faq(): " + e.getMessage()); 



public ResultSet executeQuery(String sql) { 
rs = null; 
try { 
conn = DriverManager.getConnection(sConnStr); 
Statement stmt = conn.createStatement(); 
rs = stmt.executeQuery(sql); 

catch(SQLException ex) { 
System.err.println("aq.executeQuery: " + ex.getMessage()); 

return rs; 


用上一節介紹的方法編譯faq.java以,在\jswdk-1.0.1\webpages\test目錄下創建JSP文件faq.jsp,其內容如下: 

 
 
 
我的FAQ ! 
 
 

這是我的FAQ!

 
<%@ page language="java" import="java.sql.*" %> 
 
<% 
ResultSet RS = workM.executeQuery("SELECT * FROM faqs"); 
String tt; 
while (RS.next()) { 
tt = RS.getString("Answer"); 
out.print("
  • " + RS.getString("Subject") + "
  • "); 
    out.print("
    " + tt + "
    "); 

    RS.close(); 
    %> 
    在瀏覽器的地址欄中鍵入http://localhost:8080/test/faq.jsp,faq.jsp調用JavaBean,從數據庫中讀出內容並輸出,得到結果如圖5所示. 

    限篇幅,本文不能列舉JSP-JavaBean-JDBC/ODBC-數據庫的復雜例子,讀者可以從本文最所推薦的網址中找到並下載到數據庫連接范例。 

    八、 技術分析 
    Microsoft 公司的 ASP 技術也是動態網頁開發技術。JSP和ASP從形式上非常相似,ASP程序員一眼就能認出<% %>以及<%= %>。但是深入探究下去會發現它們很多的差別,其中最主要的有以下三點: 
    1、 JSP的效率和安全性更高 
    ASP以源碼形式存放,以解釋方式運行,每次ASP網頁調用都需要對源碼進行解釋,運行效率不高。另外,IIS的漏洞曾使得許多網站源程序大曝光,包括筆者以前用ASP開發的網站,ASP程序全部被人下載了去。 
    JSP在執行以前先被編譯成字節碼 (byte code),字節碼由Java虛擬機(Java Virtual Machine)解釋執行,比源碼解釋的效率高;服務器上還有字節碼的Cache機制,能提高字節碼的訪問效率。第一次調用JSP網頁可能稍慢,因為它被編譯成Cache,以就快得多了。同時,JSP源程序不大可能被下載,特別是JavaBean程序完全可以放到不對外的目錄中。 
    2、 JSP的組件 (Component) 方式更方便 
    ASP通過COM來擴充復雜的功能,如文件上載、發送email以及將業務處理或者復雜計算分離出來成為獨立可重復利用的模塊。JSP通過JavaBean實現了同樣的功能擴充。 
    在開發方面,COM的開發遠比JavaBean復雜和繁瑣,學會ASP不難,但學會開發COM可不簡單。而JavaBean就簡單多了,從本文上述示例中可以看出開發JavaBean很方便。 
    在維護方面,COM必須在服務器上注冊,如果修改了COM程序,就必須重新注冊,甚至必須關機和重新啟動。JavaBean則不需要注冊,放在CLASSPATH包含的目錄中就行了。如果JavaBean進行了修改,則JSWDK和Tomcat現在還需要關閉和重新運行(但不是關機),但開發者已經許諾將在以的版本中做到不需要關閉服務器。 
    另外JavaBean是完全的OOP,可以針對不同的業務處理功能方便地建立一整套可重復利用的對象庫,例如用戶權限控制、email自動回復等等。 
    3、 JSP的適應平台更廣 
    ASP目前僅適用NT和IIS。雖然Unix下有ChiliSoft的插件來支持ASP,但是ASP本身的功能有限,必須通過ASP+COM的組合來擴充,Unix下的COM實現起來非常困難。 
    JSP則不同,幾乎所有平台都支持Java,JSP+JavaBean可以在所有平台下通行無阻。NT下IIS通過一個插件,例如JRUN(http://www3.allaire.com/products/jrun/)或者ServletExec(http://www.newatlanta.com/),就能支持JSP。名的Web服務器Apache已經能夠支持JSP。由Apache廣泛應用在NT、Unix和Linux上,因此JSP有更廣泛的運行平台。雖然現在NT操作系統佔了很大的市場份額,但是在服務器方面Unix的優勢仍然很大,而新崛起的Linux更是來勢不小。 
    從一個平台移植到另外一個平台,JSP和JavaBean甚至不用重新編譯,因為Java字節碼都是標準的與平台無關的。筆者將在NT下實驗的JSP網頁原封不動地拿到Linux下就運行起來了,感覺非常滿意。 
    九、 結論 
    綜上所述,JSP可謂是構建動態網站的一個利器,故推薦給讀者,祝願你們掌握JSP,開發出優秀的網站。ASP程序員也請試一下,JSP裡也有session、request、response/out等對象,親自試試看如何。 

    附文 
    這裡是關JSP的重要參考資料,有興趣的讀者可以進一步閱讀。 
    http://java.sun.com/products/jsp/faq.html 
    http://www.esperanto.org.nz/jsp/jspfaq.html 
    http://www.zdnet.com/pcweek/stories/news/0,4153,410709,00.html 
    http://developer.netscape.com/viewsource/kuslich_jsp 
    /kuslich_jsp.html 
    http://web2.java.sun.com/products/jsp/jsp-asp.html 
    http://www.asptoday.com/articles/19991022.htm 

    歡迎光臨www.dukejava.com!

    JavaServer Pages (JSP)是基Java的技術,用創建可支持跨平台及跨Web服務器的動態網頁。 

    JSP可與微軟的Active Server Pages (ASP)相媲美,但JSP使用的是類似HTML的標記和Java 代碼片段而不是用VBScript。當你使用不提供ASP本地支持的Web服務器(例如 Apache或Netscape服務器)時,你就可以考慮使用JSP了。你雖然也可以為這些服務器弄一個ASP附加軟件模塊,但是太昂貴了。現在Sun公司並不會因你使用JSP向你收費(雖然將來可能要收),況且用Solaris、 Linux以及Windows系統的組件都很容易獲得。 

    不要把JSP與服務器端的JavaScript語言搞混了。Web服務器自動將通過JSP生成的Java代碼片段轉換成Java 片段(servlets)。 JSP也可自動控制許多功能,如過去用Perl腳本編寫功能程序或像ASP這樣的服務器專用API(應用編程接口)。 

    我們馬上就要開始幫助你建立一個使用JSP 技術的網站范例了。 


    準備好計算機以使用JSP 

    你需要Java2軟件開發工具箱(J2SDK),過去稱之為Java開發工具箱(JDK)、JavaServer 網絡開發工具箱(JSWDK)、Tomcat,或者其它能支持JSP的Web服務器。升陽公司為Windows、Solaris以及 Linux平台提供免費的J2SDK和JSWDK。 

    如果你想在現有的Web服務器上使用JSP,而此服務器本身不支持JSP和Java 代碼片段,可以試用Allaire公司的Jrun。它可以為Netscape的Enterprise Server和Fasttrack Server、微軟的Internet Information Server(IIS)和Personal Web Server(PWS)、Apache以及其他服務器充當Web服務器附件。你也可以使用Apache服務器的Java版,其中包含最新的JSWDK。 

    下載並安裝所需的軟件 
    目前,版本號為1.2.2-001的J2SDK可下載版以可安裝的歸檔文件形式出現。這個大約20MB的下載量軟件可提供一個徹底的Java開發環境,讓你創造任何基Java並且利用了而標準核心API的解決方案。其實,你的Web服務器使用JSP的唯一條件是要有Java編輯器。要讓Web服務器知道編輯器的位置,需要JAVA_HOME 環境變量設置為J2SDK安裝目錄。如果你已經在Windows系統中進行了安裝並且接受了默認目錄, 請將“set JAVA_HOME=C:\1.2.2”添加到你的“autoexec.bat”文件中,然重新啟動。 

    安裝J2SDK,下載並安裝JSWDK或者是Tomcat β版,即基Java的Apache Web服務器的β版。你把JSWDK放在什地方是無關緊要的,只要你以能找到它就行。通常,將其放在頂層目錄中,這樣你在替換JSWDK或JSDK時無需刪除另一個軟件。安裝好這個文件,準備工作已經就緒,你可以開始JSP開發工作了。 

    正確地安裝JSWDK,請運行“startserver”腳本程序,以啟動Web服務器,使其按照默認情況監聽8080端口。你要在啟動服務器之查看您是否已正確地安裝了此工具,請加載一個JSP樣本文件(http://locahost:8080/examples/jsp/)。如果你能成功地運行這些樣本文件,說明你已經正確地安裝了這個軟件。如果你在用來啟動服務器的控制台窗口中看到報錯信息,你就需要做些修改。最經常發生的問題是沒有設置或不正確地設置了JAVA_HOME環境變量。要看到當前環境變量設置情況,要請在DOS提示符下鍵入“set”設置。 

    開始 
    在解釋 JSP語法前,創建一個快捷網頁,顯示目當前的日期和時間,並然將之其保存為sample.jsp: 

     
     
    First Page 
     
     

    Today is: 
    <%= new java.util.Date() %> 

     
     


    把這個文件以及你所有的HTML 和 JSP 頁面放在JSWDK安裝目錄下的網頁目錄裡。你可以從http://localhost:8080/sample.jsp加載此網頁。該網頁首次被訪問時,Web服務器會把JSP編譯成Java代碼片段,這樣你就能夠看到當前的日期和時間了。 

    你已經下載、安裝並配置好了開發環境,你可以開始學習JSP語法並創建自己的基JSP的解決方案了。 

    JSP基本語法 
    講完安裝問題,現在進入來討論JSP語法。一個投機取巧的辦法是下載語法卡片。如果你不熟悉Java編程,也許你想看一下Sun的指南 。然而網頁創建者並不需要進行太多的Java開發。除了一些方法調用,在你的JSP網頁裡應盡可能少用Java代碼。 

    記住以上提示,我們首先來看一看JSP指令和腳本元素,之我們會解釋JavaBeans和隱含對象。共有五種JSP指令和腳本元素。在JSP 1.0版中,大部分JSP被一個以“<%” 開頭和以“%>”結尾的的標記括在其中。在更新的JSP 1.1規范出台,就有了與XML兼容的版本。 

    JSP指令和腳本元素 
    Directives <%@ directive %> 
    Declarations <%! declaration %> 
    Expressions <%= expression %> 
    Code Fragment/Scriptlet <% code fragment %> 
    Comments <%-- comment --%> 


    指令 
    JSP指令是為JSP引擎而設計的。他們並不直接產生任何可見輸出,而只是告訴引擎如何處理其余JSP頁面。這些指令始終被括在 “<%@ ?%>”標記中。兩個最重要的指令是“pagePage”和“Include”。“Taglib”指令不在討論之列,但是在用JSP1.1創建自定義標記可以使用它。 

    幾乎在所有JSP頁面頂部都會看到“Page”指令。盡管不是必須的,但它可以讓你指定: 
    到何處查找起支持作用的Java類別: 
    <%@ page import="java.util.Date" %>, 

    出現Java運行問題時,將網上沖浪者引向何處: 
    <%@ page errorPage="errorPage.jsp" %>, 


    還有你是否需要管理用戶的會話級信息,這些信息可能來自多個網頁(在下面的JavaBeans一節將對此做進一步講)述: 
    <%@ page session="true" %>. 


    “Include”指令可以把你的內容分成更多可管理的元素,比如包括一個普通頁面頁眉或頁腳的元素。包含的網頁可以是一個固定的HTML 頁面或更多的JSP內容: 
    <%@ include file="filename.jsp" %> 

    聲明 
    JSP聲明用來讓你定義頁面級變量,以保存信息或定義JSP頁面的其余部分可能需要的支持方法。如果你發現代碼太多,通常最好把它們寫成一個獨立的Java類別。聲明一般都在“<%! ?%>”標記中。一定要以分號(;)結束變量聲明,因為任何內容都必須是有效的Java語句: 
    <%! int i=0; %>。 

    表達式 
    有了JSP表達式,表達式評估結果會被轉換成一個字符串,並且被直接包括在輸出頁面之內。JSP 表達式包含在“<%= ?%>” 標記中,沒有分號,除非在加引號的字符串部分使用分號。 


    <%= i %> 
    <%= "Hello" %> . 

    代碼片段/腳本片段 
    代碼片段/腳本片段(Scriptlets) JSP代碼片段或腳本片段是嵌在“<% ?%>”標記中的。這種Java代碼在Web服務器響應請求時就會運行。在腳本片段周圍可能是原始的HTML或XML語句,在這些地方,代碼片段可以使你創建條件執行代碼,或要用到另外一段代碼的代碼。例如,以下的代碼組合使用表達式和代碼片段,顯示H1、H2、H3和H4標記中的字符串“Hello”。代碼片段並不局限一行源代碼: 

    <% for (int i=1; i<=4; i++) { %> 
    >Hello
    <% } %>. 

    注釋 
    最一個主要的JSP元素是嵌入式注釋。盡管你始終可以在文件中加入HTML注釋,但用戶在查看頁面源代碼時會看到這些注釋。如果你不想讓用戶看到它,你就應該將其嵌入“<%-- ?--%>” 標記中: 

    <%-- comment for server side only --%>. 

    帶JavaBean 的JSP 
    雖然你可以把大段的代碼放在腳本片段(scriptlet)內,但是絕大多數的Java代碼屬可重復使用的名為JavaBea的組件。JavaBean類似ActiveX控件:他們都能提供常用功能並且可以重復使用。 

    JavaBean的值是通過一些屬性獲得的,你可通過這些屬性訪問JavaBean設置。以一個人來打比方,這個人就是一個JavaBean,這個人的名字、身份証號碼以及住址就是其屬性。在JSP網站,你基本上就是通過玩“Connect the beans)”來使你的網站動態化。 

    假設JavaBean先網站被創建出來,你需要做的第一件事就是告訴JSP頁面它將要用到一個“Bean”。你可以用“”標記來做到這一點: 
    。 

    ”標記要求你用“id”屬性來識鑒別Bean。這裡你提供一個名字來JSP頁面其余部分的Bean。除了“id”屬性,你還須告訴網頁面從何處查找Bean,或者它的Java類別名是什。這種類別屬性提供確 認Bean的功能,其他一些方法也可以做到這一點。最一個必需的元素是“scope”屬性。有了“scope”屬性的幫助,你就能告訴Bean為單一頁面(默認情況)[scope="page"]、為[scope="request"]請求為會話[scope="session"],或者為整個應用程序[scope="application"]保持留信息。有了會話范圍,你就能非常容易地在JSP網頁面上維護購物車等項目。 

    一旦你聲名了一個JavaBean,你就可以訪問它的屬性來定制它。要獲得屬性值,請用“”標記。有了這個標記,你就能指定將要用到的Bean名稱(從useBean的"id"字段得到)以及你想得到其值的屬性。實際的值被放在輸出中: 
    。 

    要改變JavaBean屬性,你必須使用“”標記。對這個標記,你需要再次識別Bean和屬性,以修改並額外提供新值。如果命名正確,這些值可以從一個已提交的表中直接獲得:參數獲得: 


    可以從一個參數獲得,但你必須直接命名屬性和參數: 
     

    或者直接用一個名字稱和值來設置:  />. 

    關JavaBean 的最一件事: 為了Web服務器能找到JavaBean,你需要將其類別文件放在一個特殊位置。用JSWDK,最 方便的位置是安裝目錄下的類別目錄,如\jswdk-1.0.1\classes。 

    JSP隱含對象 
    與JSP語法相關的最的元素是一些叫做“隱含對象”的東西。在JSP代碼片段中,你可以利用這些隱含對象與JSP頁面的代碼片段執行環境產生互動。應盡量少訪問這些內置隱含對象。但是,在一某些情況下,訪問隱含對象是可被接受的。若要充分利用隱含對象,就需了解最新的Java Servlet API。 
    下表列出可用的隱含對象集合。 

    隱含對象說明 
    request 客戶端請求,包括從GET/POST請求傳遞過來的參數 
    response 網頁傳回客戶端的反應 
    pageContext 在此管理網頁屬性 
    session 與請求關聯的會話 
    application 代碼片段的運行環境 
    out 傳送響應的輸出流 
    config 代碼片段配置對象 
    page JSP網頁本身 
    exception 有錯的網頁中未被捕獲的例外 


    這些都是用來做什的,你又如何來使用它們呢?基本上說,在你的腳本片段裡,你可以用它們進入執行JSP代碼的代碼片段。用不著深入了解太多的Servlet API細節,我們來看看能用它們來做到的某些事情: 


    你可以不用表達式,直接進入“Out”隱含對象,將某些內容輸出到響應中: 
    <% out.println("Hello"); %>。 
    用不著把一個參數直接送到JavaBean,你可以從請求對象獲取參數值: 
    <% String name=request.getParameter("name"); out.println(name); %>. 

    在你用JSP進行開發的過程中,進行更多的開發的過程中,如果創建了JavaBeans或發現JSP文件中加入了太多的Java源代碼,你就需要創建起支持作用的Java分類(class)了,它可以協助你重復利用源代碼並減少JSP網頁編譯時間。當你需要創建Java分類文件時,你必須: 


    將JDSWK installation\bin目錄添加到PATH中。在autoexec.bat文件PATH行的末尾,加入“C:1.2.2/bin”。 
    用這個命令將JAR文件復制到“\jre\lib\ext:”目錄中: copy c:\jswdk-1.0.1\lib\servlet.jar c:\jdk1.2.2\jre\lib\ext. 

    創建一個JSP網站 
    現在該是把所有這些JSP語法派上用場的時候了。我們將創建一個網頁,它有一個輸入表單,可以使用戶輸入一個股票代號以獲得出當前股價(有20分鐘)。如果輸入有誤,則顯示報錯網頁。 

    quote.jsp 
    首先,用 這個代碼 創建一個quote.jsp網頁並將其保存在JSWDK安裝目錄下的網頁目錄中。大多數的網頁是標準的HTML,其間散布著JSP代碼。第六行是一個網頁指示,表示將把所有錯誤發送到“errorPage.jsp”文中。第13到15行是一個腳本片段,主要說明只有提供“符號”參數才會顯示表格。“If”代碼段在32到34行結束。第17行定義了要用的JavaBean,第18行從參數加載JavaBean的符號屬性。第27行到29行顯示Bean的屬性。除了"if "代碼段,實際上並不涉及其它Java代碼。 

    errorPage.jsp 
    下一步,將下列JSP源代碼保存到網頁目錄中的“errorPage.jsp”文件中。“這是一個錯誤網頁”的提示為第一行,它將isErrorPage網頁提示屬性設置為真。上一頁說了明錯誤網頁的位置,本頁則說明這就是錯誤網頁。其它JSP文件中的JSP專用代碼只有訪問隱含例外對象才用到。網頁只顯示其值: 

    <%@ page isErrorPage="true" %> 

     
     
    Error Page 
     
     

    Our Error Page

     

     
    We got ourselves an exception: 
    <%= exception %> 
    Restart 
     
    。 

    Quotes.java 
    Quotes JavaBean 利用Yahoo資源來獲得股票價格。需要將此 資源保存到JSWDK安裝目錄下“classes\com\jguru”目錄中的“quotes.java”文件中。請在此用JSDK中的Javac編輯器來編輯它。 

    你的第一個JSP網頁。 
    創建了這兩個JSP文件,建立了JavaBean資源文件並編輯了它,你就可以從http://localhost:8080/quote.jsp加載“quote.jsp”文件以查看結果,假設你沒有更改JSWDK安裝設置,轉而使用別的端口。這個網頁當然能做得更漂亮,但是它已實現了需要實現的功能,並且很好地展示了JSP的功能。 
    歡迎光臨www.dukejava.com! 
    (http://www.fanqiang.com)     進入【UNIX論壇

    相關文章
     

    ★  樊強制作 歡迎分享  ★