程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 利用Servlet開發企業級三層Web應用(二)

利用Servlet開發企業級三層Web應用(二)

編輯:關於JAVA

3.實現中間層

下面以BookServlet為例,說明如何實現中間層的Servlet。

(1)初始化Servlet

public class BookServlet extends HttpServlet {
protected Connection dbConnection;
protected PrepareStatement readQuery;
protected PrepareStatement writeQuery;
protected String dbName=″jdbc:odbc:BookDatabase″;
protected String bookName;
protected String bookISBN;
public void init(ServletConfig config) throws ServletExecption
{
try {
Class.forName(″sun.jdbc.odbc.JdbcOdbcDriver″);
dbConnection=DriverManager.getConnection(dbName,″″,″″);
}
catch(Exception e)
{
System.out.println(″Can not initialize database″);
}
}

Servlet的init()函數在Servlet被初次激活時進行調用,對於BookServlet,在init()中我們創建其與圖書數據庫的連接(當然應該已經在ODBC中定義BookDatabase),這裡使用的是Java JDBC API中的Connection對象。

(2)實現service()操作

當客戶端向Servlet進行請求時,Servlet的service()函數被調用,在service()中我們應該實現中間層的所有功能。

public void service(HttpServletRequest request,HttpServletResponse reponse)
throws ServletException,IOException
{
bookName=request.getParameter(″BookName″);
bookISBN=request.getParameter(″BookISBN″);
if (bookName==null && bookISBN==null)
doQueryBook(request,reponse);
else doNewBook(request,reponse);
}

首先,我們通過參數HttpServletRequest取得客戶端的輸入參數,這些參數是用戶在HTML頁面中的編輯框中輸入的,然後我們根據用戶的需要進行庫查詢或庫更新的操作。

◆查詢數據庫信息並向浏覽器返回結果頁面

查詢數據庫信息首先應該根據查詢條件,構建一個SQL語句(本例僅簡單地返回所有記錄),然後設置PrepaerStatement對象,通過運行其executeQuery()向後台數據庫服務器請求結果。取得查詢結果後,Servlet通過HTTPServletResponse生成一個結果HTML頁面返回給浏覽器。

public void doQueryBook(HttpServletRequest request,HttpServletResponse reponse)
{
try {
readQuery=dbConnection.prepareStatement(
″SELECTFROM BOOKTABLE″);
String htmlHead=″〈html〉〈head〉〈title〉查詢結果〈/title〉〈/head〉
″;
String htmlBody=″〈body〉″+;
ResultSet readResult=readQuery.executeQuery();
while(readSet.next())
{
String Name=readResult.getString(″BookName″);
String ISBN=readResult.getString(″ISBN″);
htmlBody+=Name+″ ″+ISBN+″
″;
}
htmlBody+=″〈/body〉″+〈/html〉″
PrintWriter output=new PrinterWrite(response.getOutputStream());
response.setContentType(″text/html″);
output.println(htmlHead+htmlBody+htmlTail);
}
catch(Exception e)
{ … … … }
}

◆將數據寫入數據庫

將數據寫入數據庫的過程與查詢類似,也是先構建一個SQL語句,對於本例來說,其寫入的SQL語句為:

String writeSql=″INSERT INTO BookTable (BookName,ISBN) Values(″+bookName+″,″+bookISBN+″)″;

然後調用PrepareStatement::executeUpdate();

4.利用Servlet實現中間層的進一步討論

通過上面的圖書管理的例子,可以看出利用Servlet技術實現中間層是十分方便的,其操作過程類似於CGI編寫的中間層。但由於Servlet是基於線程的,而且不會在每個用戶進行請求時創建一個獨立的進程完成操作(CGI是通過創建進程進行操作的),因此其性能優於CGI。同時,由於Servlet是用Java語言進行編寫的,因此其可移植性、代碼重用性也超過CGI。此外,Servlet還可利用Sockets與其他的Servlet或Applet進行通訊,因此可以實現更為復雜的Web應用.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved