好·色之徒

struts简单案例-适合初学者(三)

Posted on 2008-08-07 12:48 城市劣人 阅读(1266) 评论(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页面上的元素。可以发现它和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


只有注册用户登录后才能发表评论。


网站导航:
 

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

Copyright © 城市劣人

好·色之徒