Struts+Hibernate編程總結(初級篇)

Struts+Hibernate編程總結(初級篇)

一.配置文件

 Struts下有兩個關鍵的配置文件:

1.       web.xml

該配置文件負責整個BS結構解決方案的基本配置參數。樣例如下:

<web-app>

<!-- Action Servlet Configuration -->

  <servlet>

    <servlet-name>actionServlet</servlet-name>    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

  </servlet>

  <!-- Action Servlet Mapping -->

  <servlet-mapping>

    <servlet-name>actionServlet</servlet-name>

    <url-pattern>*.do</url-pattern>

  </servlet-mapping>

  <!-- The Welcome File List    -->

  <welcome-file-list>

    <welcome-file>default.jsp</welcome-file>

  </welcome-file-list>

  <!-- Struts Tag Library Descriptors -->

  <taglib>

    <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>

    <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>

  </taglib> 

  <taglib>

    <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>

    <taglib-location>/WEB-INF/struts-html.tld</taglib-location>

</taglib>

</web-app>

解釋:a <servlet></servlet> 聲明用到的Servlet類的別名以及其路徑。

b)<servlet-mapping></servlet-mapping> 聲明URL的文件後綴與1.中的別名之間的映射關係。

c)<welcome-file-list></welcome-file-list> 聲明解決方案的默認起始頁。

d)<taglib></taglib> 聲明本解決方案用到的標籤庫(包括自定義標籤和第三方標籤庫)

 

2.       struts-config.xml

該文件配置Struts應用的各項配置參數,樣例如下:

<struts-config

    <form-beans>

       <form-bean name="SearchForm"

           type="org.apache.struts.action.DynaActionForm">

           <form-property name="sortId" type ="java.lang.Integer"/>

           <form-property name="keyword" type ="java.lang.String"/>

           <form-property name="pageId" type ="java.lang.Integer"/>

       </form-bean>

       <form-bean  name="LoginForm"

           type="org.apache.struts.validator.DynaValidatorForm">

           <form-property name="user_name" type="java.lang.String"/>

           <form-property name="user_pass" type="java.lang.String"/>

       </form-bean>

       <form-bean name="RegistForm"

           type="org.apache.struts.validator.DynaValidatorForm">

           <form-property name="username" type ="java.lang.String"/>

           <form-property name="password" type ="java.lang.String"/>

           <form-property name="password2" type ="java.lang.String"/>

           <form-property name="name" type ="java.lang.String"/>

           <form-property name="tel" type ="java.lang.String"/>

           <form-property name="address" type ="java.lang.String"/>

           <form-property name="zip" type ="java.lang.String"/>

           <form-property name="email" type ="java.lang.String"/>

       </form-bean>

       <form-bean name="ProductIdForm"

           type="org.apache.struts.action.DynaActionForm">

           <form-property name="productId" type ="java.lang.Integer"/>

       </form-bean>

       <form-bean name="ShopCartForm"

           type="org.apache.struts.action.DynaActionForm">

           <form-property name="count" type ="java.lang.Integer[]"/>

           <form-property name="del" type ="java.lang.Integer[]"/>

       </form-bean>

       <form-bean name="OrderForm"

           type="org.apache.struts.validator.DynaValidatorForm">

           <form-property name="realname" type ="java.lang.String"/>

           <form-property name="address" type ="java.lang.String"/>

           <form-property name="zip" type ="java.lang.String"/>

           <form-property name="tel" type ="java.lang.String"/>

           <form-property name="email" type ="java.lang.String"/>

           <form-property name="payment" type ="java.lang.String"/>

           <form-property name="memo" type ="java.lang.String"/>

       </form-bean>

       <form-bean name="OrderNoForm"

           type="org.apache.struts.action.DynaActionForm">

           <form-property name="orderNo" type ="java.lang.String"/>

       </form-bean>

</form-beans>

<global-forwards>

       <forward name="toIndex" path="/index.jsp"/>

       <forward name="toListMain" path="/listMain.jsp"/>

       <forward name="toWrong" path="/wrong.jsp"/>

       <forward name="toSuccess" path="/loginOkLeft.jsp"/>

       <forward name="toRegistRight" path="/right.jsp"/>

       <forward name="toDetail" path="/detail.jsp"/>

       <forward name="toShopCart" path="/basket.jsp"/>

       <forward name="toShopCartOk" path="/basketOk.jsp"/>

       <forward name="toOrderOk" path="/orderOk.jsp"/>

       <forward name="toOrderList" path="/orderDisplay.jsp"/>

</global-forwards>

<action-mappings>

       <action path="/index" type="cn.com.shoppingonline.FirstAction"  input="/wrong.jsp" />

       <action path="/search" type="cn.com.shoppingonline.SearchAction" name="SearchForm" scope="request"  input="/wrong.jsp" />

       <action path="/regist" type="cn.com.shoppingonline.RegistAction" name="RegistForm" scope="request"  input="/wrong.jsp" />

       <action path="/login" type="cn.com.shoppingonline.LoginAction" name="LoginForm" scope="request"  input="/wrong.jsp" />

       <action path="/detail" type="cn.com.shoppingonline.DetailAction" name="ProductIdForm" scope="request"  input="/wrong.jsp" />

       <action path="/buy" type="cn.com.shoppingonline.BuyAction" name="ProductIdForm" scope="request"  input="/wrong.jsp" />

       <action path="/updateShopCart" type="cn.com.shoppingonline.UpdateShopCartAction" name="ShopCartForm" scope="request" input="/wrong.jsp" />

       <action path="/createOrder" type="cn.com.shoppingonline.CreateOrderAction" name="OrderForm" scope="request" input="/wrong.jsp" />

       <action path="/orderList" type="cn.com.shoppingonline.OrderListAction"  input="/wrong.jsp" />

       <action path="/delOrder" type="cn.com.shoppingonline.DelOrderAction" name="OrderNoForm" scope="request" input="/wrong.jsp" />

       <action path="/modifyUserInfo" type="cn.com.shoppingonline.ModifyUserInfoAction" name="RegistForm" scope="request" input="/wrong.jsp" />

       <action path="/clearShopCart" type="cn.com.shoppingonline.ClearShopCartAction"  input="/wrong.jsp" />

       <action path="/exit" type="cn.com.shoppingonline.ExitAction"  input="/wrong.jsp" />

