用JSP構建動態網站 (3)

來源:互聯網
上載者:User
js|動態   六、 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目錄下,其內容如下:

<html>
<head>
<title>JavaBean 實驗</title>
</head>
<body>
<jsp:useBean id="helloBean" scope="session" class="test.helloWorld" />
<%= helloBean.getHi() %>
<hr>
<%
helloBean.name = "JSP";
out.print(helloBean.getHi());
%>
</body>
</html>


  在JSP網頁中,使用 <jsp:useBean ... />文法來建立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(備忘型)。這個表中可以存放一些編程知識的常見問題及答案。

  然後,在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,其內容如下:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>我的FAQ !</title>
</head>
<body>
<p><b>這是我的FAQ!</b></p>
<%@ page language="java" import="java.sql.*" %>
<jsp:useBean id="workM" scope="page" class="test.faq" />
<%
ResultSet RS = workM.executeQuery("SELECT * FROM faqs");
String tt;
while (RS.next()) {
tt = RS.getString("Answer");
out.print("<LI>" + RS.getString("Subject") + "</LI>");
out.print("<pre>" + tt + "</pre>");
}
RS.close();
%>


  在瀏覽器的地址欄中鍵入http://localhost:8080/test/faq.jsp,faq.jsp調用JavaBean,從資料庫中讀出內容並輸出。

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.