该用户从未签到
|
一、 分析需求
* X9 R% P0 A8 U( t* G1. 用户注册:任何访问者都可以注册为博客管理系统的合法用户2 }% l% y& U: E6 L. L
2. 用户登陆:登录的用户具有浏览日志,发表日志,修改日志,删除日志,删除日志评论的功能7 m/ V+ \& S8 P& d6 M. e) F
3. 浏览日志:登录后的用户可以浏览自己的网络日志和评论
+ }; V' I) |. b1 ?# o4. 发表日志:登录后的用户可以发表自己的网络日志7 a4 t- ]. r0 {8 A2 Q% y. v9 f# ^
5. 修改日志:登录后的用户可以修改自己的网络日志7 X4 ~3 \/ J$ p; c, h- e Q- i
6. 删除日志:登录后的用户可以删除自己的网络日志! g) \% C2 Z9 d6 d. U) {: ]
7. 删除评论:登录后的用户可以删除针对本人的网络日志的评论
( w0 V+ f$ N1 {6 V. t8. 博客浏览:任何访问者都可以浏览特定用户博客中的日志(按照博客用户的用户名浏览此用户)
; p! y! @ s* y& C3 }5 w1 k- [9. 发布评论:任何访问者都可以针对别人的网络日志发表评论
* o: k3 Y( d: Y) |. q% a. E- l* E6 g6 y* Q0 T) C* d+ G' w. c8 N
. q( d3 u# T/ d
二、 分析建模; Q1 H7 K& A/ |0 z9 e! g1 E1 Q
1. 实体建模# U7 G5 s4 g- g* H/ D3 m
2. 关系模型1 R Y. r+ p2 ~2 c
3. 构建域模型User/Message/Reply, l7 l5 f9 N- W; e2 Q6 ^
4 M h+ p- Q6 U! ], t5 j* J# p0 D; _- V; w! }0 ~
三、 项目初始化2 E0 q( C$ p I& r5 t" G4 S
1. 添加struts支持9 U) v2 d* t4 N( m
2. 添加hibernate支持
8 [/ m3 ~$ H: ^1 w2 L) ?# _3. 添加log4j/dom4j/common-lang.jar/mysql相关类库
+ E: d3 M% ?" c4 B( ]" i4. 定义系统异常类- O$ l, N/ G) |6 L
A. BlogException.java' w; m2 _# ^: W
B. BlogDAOException.java- b M% r* b2 e! F2 E. A2 J7 {- l
7 o/ p0 a1 |- ^
" w! O: I& d4 P Z" @四、 实现域模型(实体关系建模)
7 f' D+ |& a% ], Y6 j" C+ ]! v1. Java实现域模型/ F' p. ]" t& e+ `, b
使用Java语言描述于模型:BaseModel.java/User.java/Message.java/Reply.java0 `3 \6 e1 c: z
2. 数据库实现域模型' K- Y v& U9 D( N- e/ [8 L
使用数据库语言描述域模型:userinfo表/message表/reply表- j0 [" m5 _4 G, b
3. 定义映射文件- B" q$ Z/ _" W6 h% v" A
~; C! |# ?- T0 Y6 A
3 i+ O5 }: X2 v4 V( ^1 ?
五、 基于Hibernate实现DAO
/ N0 @0 r0 t! {' a Q5 ^1. HibernateUtil工具类:简化Hibernate操作( t9 x: \* H, b
2. HibernateFilter过滤器:事务处理
6 @1 A/ N/ s8 E: V3. HibernateDao基础Dao:简化DAO操作0 o" Y u: w; I' p/ ?
4. 实现DAO# e+ K% ?& I% d3 V" G# H' W
六、 基于dom4j实现DAO与表现层层解耦" l9 ~7 \- h f5 [
1 g: L: b3 \ L! g( a5 s' c& f" B7 d0 O
七、 DAO单元测试* L) m$ G( k! u$ Y9 ~" b/ z" b
) z' U/ H3 J" |; J ^
6 a3 |: }- L+ y& }- ?, R
八、 基于Struts实现表现层
2 z% x9 u% _8 G1 kA. 用户管理模块
8 V# ^5 i6 D& Z& l, w- j- t$ Z1. 用户注册业务流程
$ l+ p* a& V- y3 A; ba) 配置注册页面跳转Action:registerInput.action
+ @6 @5 Q- Q/ p& U* Bb) 开发注册页面:register.jsp
p% h- Z( @% d8 g& t6 s0 T+ U: C1 kc) 开发注册Action:RegisterAction.java/ RegisterAction校验文件" |- I, L4 P; a& m) H/ y
i. 获取并保存用户注册信息& G5 H. y3 S2 W( E/ ?0 M! X; U! Q+ ^
ii. 注册失败:添加注册失败提示信息;返回注册页面:register.jsp
: z2 d, h: e- m" e0 ?4 z3 q% ciii. 注册成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp
5 ~0 d) B* u! a2. 用户登陆业务流程5 O y5 ^/ \3 I, D" I
a) 开发登录页面:login.jsp2 E8 `' h) o- {% r: i
b) 开发登录Action:LoginAction.java/ LoginAction校验文件8 V( r" [( ?% a# |9 A2 D+ X1 H
i. 根据用户名查询用户信息
: E$ k" G0 @5 c+ ]! |! @ii. 如果用户不存在或者密码不匹配则登录失败,否则登录成功3 p/ Z4 j, `1 ?& H
iii. 登录失败:添加登录失败信息;返回登录页面:login.jsp
$ f) d8 _* J" X5 }' o# W) v5 |iv. 登录成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp' t# k; ~ b2 G; S2 B- P
B. 博客管理模块
: r7 l+ f( n3 P" P1. 浏览日志业务流程
i" l8 L/ Y5 B" A( [' na) 开发浏览日志Action:HomePageAction.java
+ W' n& n) M$ ?6 Ci. 得到当前登陆用户的信息
9 J" W6 q2 a" Dii. 根据登录用户信息得到User持久化对象
; X/ @+ L l" Q, A" Eiii. 返回到博客管理主页面
6 Z( J% {9 V0 \b) 开发博客管理主页面:homepage.jsp
/ p& u7 Y; t7 p( c7 l; `( ri. 根据用户持久化对象获取用户日志迭代输出
Z% x8 u" E) @, Q% jii. 根据每条日志对象获取日志评论迭代输出0 v6 _7 f: h; O
2. 发表日志业务流程
- V* A* s' ?8 D/ P9 e- T; \; i6 Ta) 配置发表日志跳转Action:messageAddInput.action
. v# i. n$ F, Qb) 开发发表日志页面:message_add.jsp0 N0 X; C0 {& _ q
c) 开发发表日志Action:MessageAdd.java/ MessageAdd校验文件7 S4 g7 L; ?1 ^. A$ ?0 {& z
i. 保存日志信息- @3 K# B2 Z! w
ii. 设置提示信息9 O: N% p$ C$ \* f/ h6 N9 \. S3 t6 m
iii. 返回到博客管理主页面6 @4 n* ]! l$ c& f
3. 修改日志业务流程
0 ~& m7 L0 Y$ Oa) 开发修改日志跳转Action:MessageUpdateInputAction.java: G0 K4 z+ K* w8 G5 B x; \
i. 根据日志ID获取日志对象) D" P/ y/ ]5 ?6 Z
ii. 返回修改日志页面message_update.jsp
3 @# H, t8 q8 c2 V: ?; |b) 开发修改日志页面:message_update.jsp
2 H9 A+ H* P) t1 T' fi. 根据日志持久化对象获取并展示被修改的日志信息
$ Q6 [2 d# {5 {2 h, b0 m( ?) Kc) 开发修改日志Action:MessageUpdateAction.java/ MessageUpdateAction校验文件6 K* \( V% Y# q7 ~8 Y
i. 根据ID得到Message对象
' G+ j( l9 G, X' a7 `: y0 ]8 bii. 更新数据
$ y/ s: r, f9 g4 Z* C0 liii. 返回博客管理主页面' P( }: }2 h4 ~ v2 d
4. 删除日志业务流程
) ?! q- K9 J& B; va) 开发删除日志Action:MessageDeleteAction.java4 i& n& u- \: Q; U
i. 获取当前用户ID
`+ r5 } a" r5 t, Vii. 根据用户ID和日志ID删除日志
9 Y: T+ ]- h9 Y6 T1 S; Oiii. 添加提示信息
% Y. w+ [* T; O9 t6 L" giv. 返回博客管理主页面) h1 j. ~5 b! X7 F3 v
5. 删除评论业务流程
Y) _5 g4 {5 D8 T s2 Ia) 删除评论Action:ReplyDeleteAction.java. \8 f& E4 f+ }6 W6 t4 I# `
i. 获取当前用户ID0 L7 S# H7 Y w
ii. 根据用户ID和评论ID删除日志
4 ]! J9 [7 G: K# X) u' p2 _! e- {0 ciii. 添加提示信息* d Y2 u3 w4 [, B, C. V
iv. 返回博客管理主页面" c" |( ~2 ^; O9 O, p) i0 r
C. 博客访问模块1 w0 @" P! H. N
1. 博客浏览业务流程& H; u# v7 s: I, o$ v M
a) 开发博客浏览Action:BlogAction.java5 h8 S/ {. y2 M) w2 r W8 f7 u
i. 根据用户名获取持久化User对象
" m- |2 A. v8 ~$ p* s- o7 Uii. 返回博客浏览主页面2 k9 V& g+ D+ {; p, d! \0 o
b) 开发博客浏览主页面:blog.jsp
0 B( K3 q* H: D M1 f% gi. 根据用户持久化对象User获取用户日志迭代输出
' v) c% H1 u# t* ?4 k0 f4 uii. 根据每条日志对象获取日志评论迭代输出& J V4 i/ a5 v! n
2. 发表评论业务流程) X; }; x" t6 x. o: b: X* v
a) 开发配置跳转Action:replyAddInput.action
B1 c, f: r' J( u4 Ji. 根据日志ID获取被评论的日志对象message9 p6 r5 A& L$ T
ii. 返回添加日志评论页面
* r& M" e$ D, q2 lb) 开发添加评论页面:reply.jsp7 R6 j1 f: _" z+ X+ B! m
i. 显示持久化的message信息(且使用隐藏表单域保存Message信息)
2 q9 v0 H9 S/ B' pii. 显示评论的表单4 g+ l- J, }' I4 g
c) 开发添加评论Action:ReplyAddAction.java/ ReplyAddAction验证文件
; h( Z: t3 c, z2 z7 gi. 获取并保持评论信息
4 @/ u2 \, l+ R9 Iii. 评论失败:返回添加评论页面reply.jsp(所以Action中应该保存被评论的日志信息)5 {( a1 f8 a+ w1 G: _, p( f
iii. 评论成功:返回博客浏览主页面:blog.jsp
! M) I: w# ^* Y9 q
. G" E4 n# | Z" u基于Struts +Hibernate开发的博客管理系统源代码- q5 g7 `, P& o
( ~$ E) E* _1 B) p& D* z
' T$ I' w" @ [& r8 \1 @) X解压码:
2 S, l" |, | ]/ F& T8 d" v# J) d% l- |
5 O: w9 N& j- L9 m7 g: o7 A$ m
1 k# p, E9 ?7 r7 v% f! X |
本帖被以下淘专辑推荐:
- · 项目源码|主题: 28, 订阅: 64
- · 网站|主题: 1, 订阅: 0
|