?? 0002.htm
字號:
<head><br>
<title>JavaBean 試驗</title><br>
</head><br>
<body> <br>
<jsp:useBean id="helloBean" scope="session" class="test.helloWorld" /><br>
<%= helloBean.getHi() %><br>
<hr><br>
<%<br>
helloBean.name = "JSP";<br>
out.print(helloBean.getHi());<br>
%><br>
</body><br>
</html><br>
<br>
在JSP網頁中,使用 <jsp:useBean ... />語法來創建JavaBean對象,并命名為helloBean。讀者可從這個簡單的例子中看出設置、獲取JavaBean屬性,以及調用JavaBean方法的做法。在瀏覽器的地址欄中鍵入http://localhost:8080/test/hi-bean.jsp,得到結果如圖3所示。<br>
注意,如果修改和重新編譯了JavaBean程序,則需要關閉和重新啟動JSWDK的Web服務器以后修改的結果才會有效。如果僅僅修改JSP文件,則不用重新啟動JSWDK的Web服務器.<br>
<br>
雖然,這僅僅完成了一個非常簡單的JavaBean框架,但是遵循這個框架可以設計出多種多樣的JavaBean。例如,從JSP中訪問數據通常就是通過JavaBean來實現的。<br>
<br>
七、 數據庫連接<br>
數據庫連接對動態網站來說是最為重要的部分,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(常見問題及答案)網站。<br>
首先建立一個Access數據庫faq.mdb,其中的表faqs有字段id(自動增量型,并設為主關鍵字)、subject(文字型,長度200)、answers(備注型)。這個表中可以存放一些編程知識的常見問題及答案,如圖4。<br>
圖 4<br>
<br>
然后,在Control Panel(控制面板)的ODBC Datasource模塊中加入System DSN,取名faq,并指向faq.mdb。<br>
創建一個JavaBean,名為faq.java,并保存在\jswdk-1.0.1\webpages\WEB-INF\jsp\beans\test目錄下。faq.java 的內容如下:<br>
<br>
package test;<br>
import java.sql.*;<br>
<br>
public class faq {<br>
String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";<br>
String sConnStr = "jdbc:odbc:faq";<br>
Connection conn = null;<br>
ResultSet rs = null;<br>
<br>
public faq() {<br>
try {<br>
Class.forName(sDBDriver); <br>
}<br>
catch(java.lang.ClassNotFoundException e) {<br>
System.err.println("faq(): " + e.getMessage());<br>
}<br>
}<br>
<br>
public ResultSet executeQuery(String sql) {<br>
rs = null;<br>
try {<br>
conn = DriverManager.getConnection(sConnStr); <br>
Statement stmt = conn.createStatement();<br>
rs = stmt.executeQuery(sql);<br>
} <br>
catch(SQLException ex) { <br>
System.err.println("aq.executeQuery: " + ex.getMessage());<br>
}<br>
return rs;<br>
}<br>
}<br>
用上一節介紹的方法編譯faq.java以后,在\jswdk-1.0.1\webpages\test目錄下創建JSP文件faq.jsp,其內容如下:<br>
<br>
<html><br>
<head><br>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"><br>
<title>我的FAQ !</title><br>
</head><br>
<body><br>
<p><b>這是我的FAQ!</b></p><br>
<%@ page language="java" import="java.sql.*" %><br>
<jsp:useBean id="workM" scope="page" class="test.faq" /><br>
<%<br>
ResultSet RS = workM.executeQuery("SELECT * FROM faqs");<br>
String tt;<br>
while (RS.next()) {<br>
tt = RS.getString("Answer");<br>
out.print("<LI>" + RS.getString("Subject") + "</LI>");<br>
out.print("<pre>" + tt + "</pre>");<br>
}<br>
RS.close();<br>
%><br>
在瀏覽器的地址欄中鍵入http://localhost:8080/test/faq.jsp,faq.jsp調用JavaBean,從數據庫中讀出內容并輸出,得到結果如圖5所示.<br>
<br>
限于篇幅,本文不能列舉JSP-JavaBean-JDBC/ODBC-數據庫的復雜例子,讀者可以從本文最后所推薦的網址中找到并下載到數據庫連接范例。<br>
<br>
八、 技術分析<br>
Microsoft 公司的 ASP 技術也是動態網頁開發技術。JSP和ASP從形式上非常相似,ASP程序員一眼就能認出<% %>以及<%= %>。但是深入探究下去會發現它們很多的差別,其中最主要的有以下三點:<br>
1、 JSP的效率和安全性更高<br>
ASP以源碼形式存放,以解釋方式運行,每次ASP網頁調用都需要對源碼進行解釋,運行效率不高。另外,IIS的漏洞曾使得許多網站源程序大曝光,包括筆者以前用ASP開發的網站,ASP程序全部被人下載了去。<br>
JSP在執行以前先被編譯成字節碼 (byte code),字節碼由Java虛擬機(Java Virtual Machine)解釋執行,比源碼解釋的效率高;服務器上還有字節碼的Cache機制,能提高字節碼的訪問效率。第一次調用JSP網頁可能稍慢,因為它被編譯成Cache,以后就快得多了。同時,JSP源程序不大可能被下載,特別是JavaBean程序完全可以放到不對外的目錄中。<br>
2、 JSP的組件 (Component) 方式更方便<br>
ASP通過COM來擴充復雜的功能,如文件上載、發送email以及將業務處理或者復雜計算分離出來成為獨立可重復利用的模塊。JSP通過JavaBean實現了同樣的功能擴充。<br>
在開發方面,COM的開發遠比JavaBean復雜和繁瑣,學會ASP不難,但學會開發COM可不簡單。而JavaBean就簡單多了,從本文上述示例中可以看出開發JavaBean很方便。<br>
在維護方面,COM必須在服務器上注冊,如果修改了COM程序,就必須重新注冊,甚至必須關機和重新啟動。JavaBean則不需要注冊,放在CLASSPATH包含的目錄中就行了。如果JavaBean進行了修改,則JSWDK和Tomcat現在還需要關閉和重新運行(但不是關機),但開發者已經許諾將在以后的版本中做到不需要關閉服務器。<br>
另外JavaBean是完全的OOP,可以針對不同的業務處理功能方便地建立一整套可重復利用的對象庫,例如用戶權限控制、email自動回復等等。<br>
3、 JSP的適應平臺更廣<br>
ASP目前僅適用于NT和IIS。雖然Unix下有ChiliSoft的插件來支持ASP,但是ASP本身的功能有限,必須通過ASP+COM的組合來擴充,Unix下的COM實現起來非常困難。<br>
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更是來勢不小。<br>
從一個平臺移植到另外一個平臺,JSP和JavaBean甚至不用重新編譯,因為Java字節碼都是標準的與平臺無關的。筆者將在NT下實驗的JSP網頁原封不動地拿到Linux下就運行起來了,感覺非常滿意。<br>
九、 結論<br>
綜上所述,JSP可謂是構建動態網站的一個利器,故推薦給讀者,祝愿你們掌握JSP,開發出優秀的網站。ASP程序員也請試一下,JSP里也有session、request、response/out等對象,親自試試看如何。<br>
<br>
附文<br>
這里是關于JSP的重要參考資料,有興趣的讀者可以進一步閱讀。<br>
http://java.sun.com/products/jsp/faq.html<br>
http://www.esperanto.org.nz/jsp/jspfaq.html<br>
http://www.zdnet.com/pcweek/stories/news/0,4153,410709,00.html<br>
http://developer.netscape.com/viewsource/kuslich_jsp<br>
/kuslich_jsp.html<br>
http://web2.java.sun.com/products/jsp/jsp-asp.html<br>
http://www.asptoday.com/articles/19991022.htm<br>
</p>
</table>
<p align="center"><script src="../../2.js"></script></a>
</body>
</html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -