程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> struts簡單案例-適合初學者(三)

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

編輯:關於JAVA

說明:具體案例的分析,詳細的分析在講解的過程中再闡述(這份案例大約在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頁面上的元素。可以發現它和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>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved