<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    好·色之徒

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

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

    StrutsSample 概要分析

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

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

    概要

    主要針對表department操作,創建、更新、刪除、選擇

    層次結構說明

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

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

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

    mid:接口和抽象類部分,是相對系統底層的功能的集中體現,相對共通性部分

    midimpl:是對mid層的具體現實

    application:具體業務邏輯、模型

    presentation:表述層,struts的具體實現部分

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

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

    mid

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

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

    方法,在DAOFactoryImpl必須得以實現。

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

    midimpl

    DAOFactoryImpl: DAOFactory的具體實現,在DAOFactory中的兩個abstract方法也得以實

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

    DepartmentDAOImpl:接口DepartmentDAO的具體實現,表的操作具體實現。

    application

    Department:定義了一個數據bean,可以對照數據表department,發現是對應它的一個對

    象的實現。

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

    presentation

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

    CreateDepartmentAction:創建部門的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>

    數據源

    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


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


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     

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

    Copyright © 城市劣人

    好·色之徒
    主站蜘蛛池模板: 99久久久精品免费观看国产| 成人浮力影院免费看| 亚洲午夜福利在线观看| 免费国产黄网站在线看| 国产精品视频免费一区二区三区| 亚洲乱码无限2021芒果| 久久www免费人成看片| 亚洲综合激情另类小说区| 一区二区三区福利视频免费观看| 国产精品亚洲一区二区三区在线 | 久久一区二区三区免费| 亚洲国产精品一区二区第一页免| 国产偷国产偷亚洲高清在线| 国产男女猛烈无遮挡免费视频网站| 亚洲午夜无码久久| 色www永久免费视频| 久久人午夜亚洲精品无码区 | 鲁大师在线影院免费观看| 亚洲自偷自拍另类12p| 2021精品国产品免费观看| 亚洲天堂中文字幕在线观看| 波多野结衣在线免费视频| 久久亚洲最大成人网4438| 国产精品美女午夜爽爽爽免费| 亚洲一区二区观看播放| 日韩人妻无码免费视频一区二区三区 | 亚洲av日韩av永久无码电影| 国产精品免费看香蕉| 国产亚洲精品仙踪林在线播放| 免费成人av电影| 国产成人高清精品免费观看| 亚洲精品乱码久久久久久按摩| 日本高清免费观看| 亚洲精品在线播放| 久久国内免费视频| 亚洲欧美日韩中文二区| 国产精品国产自线拍免费软件| 污视频网站免费观看| 国产成人麻豆亚洲综合无码精品| 波多野结衣免费一区视频| 91亚洲国产在人线播放午夜|