该用户从未签到
|
一、 分析需求 J9 i6 Q X X' `- b9 @# s
1. 用户注册:任何访问者都可以注册为博客管理系统的合法用户) ]5 y% c+ e F; r+ z, k3 z! Y# l
2. 用户登陆:登录的用户具有浏览日志,发表日志,修改日志,删除日志,删除日志评论的功能' c& Q3 o( z8 l) a4 @( g
3. 浏览日志:登录后的用户可以浏览自己的网络日志和评论
' Z) T( L& x9 c; f8 h# D4. 发表日志:登录后的用户可以发表自己的网络日志% d2 l3 y% o5 P8 h O
5. 修改日志:登录后的用户可以修改自己的网络日志8 F$ w7 S& U: ^8 C0 j
6. 删除日志:登录后的用户可以删除自己的网络日志
* X& E F8 O. F* Z7. 删除评论:登录后的用户可以删除针对本人的网络日志的评论' `; I v S' D& F. S, ?1 j/ y
8. 博客浏览:任何访问者都可以浏览特定用户博客中的日志(按照博客用户的用户名浏览此用户)
/ r% A, T' I, ]! H$ {2 L9. 发布评论:任何访问者都可以针对别人的网络日志发表评论- y0 W6 M+ M+ x+ i
m$ Y9 Z3 a7 j& j0 ?+ J: f% y
# B/ F8 l0 m" r1 k7 F3 b二、 分析建模. t' Q: l. V8 R4 N: A
1. 实体建模
" d* n( {+ m, K7 y2. 关系模型6 p* y$ ?9 O: l8 _! X6 ]
3. 构建域模型User/Message/Reply
8 {0 s, p2 G# ^2 a, i
- G9 r# j( ?0 ]2 d/ B: D
! k: Z8 K! O# j: ?三、 项目初始化# [3 J) v2 q8 w7 i6 x
1. 添加struts支持4 F8 ]9 V4 ?" a P4 m) l6 [8 t2 Q
2. 添加hibernate支持" G4 y" }5 w; F! _. T: F% L0 v& q
3. 添加log4j/dom4j/common-lang.jar/mysql相关类库
* q' s1 w7 O4 [0 }& K" o/ C: n4. 定义系统异常类
/ _3 q3 j- F m0 p' B1 UA. BlogException.java
* O) E: I1 Z' N& E! S" vB. BlogDAOException.java
# r5 Z: e, Q4 g3 w/ C3 l& g- O3 x. k. s. w9 q# s
3 o j' ^/ V; ]0 x& X四、 实现域模型(实体关系建模); s& r+ ] i2 C! Z6 D7 X5 |
1. Java实现域模型" `+ N, {+ p) O
使用Java语言描述于模型:BaseModel.java/User.java/Message.java/Reply.java
, I# J) g( D% {2. 数据库实现域模型& y2 d s7 N4 j/ m" M+ T
使用数据库语言描述域模型:userinfo表/message表/reply表! h4 a. V! G! p; a* b) ~
3. 定义映射文件
8 o+ M# F( r( S1 ]
6 [. \+ O n) Q, C- ~- p Z# {+ ~
- M9 {9 A3 {8 p- d! W2 w五、 基于Hibernate实现DAO
. u/ @3 G+ i4 a1. HibernateUtil工具类:简化Hibernate操作
- r* D6 n5 t- M% X2. HibernateFilter过滤器:事务处理
; `) b9 w: u( J3. HibernateDao基础Dao:简化DAO操作2 f) S. y! { m. {1 o# J" `$ e
4. 实现DAO& g+ Z. S5 h$ G
六、 基于dom4j实现DAO与表现层层解耦5 [' T! X$ e1 }. h" P* |8 T! {. `
/ f: M& d* F8 I- w
' j) N, T, s$ D# e F0 M0 @七、 DAO单元测试
5 q+ C8 Y" L+ W9 U5 u* {! |% }, y/ M6 T( G( y' H. p. O$ r
! G' F. g% z+ g5 m' M) n' G7 f/ ?八、 基于Struts实现表现层
, ~ E* G4 M& H4 k2 I$ s" vA. 用户管理模块
# b8 B. M; V1 |& G4 _( R: B1. 用户注册业务流程
3 F3 I! W, h) la) 配置注册页面跳转Action:registerInput.action7 L: F8 x! F( O/ Y! @
b) 开发注册页面:register.jsp
5 E/ I5 j- T; [7 o. Rc) 开发注册Action:RegisterAction.java/ RegisterAction校验文件- z. j: k- D% x7 A
i. 获取并保存用户注册信息
) m3 \, |( ^# l9 f+ i6 |3 Mii. 注册失败:添加注册失败提示信息;返回注册页面:register.jsp
0 p& T- a @" h Y5 v9 m4 ziii. 注册成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp
+ ]$ m9 q1 ^, D3 ~% {5 z2. 用户登陆业务流程, C4 |- d- P& T/ |# k, ]; g6 Z1 l
a) 开发登录页面:login.jsp
8 e3 N6 X. B: O# {b) 开发登录Action:LoginAction.java/ LoginAction校验文件$ z. k9 ~) H' H5 W4 x! q) x6 V
i. 根据用户名查询用户信息: h/ ~2 K7 j# m6 g, q, n7 m
ii. 如果用户不存在或者密码不匹配则登录失败,否则登录成功
, s1 \6 j' E! c% U0 Liii. 登录失败:添加登录失败信息;返回登录页面:login.jsp
; J- D7 u! v* P& g& L" H: biv. 登录成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp R( s, ]) r+ y; {
B. 博客管理模块
$ a" h# ~$ W3 _1. 浏览日志业务流程
2 G9 ?$ d1 c; t. A( r# ~3 r- Ma) 开发浏览日志Action:HomePageAction.java' u/ \* t8 h' ]7 M
i. 得到当前登陆用户的信息+ \) c1 |" m+ }* k& X+ \4 O
ii. 根据登录用户信息得到User持久化对象
% h8 | Q2 b: D: tiii. 返回到博客管理主页面
$ i4 j3 A Y( J0 Z! Db) 开发博客管理主页面:homepage.jsp) f9 f5 ^; [8 B
i. 根据用户持久化对象获取用户日志迭代输出
+ H% j `0 [5 i p9 aii. 根据每条日志对象获取日志评论迭代输出
. m3 h6 x+ [7 Y- F2. 发表日志业务流程
% b+ Q+ H4 i4 {/ [4 W' F# r$ d2 qa) 配置发表日志跳转Action:messageAddInput.action1 Q M5 o5 L7 f9 M/ M: U
b) 开发发表日志页面:message_add.jsp
8 i8 C* z& @" B0 |. {7 uc) 开发发表日志Action:MessageAdd.java/ MessageAdd校验文件
; Z1 Z2 i! c. Ui. 保存日志信息
. V( B# x: v8 Xii. 设置提示信息 d7 S. G% v, @& B
iii. 返回到博客管理主页面0 S0 [/ X9 P( M9 C( d" V) e
3. 修改日志业务流程/ s& P: o* A: m: R% x
a) 开发修改日志跳转Action:MessageUpdateInputAction.java# }$ n4 Q* ?% z0 Z+ B/ {
i. 根据日志ID获取日志对象$ D7 W0 M8 W& b, {
ii. 返回修改日志页面message_update.jsp
) y% C% _& p1 l7 M* Ib) 开发修改日志页面:message_update.jsp. A1 i2 r7 e3 Y
i. 根据日志持久化对象获取并展示被修改的日志信息' H4 X0 y( g, l. ]3 g3 z
c) 开发修改日志Action:MessageUpdateAction.java/ MessageUpdateAction校验文件+ b# F9 p+ v! {
i. 根据ID得到Message对象: S1 X3 M+ q% l/ _
ii. 更新数据- A* u1 a3 V0 j- ^# O2 P
iii. 返回博客管理主页面
' E/ g0 \7 i- s: c* Z: ^) R4. 删除日志业务流程6 A3 N1 a: ?5 f8 Z
a) 开发删除日志Action:MessageDeleteAction.java
/ z" ?/ l5 u2 l( o, }& B( Ji. 获取当前用户ID
2 E" C- C) v; v0 ~- O' n; X4 `ii. 根据用户ID和日志ID删除日志
/ D* m1 Y' r, S0 h6 ^* tiii. 添加提示信息
. w* K. s: X ^5 v( }+ X' qiv. 返回博客管理主页面. ]2 k3 B7 v* U/ U) \( {2 M
5. 删除评论业务流程4 Q; D u% G% n$ w3 ` w
a) 删除评论Action:ReplyDeleteAction.java$ g2 q b0 U* P( i0 v& C2 j
i. 获取当前用户ID
( n! X' S! w9 y; }- j) G8 z0 ]0 Dii. 根据用户ID和评论ID删除日志' T+ y' y5 c6 v3 t* }. m1 C
iii. 添加提示信息
* J; R6 E) d, X) ~% t$ _( L. ^( giv. 返回博客管理主页面5 ?% L _: l" f3 L: e# n
C. 博客访问模块
: l6 M( Z. W1 c! b2 A: g$ x1. 博客浏览业务流程3 o1 s6 d c- P# \/ s4 r& r
a) 开发博客浏览Action:BlogAction.java
q8 ^5 L* u( ~5 |i. 根据用户名获取持久化User对象6 ]: g, I# N; I- u( @: y: z
ii. 返回博客浏览主页面5 R; ?" P$ P" A, _2 W
b) 开发博客浏览主页面:blog.jsp% r; a$ R2 s# o" W) L+ O0 C
i. 根据用户持久化对象User获取用户日志迭代输出
6 n: x: G& D9 r2 }' gii. 根据每条日志对象获取日志评论迭代输出& a: h% L% }, a1 y: W8 j
2. 发表评论业务流程
, g4 G/ u; v, \ f1 j4 l9 ca) 开发配置跳转Action:replyAddInput.action, h( v0 |& D7 P6 i+ |4 {1 f# U
i. 根据日志ID获取被评论的日志对象message
, I8 |% I& W5 X, `! ]. q( Jii. 返回添加日志评论页面 n3 x8 m# p% ]' y9 p8 V
b) 开发添加评论页面:reply.jsp. e h- w. l w& ^9 s
i. 显示持久化的message信息(且使用隐藏表单域保存Message信息)0 B& Q6 {% n3 K n
ii. 显示评论的表单
. ^/ ~; B: ]) G$ R! Kc) 开发添加评论Action:ReplyAddAction.java/ ReplyAddAction验证文件
- g5 Z; v4 s7 u: U1 gi. 获取并保持评论信息7 X5 N, G0 N6 l% }
ii. 评论失败:返回添加评论页面reply.jsp(所以Action中应该保存被评论的日志信息): w+ ^ h7 Y4 k: @- \% I
iii. 评论成功:返回博客浏览主页面:blog.jsp; H& Z! z' s8 U% Y; n: ]
/ Z4 I6 o5 Q: W, \" l2 J: O基于Struts +Hibernate开发的博客管理系统源代码
/ D* W( Z2 J; W2 p3 o2 T2 z/ S: ^5 i
$ n0 \* v: ~1 x3 s# u解压码:& v8 a# n4 A h G }3 k
% T! S6 W; g/ G! J. U2 `" r5 \& ^
3 a! |4 a8 }% M T
# @$ M! @5 n- X: r, x |
本帖被以下淘专辑推荐:
- · 项目源码|主题: 28, 订阅: 64
- · 网站|主题: 1, 订阅: 0
|