该用户从未签到
|
一、 分析需求
7 @! r3 S+ o- y& r% Y. l0 R& `1. 用户注册:任何访问者都可以注册为博客管理系统的合法用户2 I1 k2 k" I3 x3 d! }4 l8 U3 L
2. 用户登陆:登录的用户具有浏览日志,发表日志,修改日志,删除日志,删除日志评论的功能
@4 O. }; @6 X$ C/ j* U( w4 p: u3. 浏览日志:登录后的用户可以浏览自己的网络日志和评论# k/ ?) K v& j. ^& D% R
4. 发表日志:登录后的用户可以发表自己的网络日志# [2 `# ^6 m+ H' @
5. 修改日志:登录后的用户可以修改自己的网络日志
# f- K! p# U2 e6 t% {. K1 r6. 删除日志:登录后的用户可以删除自己的网络日志: f! o ~1 o1 d. _
7. 删除评论:登录后的用户可以删除针对本人的网络日志的评论$ b/ H3 e/ V' u6 C
8. 博客浏览:任何访问者都可以浏览特定用户博客中的日志(按照博客用户的用户名浏览此用户)
* [9 N `, f* _ e) x* B0 S9. 发布评论:任何访问者都可以针对别人的网络日志发表评论6 p% q% N5 \ Z& o' j
L- S! [6 O! ?5 T
' m' Q% f( I9 x二、 分析建模
8 `' Y$ Z$ t, V' I1 g' s1. 实体建模
! x8 U0 I; X" w' \# `2. 关系模型
% F" L- c# m6 j' ?4 a) f% n2 C8 c3. 构建域模型User/Message/Reply; n w3 T' h# Z }( j# {, e
) p0 x8 D# f& n% R; a7 u$ O8 E4 J$ t7 B& y3 s
三、 项目初始化! }$ h3 e' u$ C. z3 U& }, r- z8 A
1. 添加struts支持
: |$ R& d* e* J8 `2. 添加hibernate支持3 k4 B. D9 c' W- E3 ^& s1 q- g, ?
3. 添加log4j/dom4j/common-lang.jar/mysql相关类库3 y5 M( k, k3 F1 m! Q
4. 定义系统异常类
) x6 c5 K+ d7 k4 {0 nA. BlogException.java
# h+ n- ~$ }( q5 K! yB. BlogDAOException.java
' ~% e% M* j1 g; F, ?4 R. b3 v. A+ r9 ]6 C7 u
# |- C; g7 p* z0 X
四、 实现域模型(实体关系建模)& g$ Y" V( U) K. {4 T$ _
1. Java实现域模型% Y+ o$ F# [8 a$ a' C
使用Java语言描述于模型:BaseModel.java/User.java/Message.java/Reply.java
& {) l- M+ j) D1 T2. 数据库实现域模型1 F- t1 h2 I" ?# T$ m6 P
使用数据库语言描述域模型:userinfo表/message表/reply表# ]. I- F3 X+ m4 d) \
3. 定义映射文件
1 E$ s3 W/ C; a. @: z6 i, ^) R3 s1 y
& n1 y2 b6 N$ u: \; s7 D, j/ s5 B3 `8 l1 e$ x; \# w
五、 基于Hibernate实现DAO
7 [, g' j) ^( M6 B1. HibernateUtil工具类:简化Hibernate操作. X" T2 _0 h! @. r7 u9 G8 T' ?
2. HibernateFilter过滤器:事务处理! T* A8 y0 F/ D: t
3. HibernateDao基础Dao:简化DAO操作
9 M3 @# R8 X- `6 M! l4. 实现DAO. a& n7 z! w( p. ]; _
六、 基于dom4j实现DAO与表现层层解耦
: A6 x* @1 q) R1 }3 [# y, y. T0 l( B# F7 [) S2 q, e/ @
0 d0 B' a) w, {" `4 x$ P) g七、 DAO单元测试. T0 @! M7 c( J0 F1 L" m% l! m$ e1 a
. J4 b5 @; R, |$ R6 e2 \, }
. }8 H) p8 [6 I/ z. n0 d# @2 J ~八、 基于Struts实现表现层- T5 A! h# @- D0 X5 t
A. 用户管理模块
- Z7 g" ^' E; G& P9 V) j/ r; g1. 用户注册业务流程
+ g. g/ J; ?# L( [; Pa) 配置注册页面跳转Action:registerInput.action
9 x& g( b2 Y3 c: e# i- Pb) 开发注册页面:register.jsp
5 `; R5 T# S" ~1 S5 Rc) 开发注册Action:RegisterAction.java/ RegisterAction校验文件
( s! s9 ~8 `) b% m# ti. 获取并保存用户注册信息
- V$ I" S! Q6 bii. 注册失败:添加注册失败提示信息;返回注册页面:register.jsp
/ E+ F, |" p1 ~5 a; Uiii. 注册成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp
7 t% f+ x7 O+ Y6 @) j! M2. 用户登陆业务流程. x, K8 M7 \& ?, N
a) 开发登录页面:login.jsp( W: u0 v" t# z$ v0 ^1 X5 E
b) 开发登录Action:LoginAction.java/ LoginAction校验文件
" c8 V% \* C% u# g) a, ri. 根据用户名查询用户信息7 K$ L& L, T9 ~7 _& a
ii. 如果用户不存在或者密码不匹配则登录失败,否则登录成功
7 Q5 |# V) g( u* G4 h& y4 \iii. 登录失败:添加登录失败信息;返回登录页面:login.jsp {* p/ a6 l8 Q0 M: o4 A
iv. 登录成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp" m% D9 e& w8 T
B. 博客管理模块
- h) C3 ?# W9 @7 S1. 浏览日志业务流程4 t, l1 ?6 H" g v" L) q+ J" i
a) 开发浏览日志Action:HomePageAction.java
' I3 n* Z l* h4 w; E" Zi. 得到当前登陆用户的信息2 Z/ p3 E* `4 G0 C$ @4 C# B
ii. 根据登录用户信息得到User持久化对象
5 n+ D6 L& H7 F: a4 [0 Yiii. 返回到博客管理主页面# A( G8 d, A f0 U; B. y' n
b) 开发博客管理主页面:homepage.jsp: V2 F& J, I; Z6 e- i- ]
i. 根据用户持久化对象获取用户日志迭代输出
7 i, A3 `; v& A3 iii. 根据每条日志对象获取日志评论迭代输出
0 i6 m5 n# ]4 h# |1 e2. 发表日志业务流程5 H4 e$ M, a# G S6 k+ V
a) 配置发表日志跳转Action:messageAddInput.action% [3 f3 C, ?( D: D6 G) F1 J
b) 开发发表日志页面:message_add.jsp; t, v8 Q$ C+ R6 @- C" j& t
c) 开发发表日志Action:MessageAdd.java/ MessageAdd校验文件4 f* W% b2 |" l5 V
i. 保存日志信息4 f. {/ j' k1 u# \) p
ii. 设置提示信息
0 N5 y) I* q6 k4 c, @iii. 返回到博客管理主页面/ x5 z- y$ ^' y$ c: f* r2 a
3. 修改日志业务流程
& ?( E" o! H+ W. m& _* wa) 开发修改日志跳转Action:MessageUpdateInputAction.java% U; s- p7 ?9 u z2 O. f9 [
i. 根据日志ID获取日志对象
9 S# _. T3 u3 @* B+ Kii. 返回修改日志页面message_update.jsp
% q! u( E5 D7 p$ D8 ?b) 开发修改日志页面:message_update.jsp
# @4 D4 [' o( G& e$ g7 K; li. 根据日志持久化对象获取并展示被修改的日志信息: P8 |* B0 l- {" R, s# n
c) 开发修改日志Action:MessageUpdateAction.java/ MessageUpdateAction校验文件
% r' w& \) [9 M8 r9 X6 F; ^" bi. 根据ID得到Message对象. f: @& S8 q& Z( x* q) n9 i
ii. 更新数据7 A5 q, a; q8 O) X
iii. 返回博客管理主页面
3 D; L6 a/ ?+ q. r0 S4. 删除日志业务流程' |# V" } i( C# @4 Y
a) 开发删除日志Action:MessageDeleteAction.java( P3 u+ y8 z% | n; K+ Q
i. 获取当前用户ID9 B- ]5 H8 C/ ^' q& s* d
ii. 根据用户ID和日志ID删除日志. d& M% d, P; O- O
iii. 添加提示信息
3 R. w; x9 o3 t% T6 ?iv. 返回博客管理主页面
7 J5 S; h" L( i2 p* A5. 删除评论业务流程
2 n2 b2 R& [% H; h' W0 z0 ua) 删除评论Action:ReplyDeleteAction.java
' Y5 ?. t" }4 ?- G5 k/ ti. 获取当前用户ID
- B5 P% ~, _. Q w3 Q% C; lii. 根据用户ID和评论ID删除日志
, P0 p4 ]: j$ tiii. 添加提示信息
& o& M; i0 [' `. o' X8 biv. 返回博客管理主页面
. K d* p' ^& i# ]* d. j1 n8 [) Q; \C. 博客访问模块3 c4 A* |% p( N: Z% k! S4 R) ]
1. 博客浏览业务流程9 a S: d# k# C# a8 Z* z
a) 开发博客浏览Action:BlogAction.java; s/ U0 ?0 \; H& _: r; B3 }
i. 根据用户名获取持久化User对象
- L3 S% b& g/ E% W; yii. 返回博客浏览主页面
4 n2 p( g; V# A7 Rb) 开发博客浏览主页面:blog.jsp
/ t/ S0 L* [, R gi. 根据用户持久化对象User获取用户日志迭代输出
& O+ C( w: Y0 t; ?9 h/ g5 t1 V9 Tii. 根据每条日志对象获取日志评论迭代输出
9 b) [& y8 D5 I9 @) d% x' M6 g5 ^2. 发表评论业务流程
2 ~6 Y( E9 A. V, a: ka) 开发配置跳转Action:replyAddInput.action
( ~8 \8 L) d. _1 r; s0 Wi. 根据日志ID获取被评论的日志对象message
& c4 G3 P" [6 Fii. 返回添加日志评论页面
U/ b3 q' ~5 N) b1 lb) 开发添加评论页面:reply.jsp" R; X3 V, p$ R$ d! s
i. 显示持久化的message信息(且使用隐藏表单域保存Message信息)0 Z u* Q$ W9 O: Y) H
ii. 显示评论的表单
" X4 W# @7 @2 ?$ K S! Q, q b9 ?c) 开发添加评论Action:ReplyAddAction.java/ ReplyAddAction验证文件
8 @; v% D( }0 G5 di. 获取并保持评论信息
3 M1 W- `( [- }2 Jii. 评论失败:返回添加评论页面reply.jsp(所以Action中应该保存被评论的日志信息)) i6 s9 p, h; V
iii. 评论成功:返回博客浏览主页面:blog.jsp( [# N- U* P3 _
/ c& N+ Y/ |1 k* ^基于Struts +Hibernate开发的博客管理系统源代码
2 |: V; U3 \% Y, y2 [- i5 Y* B
T& }' U: V I
$ g( {" X( J8 ~: `解压码:, w' v$ g& I' n/ ?
1 ]+ B p# K% g& i" c, }- x+ u
4 k+ |0 x* Y5 l( e+ `' l# t3 C- n8 N0 \7 O; f* _4 W' ~0 u2 U
|
本帖被以下淘专辑推荐:
- · 项目源码|主题: 28, 订阅: 64
- · 网站|主题: 1, 订阅: 0
|