该用户从未签到
|
一、 分析需求 |) I6 D6 c3 _) i! B( H/ M
1. 用户注册:任何访问者都可以注册为博客管理系统的合法用户. g, X) L W; a1 Z+ Z
2. 用户登陆:登录的用户具有浏览日志,发表日志,修改日志,删除日志,删除日志评论的功能
. O) q# j5 _3 w9 R3. 浏览日志:登录后的用户可以浏览自己的网络日志和评论
. z! _' z: w: P8 m% Z. U8 K4. 发表日志:登录后的用户可以发表自己的网络日志
% J5 d1 Y% W& U' ~" S5. 修改日志:登录后的用户可以修改自己的网络日志4 C4 v$ }& E2 S5 C2 D
6. 删除日志:登录后的用户可以删除自己的网络日志6 ]/ W6 m1 M0 M+ @) X: p+ K9 E0 m
7. 删除评论:登录后的用户可以删除针对本人的网络日志的评论) u! I1 ^ y. x% Y' m2 Y0 U
8. 博客浏览:任何访问者都可以浏览特定用户博客中的日志(按照博客用户的用户名浏览此用户). `8 `* s9 M, m; V9 o. j; m+ h2 f
9. 发布评论:任何访问者都可以针对别人的网络日志发表评论
- a7 ^3 e; R; U' \2 _8 N9 q2 S! f( `; y) V' F
0 [4 i' e1 [3 `* [
二、 分析建模
) u0 E; b+ w; K' E1 T1. 实体建模. f: _" T/ _3 G9 R0 [8 z4 E
2. 关系模型
* `1 U7 K, { [ i0 e& ^3. 构建域模型User/Message/Reply6 x$ Y8 a$ a% g: H7 u, D9 O1 X5 c: g
- ~: u% u+ i1 M! g4 a& Z. Q
4 z" K% N" A z+ B三、 项目初始化
0 L) ]) q1 s' ?- z, ^1. 添加struts支持
x- g7 `9 r7 l5 a0 ]* \+ s: K2. 添加hibernate支持- e' m; C' m3 |; u: B6 S
3. 添加log4j/dom4j/common-lang.jar/mysql相关类库
7 h+ J2 {9 x4 P x- D( N' T4. 定义系统异常类
! g$ A- b: n8 a5 z5 N; |. {* G2 iA. BlogException.java! U3 q2 a3 S( Z+ O: U% D( ?- U4 E8 q
B. BlogDAOException.java" @3 ?5 v+ L" Y+ a, r
& V! f% G' n! |9 ^7 r; d* D, v. M7 d ]: f
四、 实现域模型(实体关系建模)
5 h( ~1 }5 W7 y; V; r1. Java实现域模型
* S3 V0 P: ], t% t使用Java语言描述于模型:BaseModel.java/User.java/Message.java/Reply.java9 I& u! w2 F6 z) k1 z9 K8 }
2. 数据库实现域模型
3 E! {( S M3 j使用数据库语言描述域模型:userinfo表/message表/reply表9 J1 O4 k" j4 ~8 E8 w
3. 定义映射文件' M. K: A W z$ q7 A0 u0 H1 t
7 y- Y7 b7 I# y8 n
7 ~1 P: n( f: O$ s7 l五、 基于Hibernate实现DAO
/ v$ i5 A& t3 N1. HibernateUtil工具类:简化Hibernate操作
3 W6 \0 z- v( S2. HibernateFilter过滤器:事务处理9 Q \! v) h! V* c3 r) s
3. HibernateDao基础Dao:简化DAO操作
* @* X7 e, }- b' m4. 实现DAO
: i; C q2 i; G Z+ F' c n& E9 [六、 基于dom4j实现DAO与表现层层解耦
& A6 R9 ~! |% `" `% g
, `$ _/ r$ s( w: c$ \7 V. ~# N
( P7 |! f5 A8 a- @4 y& ^6 T0 ?七、 DAO单元测试1 W1 `' z. n$ |! k" G9 O0 A4 [1 B
& P* o7 k b# p0 |: Y0 l
( l& t. r7 }7 a+ K! e) R! \9 D7 k3 R八、 基于Struts实现表现层
5 K9 O) U: o( n$ U% z# e* W3 IA. 用户管理模块
* |+ J2 V6 g' C# E1. 用户注册业务流程, d8 v4 Q4 |, l1 S
a) 配置注册页面跳转Action:registerInput.action9 \! C. ~0 X% d& u, e1 m5 N
b) 开发注册页面:register.jsp% Y6 r. @# e. H
c) 开发注册Action:RegisterAction.java/ RegisterAction校验文件
, }9 m7 ]2 o. E& `% `" bi. 获取并保存用户注册信息
/ L0 Q* I% j/ `ii. 注册失败:添加注册失败提示信息;返回注册页面:register.jsp* q" Y$ ]0 P5 C; p: P9 D$ K
iii. 注册成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp
2 [/ e1 W+ A0 `2 U2. 用户登陆业务流程
7 ?3 M; r7 a. B1 D* M# }" U" Va) 开发登录页面:login.jsp* k+ R) p- Z6 Y- z* y2 s- S
b) 开发登录Action:LoginAction.java/ LoginAction校验文件2 V) V8 V% \8 h) g9 W2 O
i. 根据用户名查询用户信息
/ h- W1 C0 j7 v( P+ fii. 如果用户不存在或者密码不匹配则登录失败,否则登录成功
7 a- I/ B# N; {4 R' x0 y5 v5 Oiii. 登录失败:添加登录失败信息;返回登录页面:login.jsp% f V5 a5 U, b" [7 D
iv. 登录成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp; J. v6 W1 g# A7 i9 B0 V; @% \
B. 博客管理模块
7 l1 n& K5 B# f+ e$ D( K% m1. 浏览日志业务流程5 r, x: D: ^) }: H4 Q T7 Q6 R( a
a) 开发浏览日志Action:HomePageAction.java
6 @( w" \+ T( N5 f# ]) ]0 r# @* T. _i. 得到当前登陆用户的信息$ e+ F1 [4 a# E" L
ii. 根据登录用户信息得到User持久化对象& H( y, c3 W$ G7 v, [
iii. 返回到博客管理主页面' j5 p5 O! N9 o$ o
b) 开发博客管理主页面:homepage.jsp) F K) } ?9 H
i. 根据用户持久化对象获取用户日志迭代输出
" F" q5 v e/ D4 }ii. 根据每条日志对象获取日志评论迭代输出) e3 g( r1 k* d- @' x" s* q3 A
2. 发表日志业务流程
, m* d/ p# H6 ya) 配置发表日志跳转Action:messageAddInput.action
; s+ ^# [# A: {& Yb) 开发发表日志页面:message_add.jsp T2 G5 m1 H0 E! `: j
c) 开发发表日志Action:MessageAdd.java/ MessageAdd校验文件
! Z% Q1 V6 y0 C7 D! li. 保存日志信息
$ I# j5 C8 P u- R8 G4 S/ Bii. 设置提示信息 t; L0 e0 z* y; ?7 V/ t" t: O& Z0 V
iii. 返回到博客管理主页面
6 _ h6 d3 }7 l! `) K: n& V3. 修改日志业务流程$ B( V' I0 k$ ]' o4 T
a) 开发修改日志跳转Action:MessageUpdateInputAction.java
9 N7 x% ~) L2 v* b2 m4 F% A# W8 M: Zi. 根据日志ID获取日志对象- ^9 D$ F8 x5 `# I3 o9 {0 B5 I# l
ii. 返回修改日志页面message_update.jsp- w; b2 C" M" b
b) 开发修改日志页面:message_update.jsp% u: k1 H( Q0 i) m. i) q
i. 根据日志持久化对象获取并展示被修改的日志信息
5 ^- a9 k1 z; W* l6 }2 y& F# T1 uc) 开发修改日志Action:MessageUpdateAction.java/ MessageUpdateAction校验文件, G2 t5 u# S* {4 c
i. 根据ID得到Message对象' T: E7 g6 n; p1 s, A# n
ii. 更新数据
; h* a' K E2 b6 u' J4 R& V$ fiii. 返回博客管理主页面( i4 v: g. v6 m: D/ ~
4. 删除日志业务流程
" r' U& \6 P% \6 H! }4 la) 开发删除日志Action:MessageDeleteAction.java# W" f/ ]6 n4 s n0 z3 ^
i. 获取当前用户ID
5 g4 b9 i( v! w& kii. 根据用户ID和日志ID删除日志
' ~; C r' b* x9 n4 {iii. 添加提示信息/ K1 D( c/ u, a+ W0 ?2 ]! T
iv. 返回博客管理主页面* s$ {/ i. q# i& [
5. 删除评论业务流程: j: n& } D0 _: @3 S
a) 删除评论Action:ReplyDeleteAction.java
+ _/ n5 C- x# V2 D6 h9 k# xi. 获取当前用户ID7 d( @1 ~: D( z U1 u
ii. 根据用户ID和评论ID删除日志9 e1 I( U% e# o( a: \! q
iii. 添加提示信息0 U0 p: U- w& M# j& r# `+ T
iv. 返回博客管理主页面0 M6 n$ B7 ?) O! M; r# a* e
C. 博客访问模块& b9 g3 M+ B, K1 l
1. 博客浏览业务流程; U! C3 F; b; T" [5 ?; s
a) 开发博客浏览Action:BlogAction.java. Y) J9 D, f; q# s
i. 根据用户名获取持久化User对象
t+ t: e# P4 j/ J5 `& B+ n3 Mii. 返回博客浏览主页面& W8 y, p& V% B% [/ R' ^1 E
b) 开发博客浏览主页面:blog.jsp5 @0 ?$ r1 M3 m9 @) f
i. 根据用户持久化对象User获取用户日志迭代输出
) a/ k. [4 H: ^. A9 M+ T# bii. 根据每条日志对象获取日志评论迭代输出
& _) C% Q' p m2. 发表评论业务流程4 d& s* p( f' K; B X2 f
a) 开发配置跳转Action:replyAddInput.action: U' `0 D6 ?) y7 Q
i. 根据日志ID获取被评论的日志对象message0 G+ P; k/ w) E0 z" n
ii. 返回添加日志评论页面
4 }1 `- i) g# \b) 开发添加评论页面:reply.jsp
! p# y: q3 M/ Ri. 显示持久化的message信息(且使用隐藏表单域保存Message信息)
( A: L& ]2 E6 i! F" K6 R$ g+ Jii. 显示评论的表单
5 t. w4 r( `; j! H, ~c) 开发添加评论Action:ReplyAddAction.java/ ReplyAddAction验证文件
+ N! g3 E6 I) W$ C& ei. 获取并保持评论信息
1 ]1 t3 t$ F- n- A9 C: |* ?ii. 评论失败:返回添加评论页面reply.jsp(所以Action中应该保存被评论的日志信息)
* U* V' L# e- v7 M" jiii. 评论成功:返回博客浏览主页面:blog.jsp
3 b4 O" |3 ^9 {& z4 e0 @& u1 x5 S+ C# L; E! h
基于Struts +Hibernate开发的博客管理系统源代码
) I! d$ D% q }) R7 p
: r' i- B# j0 P8 u6 Q, x* y4 A( H
解压码:( P6 ?$ z6 \- X b; J7 D' O2 V- D
) Q0 t* f; O+ H8 y. m
; i' I. w, Y+ i# x' `! n4 W: c6 U* G5 @: ?
|
本帖被以下淘专辑推荐:
- · 项目源码|主题: 28, 订阅: 64
- · 网站|主题: 1, 订阅: 0
|