好·色之徒

          struts簡單案例-適合初學者(三)

          Posted on 2008-08-07 12:48 城市劣人 閱讀(1372) 評論(0)  編輯  收藏

          StrutsSample 概要分析

          更多詳情請參見:我的博客 我的生活

          說明:具體案例的分析,詳細的分析在講解的過程中再闡述(這份案例大約在04年已經(jīng)完成,所以現(xiàn)在看起來難免有些不符合時代潮流,領會精神即可)

          概要

          主要針對表department操作,創(chuàng)建、更新、刪除、選擇

          層次結構說明

          共分為四層:mid、midimpl、application、presentation

          一般開發(fā)基于MVC結構的應用來說,層次的劃分是很重要的,三層結構、于至于多層結構的演變有其一定的道理。MVC本身就是模型、視圖、控制的層次劃分,這樣有助于職能的明確,加快開發(fā)效率,最重要的是系統(tǒng)的把握度和可擴展的能力。

          當然這里的四層劃分,不是絕對的,根據(jù)不同的項目可以有不同的調(diào)整,只是作為一個參考,這是一個實際項目中保留下來的,有其一定的科學性。

          mid:接口和抽象類部分,是相對系統(tǒng)底層的功能的集中體現(xiàn),相對共通性部分

          midimpl:是對mid層的具體現(xiàn)實

          application:具體業(yè)務邏輯、模型

          presentation:表述層,struts的具體實現(xiàn)部分

          具體為何如此劃分層次,會具體講解,也請大家考慮一下。

          下面具體講解StrutsSample的各個組成

          mid

          DAOFactory:是采用了工廠模式來實現(xiàn)的,其間又有DAO模式。

          功能:得到DAOFactoryImpl(DAOFactory的具體實現(xiàn))實例,并提供了兩個abstract

          方法,在DAOFactoryImpl必須得以實現(xiàn)。

          DepartmentDAO:操作表department的接口,定義了一些對表的基本操作

          midimpl

          DAOFactoryImpl: DAOFactory的具體實現(xiàn),在DAOFactory中的兩個abstract方法也得以實

          現(xiàn):init()方法,取得數(shù)據(jù)源。getDepartmentDAO()方法,得到接口DepartmentDAO的具體實例DepartmentDAOImpl。除了要必須實現(xiàn)的方法外,還定義了getConnection()方法,以取得對數(shù)據(jù)源的連接。

          DepartmentDAOImpl:接口DepartmentDAO的具體實現(xiàn),表的操作具體實現(xiàn)。

          application

          Department:定義了一個數(shù)據(jù)bean,可以對照數(shù)據(jù)表department,發(fā)現(xiàn)是對應它的一個對

          象的實現(xiàn)。

          DepartmentBO:定義了這個應用程序中所需要的業(yè)務邏輯,比如selectDepartment(String depid)方法,根據(jù)一個部門的ID來獲得該部門的詳細數(shù)據(jù)、createDepartment()、updateDepartment()、 deleteDepartment()分別對應創(chuàng)建、更新、刪除

          presentation

          DepartmentForm:Form Bean表單,收集JSP頁面上的元素。可以發(fā)現(xiàn)它和application層的Department類是類似的,因為Form表單所收集的數(shù)據(jù)真好是對 應數(shù)據(jù)庫中的字段的。(這只是個比較特殊的例子而已,開發(fā)中不一定都是這樣的,這里同時引申出一個問題,居然兩個類是類似的,為什么不合并一下,就用其中 的一個類的,這樣不是還可以節(jié)省一個類嗎?)

          CreateDepartmentAction:創(chuàng)建部門的Action類

          DeleteDepartmentAction:刪除部門的Action類

          ListDepartmentAction:所有部門的一個列表

          SelectDepartmentAction:選擇一個部門

          UpdateDepartmentAction:更新部門的Action類

          資源文件

          ApplicationResources.properties

          JSP

          index.jsp

          Create

          –register.jsp

          –success.jsp

          –failure.jsp

          list

          –departmentList.jsp

          –failure.jsp

          update

          –update.jsp

          –failure.jsp

          struts-config.xml

          <?xml version=”1.0″ encoding=”ISO-8859-1″ ?>

          <!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>

          <!– ========== Form Bean Definitions =================================== –>

          <form-beans>

          <!– Logon form bean –>

          <form-bean?? name=”departmentForm”

          type=”cn.haose.struts.presentation.DepartmentForm”>

          </form-bean>

          </form-beans>

          <!– ========== Action Mapping Definitions ============================== –>

          <action-mappings>

          <action? path=”/create”

          type=”cn.haose.struts.presentation.CreateDepartmentAction”

          name=”departmentForm”

          scope=”request”

          input=”/create/register.jsp”>

          <forward name=”success”?? path=”/create/success.jsp”/>

          <forward name=”failure”?? path=”/create/failure.jsp”/>

          </action>

          <action? path=”/list”

          type=”cn.haose.struts.presentation.ListDepartmentAction”

          >

          <forward name=”success”?? path=”/list/departmentList.jsp”/>

          <forward name=”failure”?? path=”/list/failure.jsp”/>

          </action>

          <action? path=”/select”

          type=”cn.haose.struts.presentation.SelectDepartmentAction”

          >

          <forward name=”success”?? path=”/update/update.jsp”/>

          <forward name=”failure”?? path=”/update/failure.jsp”/>

          </action>

          <action? path=”/delete”

          type=”cn.haose.struts.presentation.DeleteDepartmentAction”

          >

          <forward name=”success”?? path=”/list.do”/>

          <forward name=”failure”?? path=”/update/failure.jsp”/>

          </action>

          <action? path=”/update”

          type=”cn.haose.struts.presentation.UpdateDepartmentAction”

          name=”departmentForm”

          scope=”request”

          input=”/update/update.jsp”>

          <forward name=”success”?? path=”/list.do”/>

          <forward name=”failure”?? path=”/update/failure.jsp”/>

          </action>

          </action-mappings>

          <!– ========== Message Resources Definitions =========================== –>

          <message-resources parameter=”ApplicationResources”/>

          </struts-config>

          web.xml.

          <?xml version=”1.0″ encoding=”UTF-8″?>

          <!DOCTYPE web-app PUBLIC “-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN” “http://java.sun.com/dtd/web-app_2_3.dtd”>

          <web-app id=”WebApp”>

          <display-name>sample</display-name>

          <servlet>

          <servlet-name>action</servlet-name>

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

          <init-param>

          <param-name>config</param-name>

          <param-value>/WEB-INF/struts-config.xml</param-value>

          </init-param>

          <load-on-startup>1</load-on-startup>

          </servlet>

          <!– Action Servlet Mapping –>

          <servlet-mapping>

          <servlet-name>action</servlet-name>

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

          </servlet-mapping>

          <welcome-file-list>

          <welcome-file>index.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>

          <taglib>

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

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

          </taglib>

          <resource-ref>

          <description>DB Connection</description>

          <res-ref-name>jdbc/SAMPLE</res-ref-name>

          <res-type>javax.sql.DataSource</res-type>

          <res-auth>Container</res-auth>

          </resource-ref>

          </web-app>

          數(shù)據(jù)源

          Tomcat 中的 server.xml

          <Context path=”/sample” docBase=”sample” debug=”0″

          reloadable=”true” crossContext=”true”>

          <Resource name=”jdbc/SAMPLE”

          auth=”Container”

          type=”javax.sql.DataSource”/>

          <ResourceParams name=”jdbc/SAMPLE”>

          <parameter>

          <name>factory</name>

          <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>

          </parameter>

          <parameter>

          <name>driverClassName</name>

          <value>oracle.jdbc.OracleDriver</value>

          </parameter>

          <parameter>

          <name>url</name>

          <value>jdbc:oracle:thin:@hao-se:1521:haose</value>

          </parameter>

          <parameter>

          <name>username</name>

          <value>test1</value>

          </parameter>

          <parameter>

          <name>password</name>

          <value>test1</value>

          </parameter>

          <parameter>

          <name>maxActive</name>

          <value>10</value>

          </parameter>

          <parameter>

          <name>maxIdle</name>

          <value>1</value>

          </parameter>

          <parameter>

          <name>maxWait</name>

          <value>-1</value>

          </parameter>

          </ResourceParams>

          </Context>

          最后附上運行畫面

          Index.jsp

          20080726-struts1.png

          Create?? register.jsp

          20080726-struts2.png

          Create?? success.jsp

          20080726-struts3.png

          Create?? failure.jsp

          20080726-struts4.png

          list??? departmentList.jsp

          20080726-struts5.png

          list??? failure.jsp

          20080726-struts6.png

          update???? update.jsp

          20080726-struts7.png


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           

          posts - 39, comments - 91, trackbacks - 0, articles - 1

          Copyright © 城市劣人

          好·色之徒
          主站蜘蛛池模板: 上犹县| 巧家县| 汉中市| 承德市| 伽师县| 涟水县| 申扎县| 西安市| 东乡族自治县| 湄潭县| 嘉禾县| 晴隆县| 泌阳县| 苏州市| 峨边| 林周县| 庐江县| 呼和浩特市| 天祝| 随州市| 丹东市| 澄迈县| 五常市| 阿瓦提县| 容城县| 镇江市| 锦屏县| 河间市| 无为县| 广丰县| 贺州市| 安塞县| 阜康市| 福海县| 镇宁| 边坝县| 贺州市| 利津县| 丹东市| 兰坪| 自贡市|