该用户从未签到
|
一、 分析需求' y: B8 _/ H/ c7 \% Y+ @, ]! ]
1. 用户注册:任何访问者都可以注册为博客管理系统的合法用户5 K! T3 g! Y3 T) g! N2 t+ J6 T) x
2. 用户登陆:登录的用户具有浏览日志,发表日志,修改日志,删除日志,删除日志评论的功能
& S! S0 y7 f! a, L9 ?& h3. 浏览日志:登录后的用户可以浏览自己的网络日志和评论; c" Q, v& y' ]( [& F+ j, {
4. 发表日志:登录后的用户可以发表自己的网络日志
1 ^# T- q" |" Q& C: X$ }5. 修改日志:登录后的用户可以修改自己的网络日志; p, F8 k6 y3 `; x9 X7 X
6. 删除日志:登录后的用户可以删除自己的网络日志0 d% j5 x0 V& ]; a5 H7 q& Y
7. 删除评论:登录后的用户可以删除针对本人的网络日志的评论/ ~9 }9 u& c. m- z& z3 { {: e- u2 H& N
8. 博客浏览:任何访问者都可以浏览特定用户博客中的日志(按照博客用户的用户名浏览此用户)5 J* N2 s: s# |7 X
9. 发布评论:任何访问者都可以针对别人的网络日志发表评论
. h# C$ _" g3 ?, T, M* r. F) {: C# C; x9 T6 Z m% T) @2 K
9 r- e1 a. y% p: ?二、 分析建模# e/ Q# Z1 U; w" L* [
1. 实体建模
4 m' F. A+ i+ r3 w2. 关系模型! i" i4 ~2 d4 V! N5 ~
3. 构建域模型User/Message/Reply! C1 W5 i6 s( v* H) i+ a
6 P: P3 W6 a& A$ ?9 Q0 `( K# f) ]5 u8 M
三、 项目初始化3 F o" A/ O, J+ Y8 l
1. 添加struts支持7 \ o( k7 _0 D2 H; [
2. 添加hibernate支持0 i7 d0 s) w6 N, A8 ~$ I; C
3. 添加log4j/dom4j/common-lang.jar/mysql相关类库
9 I# [, E& h" W9 p$ L3 T4. 定义系统异常类( I2 z, O9 [: r( c
A. BlogException.java9 u i+ D+ E3 S4 Y7 T0 T
B. BlogDAOException.java4 S3 H7 V4 b7 ^0 E5 R6 k2 A
& H: {4 M1 |: K: M+ D/ `
/ g1 d; ^5 U5 P9 M- x四、 实现域模型(实体关系建模)
9 U- g6 l/ i% C S/ q" Y' j1. Java实现域模型
8 p) j, X+ ~$ ~* k4 |使用Java语言描述于模型:BaseModel.java/User.java/Message.java/Reply.java
2 p6 Y5 H7 [' k4 d1 i2. 数据库实现域模型; ]& [% m4 l/ S
使用数据库语言描述域模型:userinfo表/message表/reply表& r. W6 e3 f8 t" E8 n
3. 定义映射文件+ l- r2 v7 ^/ d7 }. b: D" _
$ o5 v% O, ]9 ]+ Y8 p( t4 B( J3 o( g2 V% O/ i& j, k
五、 基于Hibernate实现DAO. ?* N) ~/ A1 n$ D! w1 h2 y( c2 \
1. HibernateUtil工具类:简化Hibernate操作
$ s) q3 D2 {4 n2. HibernateFilter过滤器:事务处理
0 f1 I( f+ Q+ Z4 y3. HibernateDao基础Dao:简化DAO操作, u$ @/ `) F( S7 J6 P2 g& w1 p
4. 实现DAO2 T4 \5 d' V6 i* Y5 W& l$ @$ r
六、 基于dom4j实现DAO与表现层层解耦1 J6 Y. k6 O/ `& p8 B( g* ~
$ K4 s: u8 j- W
% I ]1 z! F' P, J+ Y& B七、 DAO单元测试8 ^* O' x; B$ J& J& q
! Y7 }% c* G7 t: k6 o
8 r: I8 v! M* {2 f: ^+ }+ s
八、 基于Struts实现表现层7 j" p. u7 @9 r5 w3 d/ V- N
A. 用户管理模块
0 q( S) ~' p4 Q% W, e0 ]0 t: v0 t1. 用户注册业务流程
5 {9 e7 }: m1 g4 g1 Ta) 配置注册页面跳转Action:registerInput.action: _9 v: C5 O( d. `4 b) q9 H
b) 开发注册页面:register.jsp+ i* s& O% W1 {0 P, K
c) 开发注册Action:RegisterAction.java/ RegisterAction校验文件
3 ]4 q# Y& U7 t; p3 ]7 Oi. 获取并保存用户注册信息/ R- U H C' {$ l8 S6 T
ii. 注册失败:添加注册失败提示信息;返回注册页面:register.jsp
$ Q- E: h# H6 {/ f5 ]iii. 注册成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp. o- |3 Y0 M. H4 r5 T+ F+ q
2. 用户登陆业务流程- O0 Z1 s& c) P$ q7 L
a) 开发登录页面:login.jsp
5 t4 r/ D* U: L# F( Vb) 开发登录Action:LoginAction.java/ LoginAction校验文件
& I' X, G6 g1 \7 D; Y9 ~i. 根据用户名查询用户信息
7 Z- ^* N N3 C: ^# m0 G% vii. 如果用户不存在或者密码不匹配则登录失败,否则登录成功( ^- {2 Q7 a1 E1 p- _: o
iii. 登录失败:添加登录失败信息;返回登录页面:login.jsp
/ _1 ~8 \1 }1 b( g" yiv. 登录成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp- Y0 O9 P. Q. d" q: h) ?$ G" S
B. 博客管理模块( D h& M3 Z9 }# r$ q
1. 浏览日志业务流程0 w |& B0 j9 a, X
a) 开发浏览日志Action:HomePageAction.java
$ n) t7 e/ q" p7 ]2 [: @, Hi. 得到当前登陆用户的信息
# I. C2 V) V+ l& ~9 j" S+ }; cii. 根据登录用户信息得到User持久化对象, S( Q# Z" n8 q
iii. 返回到博客管理主页面
' P6 h+ j4 _' F5 ~9 o% _b) 开发博客管理主页面:homepage.jsp
* k( i2 o, j2 T0 v2 o) k3 ]i. 根据用户持久化对象获取用户日志迭代输出0 \ ~9 _9 |# [
ii. 根据每条日志对象获取日志评论迭代输出
, V, p8 m T8 ?- X" Y; G6 s2. 发表日志业务流程" ] u9 p) d- X3 b+ h& T! M$ L
a) 配置发表日志跳转Action:messageAddInput.action
# E- i; Y0 O8 b8 F; F7 z& ^b) 开发发表日志页面:message_add.jsp
/ d$ u+ o6 h- B- E+ L$ J5 Z; Nc) 开发发表日志Action:MessageAdd.java/ MessageAdd校验文件2 }6 A6 H; j$ x! U
i. 保存日志信息8 c3 | s; n5 o, x0 S4 Y; D4 s/ |$ y
ii. 设置提示信息% v% K9 g9 `7 t' L
iii. 返回到博客管理主页面! e) C) u) R6 I; a5 ~2 S1 K. \( E. M
3. 修改日志业务流程
; l3 V8 k6 V6 z' B2 Ma) 开发修改日志跳转Action:MessageUpdateInputAction.java: l( I# O5 w0 e/ q& z
i. 根据日志ID获取日志对象5 _" |1 F9 d8 ?6 _+ C* J
ii. 返回修改日志页面message_update.jsp
& { e) n6 ?4 b3 Z/ Vb) 开发修改日志页面:message_update.jsp
4 J4 _5 J3 W4 Gi. 根据日志持久化对象获取并展示被修改的日志信息
- l7 K2 [$ |* N$ P2 d& nc) 开发修改日志Action:MessageUpdateAction.java/ MessageUpdateAction校验文件
: q3 `9 h. ~3 x, h0 H4 ]2 T8 K; Pi. 根据ID得到Message对象8 |& N+ z5 m6 {% m5 o9 I( Q& p
ii. 更新数据
2 }' \3 G: ]5 p# Z% u4 yiii. 返回博客管理主页面( O+ _* \2 u9 D" M: Q
4. 删除日志业务流程
0 `: X$ Z9 G: P! M" n+ Za) 开发删除日志Action:MessageDeleteAction.java
4 B5 o9 m. C5 z }/ r n8 [! r/ K4 Ai. 获取当前用户ID- J* G5 R5 `* @; A
ii. 根据用户ID和日志ID删除日志
; y1 M/ o8 d- |! \' i1 Z1 s/ aiii. 添加提示信息8 }0 w/ _; D) o8 e. q' H5 z: R2 d
iv. 返回博客管理主页面
" ~8 W0 B( C. L! M& b, H- Q. Q; {; d+ X5. 删除评论业务流程
" C1 Y+ O! k5 `0 ca) 删除评论Action:ReplyDeleteAction.java
: A+ L. F9 N9 \$ `" z, @i. 获取当前用户ID
2 o& s3 `7 g' v9 Z/ zii. 根据用户ID和评论ID删除日志5 v5 B7 Y( D: e; |/ x( J" A: [
iii. 添加提示信息% E) H. S* ]7 T$ l1 a y; D+ H8 w
iv. 返回博客管理主页面; `; |- i) b+ M8 q9 T) _# j
C. 博客访问模块" `5 ?4 M6 j/ T0 L% f
1. 博客浏览业务流程9 x6 ~8 ]3 |0 J3 |+ p! K) l
a) 开发博客浏览Action:BlogAction.java1 p0 }6 e1 N% \9 y5 z, t# P
i. 根据用户名获取持久化User对象
6 {0 P4 g+ @! C7 C( H& vii. 返回博客浏览主页面- g! K3 P7 W1 m% y
b) 开发博客浏览主页面:blog.jsp
! q" b% ~+ g5 b% Z; E5 U8 y. ei. 根据用户持久化对象User获取用户日志迭代输出
. S3 b/ F& Z$ ~$ E! S+ gii. 根据每条日志对象获取日志评论迭代输出3 ?* l0 y" L8 K7 q# o. C+ A! z
2. 发表评论业务流程# X! U, i, T! V
a) 开发配置跳转Action:replyAddInput.action% x1 I" i. a5 T2 d1 G+ Z- d
i. 根据日志ID获取被评论的日志对象message
4 ?( P6 C9 E3 x! g( s3 u) y8 f0 Tii. 返回添加日志评论页面. v& }5 A7 z: f/ }
b) 开发添加评论页面:reply.jsp3 t; K2 V# X* U$ ~8 @/ H% z
i. 显示持久化的message信息(且使用隐藏表单域保存Message信息)+ W7 Y! G) z3 l( H
ii. 显示评论的表单( R! q' w/ R+ R0 v
c) 开发添加评论Action:ReplyAddAction.java/ ReplyAddAction验证文件/ z6 q8 ~) m7 b! X9 _ r+ J
i. 获取并保持评论信息
6 p5 q8 ?, G: r- Zii. 评论失败:返回添加评论页面reply.jsp(所以Action中应该保存被评论的日志信息)* i D! F. m$ O0 `5 D2 [; C
iii. 评论成功:返回博客浏览主页面:blog.jsp5 Q; N0 d9 {* U" G7 C/ V+ ^3 W. p
# q" b+ F0 J+ c) [! M7 U$ S基于Struts +Hibernate开发的博客管理系统源代码2 Y+ j- R& Z5 A! Z
0 U$ ]3 j% h, V
( _3 O9 T" `- ~. N解压码:
6 l* r. f3 u% m8 c0 z$ [( Q% I$ X6 u( V& J! p6 j5 x- F+ w
2 b6 H, R; y" d1 G& r) m$ P" Y7 r
; i- z# i2 f. z5 y, W/ C/ q$ j |
本帖被以下淘专辑推荐:
- · 项目源码|主题: 28, 订阅: 64
- · 网站|主题: 1, 订阅: 0
|