</action-mappings>

    <controller processorClass="cn.com.shoppingonline.MyRequestProcessor" />

    <message-resources parameter="cn.com.shoppingonline.MyResource"/>      <plug-in  className="org.apache.struts.validator.ValidatorPlugIn">

       <set-property

        property="pathnames"

        value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>

        <set-property property="stopOnFirstError" value="false"/>

   </plug-in>

   </struts-config>

解釋:a) <form-beans></form-bean>  聲明struts內用到的ActionForm,內嵌多個<form-bean></form-bean>,每個formbean內又定義了form中的若干屬性

      b) <global-forwards></global-forwards> 聲明轉向標識,主要用於程序中根據需要觸發相應的事件(在name中定義),做出相關的轉向(在path中定義)。內嵌多個forward標籤。

     C<action-mappings></action-mappings>下面有多個action標籤,聲明action類與actionform類的對應關係,每個action標籤主要用到三個屬性:path屬性供頁面form標籤的action屬性調用觸發,在form內部的table內需要與actionform建立映射關係的屬性必須要添加name屬性;type屬性定義所用到的action所在的包位置;name屬性定義與action對應的actionform,這要與<form-beans>標籤內的<form-bean>定義的名稱對應。Input屬性定義瞭如果執行失敗所跳轉的頁面。Scope屬性給出了業務的處理範圍(requestsession?)

    d) <plug-in></plug-in>聲明struts所用到的各種組件,例如實例中的認證組件。其下用<set-property/> 標籤設置組件的屬性。

   

 

Hibernate下有兩個關鍵的配置文件:

1.    hibernate.cfg.xml

該文件配置數據庫各種連接配置參數。

<?xml version='1.0' encoding='utf-8'?>

<!DOCTYPE hibernate-configuration

    PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"

 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <session-factory>

        <property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property>

     <property name="hibernate.connection.url">jdbc:mysql://localhost/test</property>

        <property name="hibernate.connection.username">root</property>

        <property name="hibernate.connection.password">zgy01</property>

        <property name="hibernate.connection.pool_size">100</property>

         <property name="show_sql">false</property>

        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

        <!-- Mapping files -->

        <mapping resource="model.hbm.xml"/>

    </session-factory>

</hibernate-configuration>

<session-factory>標籤下主要用<property>標籤和<mapping>來設置解決方案中數據庫連接參數和映射文件model.hbm.xml

2.       model.hbm.xml

該文件主要配置Hibernate中的pojo類與數據庫表中的映射關係(包括數據庫中的主鍵、屬性與pojo類中的屬性之間的對映關係)

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC

      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

         "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="cn.com.shoppingonline">

    <class name="cn.com.shoppingonline.Member"

            table="member"

            discriminator-value="C">

         <id name="id">

             <generator class="increment"/>

        </id>

        <property name="username"/>

        <property name="password"/>

        <property name="realname"/>

        <property name="tel"/>

        <property name="address"/>

        <property name="zip"/>

        <property name="email"/>

    </class>

     <class name="cn.com.shoppingonline.Sort"

            table="sort"

            discriminator-value="C">

         <id name="id">

                 <generator class="increment"/>

         </id>

        <property name="name"/>

    </class>

    <class name="cn.com.shoppingonline.Product"

            table="product"

            discriminator-value="C">

               <id name="id">

               <generator class="increment"/>

        </id>

       <property name="sortid"/>

        <property name="name"/>

        <property name="price"/>

        <property name="saleprice"/>

        <property name="descript"/>

        <property name="contents"/>

        <property name="saledate"/>

        <property name="salecount"/>

        <property name="image"/>

    </class>

     <class name="cn.com.shoppingonline.Order"

            table="orders"

            discriminator-value="C">

        <id name="id">

               <generator class="increment"/>

        </id>

    <property name="orderno"/>

    <property name="userid"/>

        <property name="realname"/>

        <property name="address"/>

        <property name="zip"/>

        <property name="tel"/>

        <property name="payment"/>

        <property name="email"/>

        <property name="memo"/>

        <property name="price"/>

        <property name="time"/>

        <property name="tag"/>

    </class>

       <class name="cn.com.shoppingonline.ShopCart"

            table="shopcart"

            discriminator-value="C">

        <id name="id">

               <generator class="increment"/>

        </id>

    <property name="orderid"/>

        <many-to-one name="product" class="Product" column="productid"/>

        <property name="count"/>

        <property name="price"/>

    </class>

</hibernate-mapping>

<hibernate-mapping>標籤用<class>子標籤來簡歷pojo類與數據庫表之間的一一映射關係<id>指示主鍵,<generator>指示主鍵的遞增方式,<property>指示數據庫中屬性名與pojo類中的屬性名的對映關係。

 

二.關鍵類

HibernateUtil類,用來建立一次數據庫連接操作的session對象(通過sessionFactory來獲取)。

各個pojo類,由私有屬性,以及對映屬性的getXXX(),setXXX()方法構成。

三.流程

發佈了51 篇原創文章 · 獲贊 5 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章