国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

JBuilder2005 Struts深度體驗之新增

2019-11-18 12:54:28
字體:
來源:轉載
供稿:網友

  新增一個Struts配置文件
  
  考慮到圖書模塊是一個比較獨立的模塊,為了避免對Struts配置文件的資源爭用導致團隊工程的覆蓋或沖突,我們為這個模塊單獨提供一個新的Struts配置文件,用這個配置文件配置圖書模塊所有Struts關聯的信息。
  
  我們按照如下的方式為webModule模塊添加一個名為book-struts-config.xml的配置文件。
  
  首先到<工程目錄>/webModule/WEB-INF拷貝一個原有的struts-config.xml文件,更名為book-struts-config.xml放在struts-config.xml相同的目錄下,刪除原有配置的內容,將其調整成:
  
  <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
  <struts-config>
  </struts-config>
  
  然后,在工程窗格的資源樹中定位到webModule->Deployment descriptors-><Struts 1.1>節點上,右擊<Struts 1.1>節點,在彈出的菜單中選擇PRoperties...彈出Properties for ’<Struts 1.1>’對話框,如圖 16所示:
   JBuilder2005 Struts深度體驗之新增(圖一)
  圖 16 Struts配置文件維護對話框
  
  點擊Add...按鈕,在彈出的Choose Struts config file對話框中選擇book-struts-config.xml配置文件,按OK這個新的Struts配置文件將添加到Struts config file in web.xml列表中。
  
  新增配置文件成功后,在工程窗格資源樹的<Struts 1.1>節點下,你將會發現這個新加入的Struts配置文件,如下圖所示:
   JBuilder2005 Struts深度體驗之新增(圖二)
  圖 17 兩個Struts配置文件
  
  這樣,在創建新的FormBean或Action時,你就可以選擇用哪個配置文件來保存Struts的配置信息了。
  
  圖書Action Form
  
  下面我們著手創建用于接收新增圖書頁面表單數據的BookActionForm,使用book-struts-config.xml保存BookActionForm的配置信息。BookActionForm需要進行數據有效性自檢,也就是說,要讓BookActionForm實現validate()方法。
  
  創建BookActionForm和創建UserActionForm相似,但是在向導的第1步需要指定book-struts-config.xml記錄BookActionForm配置信息,如圖 18所示:
   JBuilder2005 Struts深度體驗之新增(圖三)
  圖 18 選擇不同的配置文件
  
  我們在前一節為Web模塊添加了一個配置文件,在Struts config下拉框中列出了Web模塊所有配置文件,這里我們選擇WEB-INF/book-struts-config.xml。
  
  在向導的第2步,我們為BookActionForm定義下列5個屬性:
  
  String bookId;//圖書ID,對應T_BOOK表的BOOK_ID,是主鍵。
  String isbn;//isbn
  String createDate;//創建日期
  String bookName;//書名
  String author;//作者
  
  在向導的第2步直接按Finish創建BookActionForm。由于bookId屬性是主鍵,所以不能和T_BOOK中已有的記錄重復,這可以通過BookActionForm的數據自檢機制來完成,數據自檢是通過定義validate()方法來實現的。向導已經為BookActionForm生成了validate()方法框架,我們只需要在validate()方法編寫bookId的校驗的代碼就可以了,BookActionForm的最終代碼如代碼清單 10所示:
  
  代碼清單 10 BookActionForm.java
  
  1. package bookstore;
  2.
  3. import javax.servlet.http.HttpServletRequest;
  4. import org.apache.struts.action.*;
  5. import java.sql.*;
  6.
  7. public class BookActionForm
  8.  extends ActionForm {
  9.   …
  10.   public ActionErrors validate(ActionMapping actionMapping,
  11.   HttpServletRequest httpServletRequest) {
  12.    ActionErrors errors = new ActionErrors();
  13.    Connection conn = null;
  14.    try {
  15.     conn = DBConnection.getConnection();
  16.     PreparedStatement pStat = conn.prepareStatement(
  17.      "select count(*) count from T_BOOK where BOOK_ID=?");
  18.     pStat.setString(1, this.bookId);
  19.     ResultSet rs = pStat.executeQuery();
  20.     if (rs.next()&& rs.getInt(1) > 0) {
  21.      errors.add("bookId ",
  22.      new ActionMessage("bookstore.duplicate.bookId",
  23.      "圖書ID和數據庫中已經有的ID重復"));
  24.     }
  25.    }
  26.    catch (SQLException se) {
  27.     se.printStackTrace();
  28.     errors.add("bookId",
  29.     new ActionMessage("bookstore.dbaccess.error", "訪問數據庫時出錯"));
  30.    }
  31.    finally {
  32.     try {
  33.      if (conn != null) {
  34.       conn.close();
  35.      }
  36.     }
  37.     catch (SQLException ex) {
  38.      ex.printStackTrace();
  39.      errors.add("bookId",
  40.      new ActionMessage("bookstore.dbaccess.error",
  41.        "訪問數據庫時出錯"));
  42.     }
  43.    }
  44.   return errors;
  45.  }
  46.
  47.  public void reset(ActionMapping actionMapping,
  48.   HttpServletRequest servletRequest) {
  49.    this.createDate = getCurrDateStr();
  50.   }
  51.
  52.  //獲取當前時間字符
  53.  private static String getCurrDateStr() {
  54.   SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
  55.   return sdf.format(new Date());
  56.  }
  57. }
  
  當用戶提交表單后,Struts框架自動把表單數據填充到ActionForm中,接著Struts框架自動調用ActionForm的validate()方法進行數據驗證。假如validate()方法返回的ActionErrors為null或不包含任何ActionMessage對象,表示通過驗證,Struts框架將ActionForm和HTTP請求一起傳給Action的execute(),否則Struts框架將HTTP請求返回到輸入的頁面中,而輸入頁面即可通過<Html:errors>顯示對應request域中的ActionErrors錯誤信息顯示出來。
  
  此外,我們在reset()方法中將createDate屬性置為當前的日期,因為這個屬性值不是通過頁面表單提供的。
  
  新增圖書jsp頁面
  
  1.通過向導創建bookAdd.jsp
  
  通過JSP向導創建bookAdd.jsp頁面,在向導的第2步選擇使用Struts1.1的struts-bean和struts-html標簽,如圖 19所示:
   JBuilder2005 Struts深度體驗之新增(圖四)
  圖 19 指定選用Struts標簽
  
  2.使用JBuilder的Struts標簽構建JSP頁面
  
  你可以直接用拖拽的方法從JBuilder編輯器左邊的標簽庫將Struts標簽添加到JSP頁面中,如圖 20所示:
   JBuilder2005 Struts深度體驗之新增(圖五)
  圖 20 用拖拽的方式添加Struts標簽
  
  Struts的html標簽可以完成和標準的HTML元素相同的功能,Struts提倡使用Struts html標簽庫,因為這些標簽可以和Struts框架的其他組件緊密地聯系起來。而Strtus的bean標簽庫可以訪問已經存在的JavaBean及其屬性,有一些bean標簽還可以訪問HTTP請求頭信息及Web資源文件的信息。
  
  我們希望用Struts的html標簽庫創建添加圖書的表單,通過bean標簽庫訪問Web資源文件作為表單組件前的標識文字。
  
  bookAdd.jsp的最終代碼如代碼清單 11所示:
  
  代碼清單 11 bookAdd.jsp
  
  1. <%@page contentType="text/html; charset=GBK" %>
  2. <%@taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
  3. <%@taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
  4. <html>
  5. <head>
  6. <title>bookInsert</title>
  7. <script language="Javascript" >
  8. function mySubmit(form)
  9. {
  10. if(form.isbn.value == null form.isbn.value == "")
  11. {
  12.  alert("圖書的ISBN不答應為空");
  13.  return false;
  14. }
  15. if(form.bookName.value == null form.bookName.value == "")
  16. {
  17.  alert("圖書名不答應為空");
  18.  return false;
  19. }
  20. }
  21. </script>
  22. </head>
  23. <body bgcolor="#ffffff">
  24. <html:errors/>
  25.  <html:form action="/bookInsertAction.do" focus="bookId" method="post"
  26.   onsubmit="return mySubmit(this)" >
  27.  <table width="100%%" border="0">
  28.   <tr>
  29.    <td>
  30.     <bean:message bundle="bookstore" key="bookstore.bookId"/>
  31.    </td>
  32.    <td>
  33.     <html:text name="bookActionForm" property="bookId"/>
  3

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 建昌县| 安岳县| 文水县| 武平县| 奈曼旗| 郓城县| 松潘县| 德保县| 河池市| 周宁县| 永泰县| 莱西市| 广饶县| 万全县| 黔南| 龙州县| 城市| 牡丹江市| 长汀县| 芦溪县| 鄂州市| 龙岩市| 定日县| 突泉县| 长乐市| 福建省| 延吉市| 紫金县| 博兴县| 周口市| 桐庐县| 亳州市| 图们市| 澜沧| 安庆市| 江川县| 辛集市| 洛扎县| 阿勒泰市| 巩义市| 威海市|