该用户从未签到
|
一、 分析需求
2 N; G; Z( I% Z4 M% B& k1. 用户注册:任何访问者都可以注册为博客管理系统的合法用户* g* _/ f' d6 }. Y
2. 用户登陆:登录的用户具有浏览日志,发表日志,修改日志,删除日志,删除日志评论的功能7 Q% K6 |% H; W: r8 E$ }& @
3. 浏览日志:登录后的用户可以浏览自己的网络日志和评论$ J; N/ P! n+ i" K( s7 Q
4. 发表日志:登录后的用户可以发表自己的网络日志
& x/ r4 o4 w& c: j5. 修改日志:登录后的用户可以修改自己的网络日志
* V9 k' m6 s% l% j6 O" ?6. 删除日志:登录后的用户可以删除自己的网络日志5 [, [- D% s: P# ?9 |
7. 删除评论:登录后的用户可以删除针对本人的网络日志的评论
) _( o0 z4 ?$ _' R- W8. 博客浏览:任何访问者都可以浏览特定用户博客中的日志(按照博客用户的用户名浏览此用户)' ~9 l. w# J. q' s; `
9. 发布评论:任何访问者都可以针对别人的网络日志发表评论
& g/ a+ K( x7 s% S* p* J4 \' m) ~# G6 B/ M" q2 Q# z/ ]9 V
: \ ^$ L4 [: A
二、 分析建模
. w6 @5 Z" w$ @' a1. 实体建模
' {. D0 C' o" [9 Q8 N$ p) x2. 关系模型- p( Z+ P' L' G5 q
3. 构建域模型User/Message/Reply& V/ `4 [" }0 T
+ r F7 Z1 |3 ~# P
% |- g! x% q, v" t三、 项目初始化
, U& _3 U! U# L2 L1. 添加struts支持
. z9 F$ `' f8 z+ S0 Z2. 添加hibernate支持 i9 y3 r! e) K8 e, d
3. 添加log4j/dom4j/common-lang.jar/mysql相关类库% q/ t3 s+ W* t! q( H. Y# V
4. 定义系统异常类" Z( e5 _/ P% Z% c# a
A. BlogException.java+ E" q, P. b6 Z6 @ L
B. BlogDAOException.java* }1 J" {3 a( h% B9 p% F
( ?1 X$ x! D& U) j6 s
9 N- Y& F5 c# {" q) _( z* R四、 实现域模型(实体关系建模)
: D* j6 f$ l4 w1. Java实现域模型
4 ~4 e) {- t# u$ a4 i0 x使用Java语言描述于模型:BaseModel.java/User.java/Message.java/Reply.java
y9 H+ Z- o% z/ _# \2 Y; O- ^) ~2. 数据库实现域模型
% x+ R; v9 u3 @9 D$ p6 b3 t使用数据库语言描述域模型:userinfo表/message表/reply表
" Y) h* ~1 z/ k3. 定义映射文件
& r' o X, K, q6 f! f6 r# e6 {% W6 w+ B3 j& Y* T% z
2 z2 ^' N% @7 T6 n* w1 M5 q( d3 ~五、 基于Hibernate实现DAO
6 M1 F' [: ?6 _0 S% V5 u9 n1. HibernateUtil工具类:简化Hibernate操作% Q8 h( L1 a0 N7 @$ S! t
2. HibernateFilter过滤器:事务处理
5 J( u; l5 i) ]6 D2 i3. HibernateDao基础Dao:简化DAO操作
' r2 ?6 W3 ~2 ]* Y! y- z4. 实现DAO
& l0 P$ W9 p7 B0 R0 ]; j六、 基于dom4j实现DAO与表现层层解耦 |2 G: M( n% k0 l; L
) \- w1 E; Q. r4 l2 e
' |* v& I N1 Y1 y# h
七、 DAO单元测试; A7 c+ |! }- ^/ l' _( {
% Q; r: o/ ]2 ~: I9 J
8 z) T' U6 `* m& q. @八、 基于Struts实现表现层! R2 A. u8 F, b- I: a G
A. 用户管理模块
; v5 X) X7 ^3 H- |+ i1. 用户注册业务流程3 ]% k& ^0 b) e* S. W- o
a) 配置注册页面跳转Action:registerInput.action- ]5 w: i6 N* H0 D
b) 开发注册页面:register.jsp( U0 w/ q8 S0 e# n7 A9 S7 x% D
c) 开发注册Action:RegisterAction.java/ RegisterAction校验文件& M! }$ ~; B8 ]& H1 q
i. 获取并保存用户注册信息
( D6 F: _8 J7 T5 ?' Yii. 注册失败:添加注册失败提示信息;返回注册页面:register.jsp" [( o2 V% ]- t
iii. 注册成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp. j& i' ~. m) w9 g5 [; n
2. 用户登陆业务流程
8 u" B1 m4 F& O6 _8 e% Ua) 开发登录页面:login.jsp: M a' o5 g, k* h3 E
b) 开发登录Action:LoginAction.java/ LoginAction校验文件
: f) g' A+ j+ W3 \: ]3 x. L, ri. 根据用户名查询用户信息
9 j; _; Z' b# T2 L, \ii. 如果用户不存在或者密码不匹配则登录失败,否则登录成功
/ h: w/ j( |9 |* oiii. 登录失败:添加登录失败信息;返回登录页面:login.jsp7 i* U) w [3 |; D
iv. 登录成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp+ ~5 j' d2 \) Q5 C0 r* _
B. 博客管理模块4 M" S# j/ ^- P/ C4 Q; q+ H
1. 浏览日志业务流程
1 D! j, o3 V _- S$ j: oa) 开发浏览日志Action:HomePageAction.java
) \* d2 y, @9 U9 a- M+ Ni. 得到当前登陆用户的信息
- }) N& s" A" t( Xii. 根据登录用户信息得到User持久化对象
7 _( j$ ]. n# u0 Xiii. 返回到博客管理主页面
6 ~: y# C* i, |! A' u5 V: Ib) 开发博客管理主页面:homepage.jsp
8 O& n' T$ s* z' {i. 根据用户持久化对象获取用户日志迭代输出
* o2 D! t+ s- ]# i5 A9 |4 J4 B ~ii. 根据每条日志对象获取日志评论迭代输出6 a1 w, z/ ^+ U% y- O3 c5 q
2. 发表日志业务流程
4 Y: f s$ x0 u6 S4 s3 w9 C5 ga) 配置发表日志跳转Action:messageAddInput.action
1 j5 Y# F4 r+ X3 U5 m$ E4 N7 cb) 开发发表日志页面:message_add.jsp
8 L4 b i) Q- v: x) }5 mc) 开发发表日志Action:MessageAdd.java/ MessageAdd校验文件
/ P7 r( d" ?0 I+ r2 M& w7 _% ~, [i. 保存日志信息6 b: Q5 w2 D* n% ^5 D% B
ii. 设置提示信息
- m. S$ _2 F, t; Y0 [5 a6 tiii. 返回到博客管理主页面0 v. V1 L; h' D4 Z# D4 ^
3. 修改日志业务流程2 d) h. ?6 R" N* g! P
a) 开发修改日志跳转Action:MessageUpdateInputAction.java5 h. d. l' |8 l( G9 R
i. 根据日志ID获取日志对象$ }4 v# D# _# y, _
ii. 返回修改日志页面message_update.jsp
* N7 s5 T% s; f( w0 K- b8 m. }# eb) 开发修改日志页面:message_update.jsp
/ K2 z! n; }5 a# \. Z) di. 根据日志持久化对象获取并展示被修改的日志信息
3 Y: P. h2 K+ Oc) 开发修改日志Action:MessageUpdateAction.java/ MessageUpdateAction校验文件
; I& ?2 y6 d$ E$ X9 ~i. 根据ID得到Message对象
" W, p/ o' O* p# A/ H4 Vii. 更新数据5 g9 q: g* ?' U2 s$ Q! I I+ r
iii. 返回博客管理主页面* Z0 X$ q) w2 n$ y" L+ ]& R" p* K8 |
4. 删除日志业务流程+ k! w$ Y, ^- |& `% P
a) 开发删除日志Action:MessageDeleteAction.java7 W- z9 |; [/ f0 Y" z) Z4 N
i. 获取当前用户ID
3 ~5 A3 u* @6 m6 B' m- qii. 根据用户ID和日志ID删除日志
4 B/ c0 W# i2 O# [$ `6 [iii. 添加提示信息/ }- R1 x; E/ d1 O1 g6 I
iv. 返回博客管理主页面
& V9 o" g1 U: U3 w/ E9 _# A) q5. 删除评论业务流程
8 e% c: B! @' B3 r3 Y5 Ga) 删除评论Action:ReplyDeleteAction.java
: ~5 X/ M8 J( Y3 |4 D, oi. 获取当前用户ID
8 K7 C% `: x ?" |; u" [. }ii. 根据用户ID和评论ID删除日志
3 V2 D( v$ C% n7 f; Tiii. 添加提示信息* U' a9 N8 I' k
iv. 返回博客管理主页面
& P @0 g& S# A7 H5 x5 PC. 博客访问模块
3 @4 T, u1 C6 u) g) E1. 博客浏览业务流程( p' X: p f0 S6 }
a) 开发博客浏览Action:BlogAction.java+ x2 }9 k2 y7 c& q9 H
i. 根据用户名获取持久化User对象% e' x b7 i& t; ?' x
ii. 返回博客浏览主页面
& C) f, F) M( o# D& U5 M# cb) 开发博客浏览主页面:blog.jsp
6 z5 A% x4 @* d6 |. R1 J2 Xi. 根据用户持久化对象User获取用户日志迭代输出
5 p+ M4 D3 O: b5 [! l* i) U7 b }ii. 根据每条日志对象获取日志评论迭代输出
$ u8 f2 w6 V# s+ b, x2. 发表评论业务流程( z* v/ Q7 G3 l- e5 ?. v G
a) 开发配置跳转Action:replyAddInput.action, {) i$ g9 B% F8 d: x$ H
i. 根据日志ID获取被评论的日志对象message
- }% ?1 r+ V! _* Gii. 返回添加日志评论页面/ B# t: o' x/ |: J3 j' w
b) 开发添加评论页面:reply.jsp
; P6 `' H' t& y$ j0 Hi. 显示持久化的message信息(且使用隐藏表单域保存Message信息)3 c8 V2 K/ ]. M# Z2 f
ii. 显示评论的表单
" ~ X2 f% |) k+ `+ r( \! xc) 开发添加评论Action:ReplyAddAction.java/ ReplyAddAction验证文件
. e t( Q* S% }) Ri. 获取并保持评论信息
7 y9 O2 k+ H+ gii. 评论失败:返回添加评论页面reply.jsp(所以Action中应该保存被评论的日志信息)
+ O% `; G9 H6 Oiii. 评论成功:返回博客浏览主页面:blog.jsp. E1 z" R) Y2 Z, i4 `' e+ r5 S4 m
: d" Z* J& B. A3 T; i基于Struts +Hibernate开发的博客管理系统源代码
3 m1 I9 _ a5 O# ?! I' m0 U
! g- D$ Z8 v: {6 O! u6 S# M* V) {7 Y3 k+ u
解压码:# Q7 |$ v. k* J7 V5 x! a6 }
; F& l* U5 ~7 A- J/ l: ^: h( F( B
. e# z+ L* u" l1 m2 N
|
本帖被以下淘专辑推荐:
- · 项目源码|主题: 28, 订阅: 64
- · 网站|主题: 1, 订阅: 0
|