该用户从未签到
|
一、 分析需求
3 T8 K0 p% o, `5 F. E. T8 m1. 用户注册:任何访问者都可以注册为博客管理系统的合法用户: e/ i/ H# ^3 D3 e
2. 用户登陆:登录的用户具有浏览日志,发表日志,修改日志,删除日志,删除日志评论的功能
9 y' f3 U% [: e3. 浏览日志:登录后的用户可以浏览自己的网络日志和评论+ N: d. o& D, J" M- z
4. 发表日志:登录后的用户可以发表自己的网络日志. J. V: y( S* E7 x5 G. V
5. 修改日志:登录后的用户可以修改自己的网络日志
7 t- Y3 F$ H" J4 S" r+ b6. 删除日志:登录后的用户可以删除自己的网络日志; {- c+ C4 s+ g( B. {3 P; T7 N
7. 删除评论:登录后的用户可以删除针对本人的网络日志的评论; j+ }+ r+ }# l1 z2 `6 V
8. 博客浏览:任何访问者都可以浏览特定用户博客中的日志(按照博客用户的用户名浏览此用户)
- ^2 r+ |- Y1 ]" m+ l- `/ K9. 发布评论:任何访问者都可以针对别人的网络日志发表评论8 \1 g7 C* T0 X+ O6 w+ o& o3 Q4 v
* O. Z" `" N: r! H w" e
% i! _2 @! n& t, Q二、 分析建模2 v* N0 }9 D6 h0 B
1. 实体建模
+ |- U& o8 v' B% P$ X; X4 z3 y2. 关系模型
: v2 S& r. F+ P) R3. 构建域模型User/Message/Reply
[7 K, N. ]/ l" ?, j6 y
# _# M; g! z P# c, T% m, \) v2 F6 ~& d9 o+ ~+ E( g7 O
三、 项目初始化
. }: m: `9 |( b1 w$ b1. 添加struts支持! c1 u% x# ]5 ]5 z# H( F$ y: T2 |
2. 添加hibernate支持6 C4 D5 f, O, _0 y
3. 添加log4j/dom4j/common-lang.jar/mysql相关类库
% F K# D1 T& m7 ~1 l" L5 m4. 定义系统异常类
4 B1 G q Z+ L/ M, j2 S PA. BlogException.java
4 b- d; X9 Z; u% e; v; KB. BlogDAOException.java: \& M- T4 T% [2 R/ j1 E5 ], |
% n* {- x j$ q1 n5 a9 n5 g( O- Y2 t$ k/ p, P5 S, i
四、 实现域模型(实体关系建模)1 W, z; D! k# Q; w- i/ Q
1. Java实现域模型8 j7 @3 d% b& N ]8 N5 {: k- q4 F1 K
使用Java语言描述于模型:BaseModel.java/User.java/Message.java/Reply.java+ ]1 W# E1 F5 Y$ ~# ^4 f8 G
2. 数据库实现域模型 I( \0 r' }9 ~2 S' P/ ^3 ~
使用数据库语言描述域模型:userinfo表/message表/reply表
( M5 h% N. e9 G6 F, B" y0 U2 l9 t3. 定义映射文件
1 R, n+ V7 b4 L' v1 t; w, b6 z3 x4 B. g6 g% l2 X
. Q) i6 U* `4 P, l" u! V五、 基于Hibernate实现DAO$ }& ~) R/ @8 `5 m7 l
1. HibernateUtil工具类:简化Hibernate操作9 p* z4 F! c% y% m
2. HibernateFilter过滤器:事务处理
# `9 D4 B! ^5 K" U8 ~3. HibernateDao基础Dao:简化DAO操作
1 e# l! @; m, W; x; \4. 实现DAO
2 N# b7 G; i5 z0 K' s2 T( B六、 基于dom4j实现DAO与表现层层解耦& }0 N9 _6 ~$ D8 P% r8 B
9 a' X. N7 E3 l: e2 b
6 `& r) g" }5 y* n七、 DAO单元测试: v6 j) H& ^' H- ?- O. [/ Y5 M
. g( G3 N) V0 Y. ?4 t
1 b; \0 s3 E7 @' \* L
八、 基于Struts实现表现层
8 `$ I0 T% a. Y8 EA. 用户管理模块
& b# F! K* u; ?- I- z" R1. 用户注册业务流程 Q' U" }( K& t9 d" ~0 ]2 Z9 y% b
a) 配置注册页面跳转Action:registerInput.action: W7 d" t2 B8 G8 G( A' t8 X
b) 开发注册页面:register.jsp' I( V/ m7 L2 K/ G7 o
c) 开发注册Action:RegisterAction.java/ RegisterAction校验文件
, B! B2 s9 Q0 l8 ji. 获取并保存用户注册信息
& c# k* c2 L3 f4 i; L1 W E' ~ii. 注册失败:添加注册失败提示信息;返回注册页面:register.jsp
. D0 T+ D. T3 N) Z7 F! biii. 注册成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp
) [ B' I1 f7 ?2 u! x& S9 A* k; H2. 用户登陆业务流程4 R% C p' n( d1 c; G1 V# k
a) 开发登录页面:login.jsp* ]! T- l" X8 y3 T
b) 开发登录Action:LoginAction.java/ LoginAction校验文件
' E8 R& K2 M/ w' O' j: Oi. 根据用户名查询用户信息
U# T6 s$ E& c& ~ii. 如果用户不存在或者密码不匹配则登录失败,否则登录成功
; f2 R0 H1 e" n6 {' V$ ?iii. 登录失败:添加登录失败信息;返回登录页面:login.jsp
) {0 h4 L }+ K0 b* hiv. 登录成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp
& C: a& m6 M! W( U# |6 mB. 博客管理模块
! i9 K, G: J1 [7 X% M' `1. 浏览日志业务流程9 ~% b1 Y _; c& y$ C) H" [
a) 开发浏览日志Action:HomePageAction.java( w+ x. o' K9 _7 u3 {% `
i. 得到当前登陆用户的信息
5 u: {7 E& C" m& I' Fii. 根据登录用户信息得到User持久化对象
5 O. C' i; N2 biii. 返回到博客管理主页面
, c& V8 e$ n7 C# { `( sb) 开发博客管理主页面:homepage.jsp
4 n% y! ]- t2 i" ]i. 根据用户持久化对象获取用户日志迭代输出
( I. i' e% C0 Z B% Kii. 根据每条日志对象获取日志评论迭代输出" H0 E; `: x. X+ k) V
2. 发表日志业务流程
1 Q% o+ S8 z, u6 P0 l6 }a) 配置发表日志跳转Action:messageAddInput.action
+ F0 c( `2 J, U+ ]9 o( |$ wb) 开发发表日志页面:message_add.jsp6 L0 r6 m- t) G( n4 ^5 P
c) 开发发表日志Action:MessageAdd.java/ MessageAdd校验文件
2 a* h! n& h/ w9 Si. 保存日志信息
' T, v& ?/ W# M/ \9 rii. 设置提示信息6 l& e3 G% h; u7 j
iii. 返回到博客管理主页面: e: O8 ], O$ J4 z3 `5 D3 f
3. 修改日志业务流程
2 O# {9 n% M I7 A: \0 [a) 开发修改日志跳转Action:MessageUpdateInputAction.java" R" O5 f# H( f9 H
i. 根据日志ID获取日志对象
o3 B7 ]3 s8 U- ?, u; Uii. 返回修改日志页面message_update.jsp
$ u3 e! H0 J" b! d7 Fb) 开发修改日志页面:message_update.jsp e3 ]2 i/ W$ m
i. 根据日志持久化对象获取并展示被修改的日志信息
! w# X' o2 G& x) U$ K* Ac) 开发修改日志Action:MessageUpdateAction.java/ MessageUpdateAction校验文件
: l9 J/ t. l9 ]i. 根据ID得到Message对象
1 x/ ^% j3 x, mii. 更新数据
" M; U5 V; I/ {5 ?5 \2 y; Wiii. 返回博客管理主页面
! w2 |0 {+ }% O0 R# r$ ~* B3 f4. 删除日志业务流程
" c8 X% g6 s, |/ b- f. Ua) 开发删除日志Action:MessageDeleteAction.java. I8 J# e. O- X
i. 获取当前用户ID( h7 ?8 z: Y' A6 ?8 E, G( Z R; R
ii. 根据用户ID和日志ID删除日志4 m& f' j0 J5 m! W1 l
iii. 添加提示信息, C0 x' _" ? v+ I4 ^
iv. 返回博客管理主页面
+ R( \& p& U8 v8 I- z5. 删除评论业务流程
6 S3 l" q' a1 g- \9 t, ja) 删除评论Action:ReplyDeleteAction.java
6 U8 [( a a$ V) m; M6 P! K1 ri. 获取当前用户ID
8 s, T/ s0 a. L/ K, U* p( eii. 根据用户ID和评论ID删除日志1 X% N& c! T8 }& d% |' _
iii. 添加提示信息
. t4 o) E6 c4 x3 fiv. 返回博客管理主页面4 a6 ?) k2 E8 P* p
C. 博客访问模块8 D: B: t0 ^4 }( B$ V- c
1. 博客浏览业务流程
6 Z7 Y+ Q& j% na) 开发博客浏览Action:BlogAction.java' M* s6 s' b& S7 Y0 L
i. 根据用户名获取持久化User对象4 g! [1 }: ?$ W& ^0 x
ii. 返回博客浏览主页面
* g: l( Z: K* u; Y3 U9 d1 nb) 开发博客浏览主页面:blog.jsp5 M _, Q$ p, q+ \( e) { X3 S
i. 根据用户持久化对象User获取用户日志迭代输出
2 v8 x, q3 d: u3 Z+ e' aii. 根据每条日志对象获取日志评论迭代输出6 r$ x6 ]0 H8 [/ ^
2. 发表评论业务流程
! d z5 Q0 n8 f4 N" @4 ]& [1 M: Oa) 开发配置跳转Action:replyAddInput.action. [# J- |, q6 _) r
i. 根据日志ID获取被评论的日志对象message) |2 Q4 e! w& ]; \1 C* `: E
ii. 返回添加日志评论页面
( ^7 k8 {* [6 O: pb) 开发添加评论页面:reply.jsp
- `7 t0 B1 x. B9 R! [0 ii. 显示持久化的message信息(且使用隐藏表单域保存Message信息)$ J- K: O9 G: O& v
ii. 显示评论的表单
' H6 A: [% ?+ S( kc) 开发添加评论Action:ReplyAddAction.java/ ReplyAddAction验证文件2 l. Q: `; H; [( Q! n
i. 获取并保持评论信息
# e6 S1 O& u5 k$ J, E8 `" Bii. 评论失败:返回添加评论页面reply.jsp(所以Action中应该保存被评论的日志信息)
/ p) E" @* P8 U2 ?( Giii. 评论成功:返回博客浏览主页面:blog.jsp
( w$ D; x. x- t- j+ r* ^. A; t& h: ^- u* E7 R& }$ X5 K& m
基于Struts +Hibernate开发的博客管理系统源代码# v% \% x' W4 |; s+ O
8 |$ J5 P5 Y: e; y$ v, t; s
* s& C7 l5 h1 c) B( L8 B5 ~# Z3 e解压码:: | }+ w0 C0 V) H1 t
5 `( V2 l7 o9 X) ~( n9 f
: F. y0 l% i) W: K# c& I+ D" `1 L0 j, t" F: V( D, Q
|
本帖被以下淘专辑推荐:
- · 项目源码|主题: 28, 订阅: 64
- · 网站|主题: 1, 订阅: 0
|