用action控制器替換switch.jsp
在《jbuilder 2005 servlet高級開發》中我們介紹了用戶登錄模塊的流程,其中switch.jsp充當一個業務處理和頁面轉發的中心處理器。由于jsp的設計初衷是實現頁面展現邏輯,而這里我們居然"倒行逆施",將jsp用作業務處理和頁面轉發,顯然是不恰當的。我們原來的switch.jsp身兼數職:接收login.jsp頁面的表單數據,查詢數據庫,轉發頁面,象一個事無巨細,有僭越之嫌的 "管家"總攬了所有的事情,程序沒有分層,邏輯顯得非常不清晰,象個大雜燴。
其實servlet本身倒是比較適合開發switch.jsp所完成的功能,但在《jbuilder 2005 servlet高級開發》專題中,我們并沒有用servlet斧正之,是因為我們希望在本專題中從更高的角度更完美地替換switch.jsp。
可以通過struts框架對switch.jsp功能進行分解,switch.jsp通過<jsp:usebean>獲取登錄頁面表單數據可以通過actionform機制實現;switch.jsp查詢t_user數據表,判斷用戶是否是合法用戶可以在action的execute()中處理;當未通過驗證轉向fail.jsp頁面,如果發生異常轉向error.jsp頁面,當用戶通過驗證后轉向welcome.jsp頁面,可以在action中通過actionforward實現多出口切換。
新增一個圖書管理模塊
  現實的圖書管理模塊,應該包括對圖書進行增、刪、改、查的功能,由于篇幅所限,我們僅提供圖書新增的功能。數據庫中必須提供一張表用于保存圖書的信息,這張表名為t_book,其結構如圖 4所示:
|  圖 4 t_book表結構 | 

·bookactionform:由bookactionform類實現,保存bookadd.jsp表單提交的數據。在這兒,你將學習到如何創建actionform,actionform如何對數據有效性進行自檢的知識。
·/bookinsertaction:由bookinsertaction類實現,即業務控制器,負責將bookactionform中的新增圖書保存到數據庫t_book表中,并導向到insertsuccess.htm頁面。
事前準備
通過file->new project...創建一個名為bookstore的新工程,并在工程下創建名為webmodule的web模塊,將原《jbuilder 2005 servlet高級開發》專題的代碼覆蓋該新工程對應的內容。
用sql plus運行下面的sql語句創建t_book表:
代碼清單 5 創建t_book表的sql語句
1. create table t_book (
2. book_id varchar2(10) not null,
3. isbn varchar2(20) not null,
4. book_name varchar2(50) not null,
5. author varchar2(50),
6. create_date char(8),
7. constraint pk_t_book primary key (book_id)
8. ); 
從這個sql中,我們可以看出book_id是表的主鍵,所以不允許重復,而isbn和book_name兩字段不允許為空。它們決定了在圖書添加時的數據檢驗規則。
同樣的,我們需要將必要的類添加到這個新工程的類庫中。
新聞熱點
疑難解答