首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Struts 簡單案例教學 (三):四層架構完整實作與配置

     編輯:Java 相關知識

案例概要

針對 department 資料表實作建立、更新、刪除、查詢。採四層架構:mid、midimpl、application、presentation。

層次架構說明

  • mid:介面與抽象類別,系統底層共通功能集中體現
  • midimpl:mid 層具體實作
  • application:具體業務邏輯與領域模型
  • presentation:表現層,Struts 具體實作

四層劃分非絕對,視專案調整,但有助於職責清晰、擴展性佳。

各層類別詳細設計

mid 層

  • DAOFactory:工廠模式 + DAO 模式。提供 getInstance() 取得實作類別,定義兩個抽象方法供實作。
  • DepartmentDAO:操作 department 表的介面,定義基本 CRUD 方法。

midimpl 層

  • DAOFactoryImpl:實作 init() 取得資料源、getDepartmentDAO() 回傳 DepartmentDAOImpl 實例、getConnection() 取得資料庫連線。
  • DepartmentDAOImpl:實作 DepartmentDAO 介面,具體 SQL 操作。

application 層

  • Department:資料 Bean,對應 department 表欄位。
  • DepartmentBO:業務邏輯元件,方法:selectDepartment(String depid)、createDepartment()、updateDepartment()、deleteDepartment()。

presentation 層 (Struts)

  • DepartmentForm:Form Bean 收集頁面參數,結構與 Department 相似 (引發關於合併的思考)
  • CreateDepartmentAction、DeleteDepartmentAction、ListDepartmentAction、SelectDepartmentAction、UpdateDepartmentAction

資源檔與配置

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

<struts-config>
    <form-beans>
        <form-bean name="departmentForm" type="cn.haose.struts.presentation.DepartmentForm"/>
    </form-beans>
    <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 parameter="ApplicationResources"/>
</struts-config>

web.xml

<web-app>
    <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>
    <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>
    <taglib>...</taglib> (bean, html, logic)
    <resource-ref>
        <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>

本案例展示分層架構在 Struts 專案中的落地實作,適合初學者理解 MVC 與分層設計精髓。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved