网络文件管理系统(Struts+MySQL+JDBC)
junjinkaka
2007-12-26
目的:通过构建网络文件系统,掌握在Eclipse下如何用Struts来开发一个Web工程
开发环境
1) 系统框架
用 户 请 求 |
JDBC |
数据库服务器 |
Action |
控制器 ActionServlet |
视图 View |
Web 服 务 器 |
模型 JavaBean |
Struts框架 |
2) 系统的开发环境
u 开发平台:Eclipse 3.2
u Web服务器:Tomcat5.5
u 系统框架:Struts+Jsp+JDBC,Struts的版本是Struts 1.2.9
u 数据库服务器:MySQL5.0
u 使用插件:TomcatPlugns
系统需求
一个完整的网络文件管理系统面向对象至少应该有管理员和用户,面向客户的提供的服务有注册、登录、用户信息管理、上传文件、下载文件、删除上传的文件、共享文件、发送站内消息、接手消息和备忘录等服务。面向管理员的提供登录和查询上传的文件的服务。
1) 用户模块
具有以下功能
l 注册帐户。用户登录是一个网络应用系统必须的功能之一。用户想要使用系统的功能就必须先拥有一个账户,因此要到系统中注册一个账户。用户在注册时系统要求用户输入用户注册信息,包括用户名、密码、确认密码、真实姓名、性别、联系电话和电子邮件等。如果用户名已经存在,则系统提示用户名已存在,请使用其它用户名。注册完以后,可以进行登录。
l 利用注册账户登录系统。登录要求用户输入用户名和口令。在输入用户名和口令后,系统将验证用户名和口令是否正确。如果验证成功,就使用户处于登录状态;否则,系统将显示用户名或密码错误的信息。
l 修改用户的账户信息。用户登录后可以随时修改个人的注册信息。
l 上传文件。用户可以通过系统把自己的文件上传到服务器。
l 共享文件。用户可以通过系统把自己的文件进行共享,以供其他用户下载。
l 删除文件。用户可以通过系统把上传的文件从用户空间中删除。
l 下载系统的共享文件。用户可以在系统中下载其他用户共享的文件。
l 发送站内消息。用户可以向站内的用户发送消息。
l 备忘录。系统还为用户提供了备忘录功能。
2) 管理员模块
具有以下功能
l 登录系统
l 查询文件
用户 |
数据库 |
管理员 |
删除文件 |
备忘录 |
|
注册 |
登录 |
站内消息 |
上传文件 |
下载文件 |
共享文件 |
查询文件 |
系统设计
1) 系统总体架构
视图层 |
控制层 |
模型层 |
JDBC层 |
数据库层 |
2) 业务实体设计
根据前面的系统需求分析,本系统可以抽象出来的业务实体包括用户(client)、文件(clientfile)、管理员(admin)、用户空间(clientfilepace)、消息(clientmessage)、备忘录(clientremind)
关系数据模型图
3) 业务逻辑设计
a) 数据层设计
编写数据层访问类DataStore,封装了 JDBC 基本的数据库操作CRUD,存放在包bit.ferry.db中。
b) 服务层设计
在服务层中主要的核心逻辑业务有:用户账户相关逻辑、文件操作相关逻辑和管理员的相关逻辑。因为本系统采用 Struts来构建框架,因此都是通过Struts 中的 Action和ActonForm搭建起来的。而Struts是通过web.xml 和struts-config.xml配置文件来调度并完成各模块的功能。Web.xml文件是Web工程的配置文件,位于 WEB-INF目录下,在这个文件中将会对Servlet、Struts标签等进行初始化设置,并且对工程本身的一些属性进行配置。Struts-config.xml文件是Struts 框架的配置文件,位于WEB-INF目录下,在这个文件中将会对Struts中用到的控制器(Action)、视图(JSP)、模型(ActionForm)进行配置。
系统实现
1) 创建系统的视图
在 WEB-INF下创建admin.jsp,ManageFile.jsp,FileList.jsp,Register.jsp,RegisterSuccess.jsp,
Log.jsp,Logerror.jsp,Login.jsp,Modify.jsp,FileUpload.jsp,FileUploadSuccess.jsp,FileDelete.jsp,
FileShareFail.jsp,Share.jsp,AddRemind.jsp,RemindContent.jsp,RemindDeletefail.jsp,SendMessage.jsp,RemoveMessage.jsp,Exit.jsp.
2)创建系统的包
创建源文件夹src, 然后在src上创建包bit.ferry.action、bit.jeffy.business、bit.ferry.db、
bit.ferry.personal、bit.ferry.tags
3)创建系统的自定义标签
在bit.ferry.tags下创建8个标签类:CampusNewsTag,ClientVisit, CreateNewCategory, InformaceTag, MusicNewsTag, MyChooseViewTag, MyDateTag, MyShareFile,.
为了使用自己定义的标签类,还要在 WEB-INF下创建一个普通文件jeffy.tld。
4) 用户注册功能创建
l 用户注册流程
返回注册结果 |
用户进入注册页面Register.jsp,输入 |
注册控制器RegisterAction调用业务类进行注册 |
调用DataStore注册 |
用户的注册功能 |
被调用 |
l 修改Register.jsp文件代码
l 建立注册模型RegesterBean类
l 建立注册控制器RegisterAction类
l 在 struts-config.xml中配置注册模型和注册控制器
5) 用户登录功能创建
l 用户登录流程
返回登录结果 |
用户进入登录页面Log.jsp,输入登录信息 |
登录控制器LogrAction验证用户的登录信息 |
调用DataStore 验证信息 |
用户的登录请求功能 |
被调用 |
l 修改Log.jsp文件代码
l 建立登陆模型UserBean类
l 建立登录控制器LogAction类
l 配置登录模型和控制器
6)用户修改信息
l 用户修改信息流程
在用户功能视图中,调用修改信息业务类 |
DataStore |
ClientManagement类 |
修改信息控制器 |
修改信息视图Modify.jsp提供修改表单 |
修改信息结果 |
被调用 |
修改信息表 |
选择修改信息功能 |
被调用 |
l 用户管理业务ClientManagement类
l 修改Modify.jsp文件代码
l 建立修改信息模型ModifyBean类
l 建立修改信息控制器ModifyAction和ModifySubmitAction类
l 配置修改信息模型和控制器
7) 用户上传文件
l 上传文件流程
用户进入上传文件视图FileUpload.jsp填写上传文件表单 |
用户上传文件控制器FileUploadAction, 调用业务类上传文件 |
DataStore类 |
上传文件结果 |
上传文件请求 |
被调用 |
l 修改FileUpload.jsp文件代码
l 建立上传文件模型FileUploadBean类
l 建立上传文件控制器FileUploadAction 类
l 配置上传文件模型和控制器
8) 用户删除文件
l 删除文件流程
删除文件视图中调用删除文件业务类 |
删除文件控制器 FileDeleteAction |
DataStore类 |
删除文件结果 |
删除文件请求 |
被调用 |
文件管理业务类 ClientFileManagement提供删除文件的功能 |
被调用 |
l 文件管理业务ClientFileManagement类
l 建立删除文件控制器FileDeleteAction类
l 配置删除文件模型和控制器
9) 共享/撤销共享文件
l 共享/撤销共享文件流程
删除文件视图中调用文件管理业务类 |
共享/撤销共享文件控制器 FileShareAction |
DataStore类 |
共享/撤销共享 文件结果 |
共享/撤销共享文件请求 |
被调用 |
文件管理业务类 ClientFileManagement提供共享/撤销共享文件的功能 |
被调用 |
l 文件管理业务ClientFileManagement类
l 建立共享控制器FileShareAction类
l 配置共享控制器
10) 站内消息
l 使用消息功能流程
发送消息结果 |
删除消息请求 |
消息业务类ClientMessage提供发送消息、删除消息的功能 |
DataStore类 |
发送消息请求 |
发送消息视图 SendMessage.jsp |
用户消息功能视图 |
发送消息控制器SendMessageAction |
删除消息结果 |
被调用 |
消息管理视图调用消息业务类提供发送、删除消息功能 |
删除消息控制器 RemoveMessageAction |
被调用 |
l 站内消息业务ClientMessage类
l 建立删除站内消息控制器RemoveMessageAction 类
l 配置删除消息控制器
l 修改SendMessage.jsp文件代码
l 创建发送消息模型MessageBean类
l 创建发送消息控制器SendMessageAction类
l 配置发送消息模型和控制器
11) 备忘录
l 使用备忘录流程
添加备忘录结果 |
删除备忘录请求 |
备忘录业务类ClientRemind提供添加和删除备忘录功能 |
DataStore类 |
添加备忘录请求 |
发送消息视图 SendMessage.jsp |
用户消息功能视图 |
添加备忘录控制器AddRemindAction |
删除备忘录结果 |
被调用 |
备忘录管理视图调用备忘录业务类提供添加和删除备忘录功能 |
删除备忘录控制器 RemindDeleteAction |
被调用 |
l 备忘录业务ClientRemind类
l 创建删除记录的控制器RemindDeleteAction类
l 配置删除记录的控制器
l 修改AddRermind.jsp文件代码
l 创建添加备忘录模型RemindBean类
l 创建添加备忘录控制器AddRemindAction类
l 配置添加备忘录模型和控制器
12) 管理员登录
l 管理员登录流程
管理员登录视图 admin.jsp输入登录信息 |
管理员登录控制器 AdminLogAction调用业务类验证登录信息 |
DataStore类 |
返回登录结果 |
管理员登录请求 |
被调用 |
l 修改admin.sp文件代码
l 建立登录模型UserBean类
l 建立管理员登录控制器AdminLogAction类
l 配置管理员登录模型和控制器
13)管理员查询文件
l 管理员查询文件流程
管理员登录文件视图ManageFile.jsp 输入查询信息 |
管理员查询文件控制器 ManageFileAction调用业务类查询文件 |
DataStore类 |
返回查询结果 |
管理员查询请求 |
被调用 |
查询结果视图FileList显示查询结果 |
l 修改ManageFile.jsp文件代码
l 创建查询模型SearchFileBean类
l 创建查询控制器ManageFileAction类
l 配置查询模型和控制器
总结
本项目通过在Eclipse下使用Struts+JDBC+MySQL开发了一个简单的应用系统,掌握了从发出请求到接收请求、处理请求、再返回到用户视图中的MVC开发流程,并掌握如何进行配置。
不足
A. MySQL中的中文显示问题
B. 没有考虑比较完备的安全策略和用户权限问题,关系数据模型进行了简化。