MyEclipse 开发基于 MVC 模式的 WEB 应用 实例讲解
《struts 框架开发实战》 行胜于言 (QQ:624600325)整理共享
一、开发步骤
软件开发通常包括的五个步骤:
1、 分析 2、设计 3、编码 4、测试 5、发布
本文档以 addressbook 应用为例, 阐述对 struts 应用进行需求分析 设计开发的过程和方
法,步骤如下:
1、 收集和分析应用需求
2、 设计数据库
3、 设计应用的业务逻辑组件
4、 设计客户界面
5、 设计 ActionForm
6、 设计 Action
二、需求分析
理解客户的业务过程,分析员和具有业务知识的客户沟通,发现需求,绘制 UML 用例
图、编写用例文档。
Addressbook 应用的需求:
A、 安全登入
B、添加好友
C、根据特定条件查询好友
D、 列出所有好友
E、安全登出
用例图
用例详细描述表
用例
前置条件
主事件流
其他事件流
后置条件
A、安全登入
无
码,安全登入,显示应用主
用户输入正确的用户名密
菜单
1、 如果用户未输入用户名密码
提示用户名和密码不为空
2、 如果用户输入非法用户名密
码提示用户名密码不正确
B、添加好友
用户已经安全登陆系统 把用户输入的信息保存到
如果用户未输入姓名电话地址
数据库,返回提示信息:记
提示错误信息:姓名密码地址
录已经被成功保存
不能为空
C、查询好友
用户已经安全登陆系统 用户输入模糊查询条件 (如
如果用户没有输入任何信息,
姓名,电话,地址),返回
提示:必须至少提供一个查询
D、列出所有好友 用户已经安全登陆系统
返回所有好友信息
E、安全登出
用户已经安全登入系统 结束当前 http 会话,返回
符合条件的记录
条件
无
无
welcome 页面
无
无
无
无
无
三、数据库设计
本系统需要存储好友信息到数据库,需要建数据库和相应表
数据库名:ADDRESSBOOKSAMPLE
表 ADDRESSBOOK_TABLE 结构
字段
类型
ID
NAME
PHONE
ADDRESS
Int(4)
Char(25)
Char(10)
Char(50)
说明
记录 ID ,自动增长,主键
好友姓名
好友电话
好友地址
系统登陆认证数据保存在 xml 文档中。文档名 userdatabase.xml
文档内容如下:
四、业务逻辑组件设计
Struts 框架中,模型组件负责完成业务逻辑,模型组件可以是 Java Bean 、Ejb 组
件、实体类。本应用包括以下业务逻辑:
1、 访问 xml 格式用户信息
2、 访问和操纵数据库,包括添加,查询信息。
设计相应业务逻辑实现类
UserDatabaseServlet :负责访问 userdatabase.xml 文件,加载认证用户信息存放到
Hashtable 中。
DbUtil :负责建立数据库的连接,提供 connectToDb()方法,该方法建立和数据
库的连接并返回这个连接。
AddressBookBean :代表好友信息,包括 name,phone,address 字段。负责查询
添加数据库的功能。
Constants:应用用到的常量类;
UserBean:系统认证用户类,由 UserDatabaseServlet 类使用。
UML 类图
五、 用户界面设计
用户界面是 WEB 应用和用户交互的窗口。
本应用的界面列表
无
说明
欢迎页面提供登陆连接
用户登陆,可编辑
添加好友信息,可编辑
查询数据,可编辑
字段
字段类型
界面
Welcome(index.jsp) 无
username,password 字符
登陆界面 logon.jsp
添加数据(insert.jsp) name,phone, address 字符
查询数据 (search.jsp) name,phone, address 字符
显示数据(display.jsp) Name,phone,address 字符
主
(mainMenu.jsp)
添 加 数 据 确 认 界 面
(confirmation.jsp)
根据用例事件流可以确定界面的访问入口和切换关系,UML 状态图 如下:
提供操作菜单
显示确认信息
菜
单
无
无
无
只读
无
六、设计 ActionForm
ActonForm bean 用于在视图组件和控制器组件之间传递 Html 表单数据, 它的 validate
方法用于对用户输入的数据进行合法性验证,不涉及对数据的业务逻辑验证。
本应用的 ActionForm Bean 列表
ActionForm
LogonForm
InsertForm
SearchForm
属性
username,password
name,phone,addres
name,phone,address
Validate()方法
都不为空
都不为空
不都为空
七、设计 Action 和 ActionForm 的映射
Action 负责单个事件的流程控制,根据本应用的用例,可以创建以下 Action:
LogonAction、LogoffAction、InsertAction、SearchAction、DisplayAllAction
Action 映射决定了 Action 与其他 web 组件之间的关联关系。
Action
LogonAction
LogoffAction
InsertAction
SearchAction
DisplayAllAction
入口
logon.jsp
mainMenu.jsp
insert.jsp
search.jsp
mainMenu.jsp
Action 组件映射图:
Action 映射表
ActionForm
LogonForm
无
InsertForm
SearchForm
无
出口
mainMenu.jsp
index.jsp
confirmation.jsp
display.jsp
display.jsp
八、实战开发过程
1、打开 MyEclipse 新建 Web 工程 addressbook。
添加 struts 性能:在工程单击右键选择:MyEclipse>Add Struts Capabilites....
完成后目录结构如下:
2、 业务逻辑组件编码
依据业务逻辑组件设计部分的说明编写相关类代码。这些类有:Constants.java
UserBean.java DbUtil.java AddressBookBean.java UserDatabaseServlet.java 把这几个
类放到 model 包里。
新建 model 包
新建 Constants 类
package com.mycompany.struts.model;
public class Constants {
// Session keys
public static final String DATABASE_KEY = "database";
public static final String USER_KEY = "user";
public static final String SQLSTMT_KEY = "sqlstatement";
// Forward values
public static final String FORWARD_SUCCESS = "success";
public static final String FORWARD_FAILURE = "failure";
public static final String FORWARD_ERROR = "error";
public static final String FORWARD_CONFIRMATION = "confirmation";
public static final String FORWARD_INSERT = "insert";
// Jsp files references in this application
public static final String DISPLAY_JSP = "/display.jsp";
public static final String INDEX_JSP = "/index.jsp";
public static final String LOGOFF_JSP = "/logoff.jsp";
public static final String LOGON_JSP = "/logon.jsp";
public static final String MAIMENU_JSP = "/mainMenu.jsp";
public static final String SEARCH_JSP = "search.jsp";
// Database table name used for this sample
public static final String TABLENAME = "ADDRESSBOOK_TABLE";
}
新建 UserBean 类
package com.mycompany.struts.model;
public class UserBean {
private String password = null;
private String userName = null;
public String getPassword() {
return password;
}
public void setPassword(String password) {