资源描述
______________________________________________________________________________________________________________
成 都 信 息 工 程 学 院
课程设计报告
课程名称: J2EE程序设计
题目名称: 简单微博系统
学生学号: 2009121097
学生姓名: 邓 涛
技术报告(20分)
程序及运行(60分)
答辩 (20分)
总分
设计评语:
一、程序功能模块划分
1.系统功能模块框图
图1 系统功能模块框图
2.各功能的具体实现内容
1) 用户注册模块:用户输入的注册信息包括,用户名、用户密码、用户真实姓名、手机号、Email、QQ号码。在用户注册模块要求检查用户名是否已存在,检查输入Email是否存在,如果存在则不让用户注册。
2) 用户登陆模块:用户打开登陆模块,要求用户输入用户注册的用户名以及对应密码,用户密码验证成功,则加载用户的相关信息,包括用户的好友列表,粉丝列表,已广播微博信息以及关注好友发送的微博信息。
3) 好友管理模块:该模块登陆用户可以查看到自己已添加的好友列表,添加新注册用户为自己的好友,删除自己已添加的好友。
4) 粉丝查看模块:登陆用户可以通过该模块看到自己的粉丝列表(即将当前用户添加为好友的用户列表)。
5) 微博管理模块:登录用户可以使用该模块查看自己以广播的微博信息,并对广播的微博信息删除,查看好友广播的微博信息。
二、功能实现流程图
1.系统主功能
图2 系统主功能实现流程图
2.异步刷新好友微博信息功能
图3 异步刷新的方式显示最新的好友发布的微博信息功能实现流程图
三、数据库设计
1.数据库E-R图
图4 数据库E-R图
2.数据库表设计
1) 表名:_user
2) 说明:存储用户的基本信息
3) 表结构
表1 _user表结构设计
字段名
类型
长度
主外键
可否为空
备注
id
int
PK
not null
用户id,自增
name
varchar
45
not null
用户登录名
password
varchar
150
not null
用户密码密文
reg_date
datetime
null
用户注册日期
fan_num
int
null
用户粉丝数量
edite_date
datetime
null
用户信息修改日期
real_name
varchar
45
null
真实姓名
cell_phone
varchar
20
null
用户手机号
email
varchar
45
not null
用户Email地址
qq_num
varchar
45
null
用户QQ号
1) 表名:_friend
2) 说明:存储用户的好友信息
3) 表结构
表2 _friend表结构设计
字段名
类型
长度
主外键
可否为空
备注
id
int
PK
not null
记录id,自增
userid
int
FK
not null
用户的ID号
friendid
int
not null
所加好友的ID号
1) 表名:_blog
2) 说明:存储用户发送的微博信息
3) 表结构
表2 _blog表结构设计
字段名
类型
长度
主外键
可否为空
备注
id
int
PK
not null
微博id,自增
type
int
not null
1文字,2图片微博
content
varchar
500
not null
微博内容
publishe_date
datetime
null
微博发布时间
image
varchar
200
null
图片URL
userid
int
FK
not null
用户ID
四、程序设计
1.程序分层设计结构图
图5 程序分层设计结构图
2.所使用框架的配置过程
1).Struts2的配置
a.用过Myeclipse的为工程添加Struts Capabilities,选择Struts版本2.2如下图,web即完成struts2的filter以及struts.xml文件的相关配置
需要为工程添加action在struts.xml中进行相关配置。
2).Hibernate配置
a.用过Myeclipse的为工程添加Hibernate Capabilities,不添加Hibernate.cfg.xml文件,也不需要HibernateSessionFactory(后面和Spring集成,不需要这个配置文件了)。
b.通过Hibernate Reverse Engineering生成Hibernate与数据库的映射文件以及Model。
3).Spring配置
a.同样为工程添加Spring Capabilities,在web.xml添加context-param传递参数contextConfigLocation把值设置为Spring的配置文件地址。同时设置Spring的listener如下图
完成配置后工程结构如下图:
在包cn.edu.cuit.dida.miniblog.hibernate下面存放Hibernate的映射文件
在包cn.edu.cuit.dida.miniblog.spring存放Spring的DI相关的配置信息
在包config.spring包中配置了数据源以及SessionFactory的信息
3.功能实现的主要代码
1). JS用户好友微博信息实时刷新
/**
* ajax加载好友的微博信息
*/
function loadFriendsBlogs() {……
friendsBlogInterval = window.setInterval(function(){
$.ajax({
type : "POST",
url : "user/Blog_getFriendsNewBlogs?format=json&showedCount=0&requestCount=10&beginDate=" + beginDate,
success : function (result) {
beginDate = result["updateDate"];
if (result["blogs"].length > 0) {
for (var i = 0, l = result["blogs"].length;
i < l; i ++) {
if (result["blogs"][i]["type"] == 1) {
$("#friends-blog-user-success").html(
……
);
} else {
$("#friends-blog-user-success").html(
……
);
}
}
$("#friends-blog-loading-faild").hide();
$("#friends-blog-user-success").show();
}
}
});
}, 10000);//定时每10s访问服务器请求用户好友更新微博信息
……
}
2).服务器端查询出用户新发布微博关键代码
五、设计经验总结
1. 对框架使用的体会
在web开发过程中使用了框架,更能专注于业务逻辑的开发。在我对框架的使用中,对使用Struts2好处的体会颇深,以前用servlet写web程序时候,接收参数是一个比较麻烦的问题,乱码的问题,让你不得不去处理各种原因引起的乱码,同时对参数的接收也不得不去写request.getParameter……这样繁琐的方法,有了Struts2只需要给对应的Action中提供对应属性的setter,struts2即可自动为我们完成参数的赋值。
再说使用Hibernate,Hibernate作为持久层的一个优秀的框架,完成了数据库到java对象的映射,之前自己通过JDBC连接数据库,写Sql语句是很繁琐的事情,现在在Hibernate下面变得非常简单。
最后Spring,以前没使用Spring的时候没怎么体会到Spring的好处,说实话现在用了Spring也没在我的这个小项目中体会到他的优势,在SSH整合中Action的实例化由Spring容器来管理了,而Spring对Action的管理成为了单例模式,所以以前我在使用Struts2的习惯在整合了Spring后遇到了点不是很方便的问题,没具体去测试Spring管理的Action是对和用户单个Session是一个单例还是对所有的用户都是一个单例。
总的来说SSH给web开发带来了很多方便的地方,学习框架,主要应该是体会设计的思想,升入理解MVC模式。在使用框架过程中,框架在给我们的使用带来方便的同时也带来了一些陷阱。
2. 代码实现和调试经验总结
Spring对Action的管理是采用的单例模式,之前刚编写代码的时候对这个模式的不够了解,让我在Action对一个在之前被赋值为null的变量老是出现null pointer异常信息。
3. 设计不足总结
在设计中仅对用户好友的广播实行是实时刷新,未对用户粉丝列表做实时刷新的实现。
Welcome To
Download !!!
欢迎您的下载,资料仅供参考!
精品资料
展开阅读全文