该用户从未签到
|
一、 分析需求
9 t/ C+ U( [0 Q" c- W1. 用户注册:任何访问者都可以注册为博客管理系统的合法用户* u0 S4 S& U( C1 h; q
2. 用户登陆:登录的用户具有浏览日志,发表日志,修改日志,删除日志,删除日志评论的功能
9 y3 w% Z( z, w; a/ u3. 浏览日志:登录后的用户可以浏览自己的网络日志和评论
4 |6 s q. b0 x: i, A4. 发表日志:登录后的用户可以发表自己的网络日志/ A3 X+ P+ _9 J6 r% h- H
5. 修改日志:登录后的用户可以修改自己的网络日志
. R8 s0 N) L! X N6. 删除日志:登录后的用户可以删除自己的网络日志6 r7 @3 O; `5 `! {& X0 _' k4 i
7. 删除评论:登录后的用户可以删除针对本人的网络日志的评论7 {; l+ e) B5 M$ H8 S( j& f [* R
8. 博客浏览:任何访问者都可以浏览特定用户博客中的日志(按照博客用户的用户名浏览此用户)
4 z" A1 b) t. \: y+ r4 o" h/ X( x9. 发布评论:任何访问者都可以针对别人的网络日志发表评论
I2 H6 X9 j$ C% N- m0 A4 K: a! i) M6 |( u; [+ e* ~
5 l! k/ S Y/ d4 n4 a: S4 p; `& M二、 分析建模 G7 |' [% l' w8 u/ b# n C
1. 实体建模
0 j$ _) ^4 T* B2. 关系模型 `' n- i. v5 K3 R
3. 构建域模型User/Message/Reply
9 K! t1 g& V |1 d( k- Y5 t* [, A
- G! K2 |9 h. G. W( P% A$ I: c* H' D
三、 项目初始化
# b; I& Q3 C% C) ], }9 {1. 添加struts支持; }) b6 l7 J( X8 F9 q0 K2 G
2. 添加hibernate支持) x5 P u2 V) J* o; w
3. 添加log4j/dom4j/common-lang.jar/mysql相关类库 _: s: B& w+ g# p- M1 U
4. 定义系统异常类0 [1 I* `) z: a9 t6 F) w
A. BlogException.java3 e3 a+ J% i+ ~+ a8 z
B. BlogDAOException.java2 Z' y9 } {' f
7 \! a" H1 n) C1 R3 ?; m
. l, L# E3 m# [/ j: Y" N
四、 实现域模型(实体关系建模)/ F4 I4 r+ P8 {8 J" d( s$ ?
1. Java实现域模型
2 O I0 N/ s9 C+ L7 T( S使用Java语言描述于模型:BaseModel.java/User.java/Message.java/Reply.java
8 g$ Y* g9 q" c9 i) j2. 数据库实现域模型
% }& D x- }6 b, [使用数据库语言描述域模型:userinfo表/message表/reply表
) A3 ~$ ~+ T+ d0 u1 O9 ], Z G4 O3. 定义映射文件/ `- X: d% Z9 a, c0 I3 q
# h% S6 L, j6 w8 z7 K8 i- l6 @9 s! t
五、 基于Hibernate实现DAO2 s; t3 \1 ~+ H& B- I
1. HibernateUtil工具类:简化Hibernate操作
) x1 k5 O, H' r* z2. HibernateFilter过滤器:事务处理" h( [# i. J) [2 K
3. HibernateDao基础Dao:简化DAO操作+ N7 ]2 Z8 S0 C5 w
4. 实现DAO- U- h# Z% ]4 \" C/ n4 x
六、 基于dom4j实现DAO与表现层层解耦
# O- S& z, j2 {4 b
/ T' B5 G/ ^- I5 S: O t
7 Z5 P9 T( N' H4 D3 ?七、 DAO单元测试
% O& ^0 ? E( F/ n; t5 w2 z4 A! F* Q5 S! w, f f/ L" i
6 I! H% q6 O% h6 E: e% _八、 基于Struts实现表现层
' h; I6 }9 J2 v3 U# p& NA. 用户管理模块$ j- b, _. d5 N) H" @4 e! r8 k
1. 用户注册业务流程& u' |- a8 _8 x; j. u) Y0 n
a) 配置注册页面跳转Action:registerInput.action
3 \' D+ a* G( F8 f$ `* wb) 开发注册页面:register.jsp9 k1 w6 `7 c& c3 ~
c) 开发注册Action:RegisterAction.java/ RegisterAction校验文件
/ P, a9 L$ |8 C f$ Y) }9 E. pi. 获取并保存用户注册信息, x) w3 \( s$ M
ii. 注册失败:添加注册失败提示信息;返回注册页面:register.jsp3 ?* _) t& F: f% w7 K. j
iii. 注册成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp
, X. ~* a0 `0 w8 z( Y% Y2. 用户登陆业务流程' }/ B+ h% e+ h1 B. x
a) 开发登录页面:login.jsp
* y" L' q8 u1 K6 v2 j3 w3 I& Xb) 开发登录Action:LoginAction.java/ LoginAction校验文件/ D, [6 _, V+ R
i. 根据用户名查询用户信息. b0 N" j( c8 G0 Z0 S
ii. 如果用户不存在或者密码不匹配则登录失败,否则登录成功' o P, [0 B# d7 A6 M
iii. 登录失败:添加登录失败信息;返回登录页面:login.jsp
# p' W3 ~1 ~( ?& _2 ~4 j4 b, j% Iiv. 登录成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp
( K6 G* K' [+ T2 tB. 博客管理模块% b. d" |( N' ~- G# }5 O
1. 浏览日志业务流程
8 N$ @6 x7 y. P1 }a) 开发浏览日志Action:HomePageAction.java
4 J3 ?- z, S$ Z7 K8 _# ii. 得到当前登陆用户的信息
8 T9 S9 n6 z: Mii. 根据登录用户信息得到User持久化对象
9 W5 ` o$ u7 ]2 _, c8 yiii. 返回到博客管理主页面
1 h" P/ I$ N$ d4 T: E9 C+ Wb) 开发博客管理主页面:homepage.jsp
X4 H* `5 T$ R3 g* [) U# Y2 t, Pi. 根据用户持久化对象获取用户日志迭代输出# t4 c+ T; M3 F: q
ii. 根据每条日志对象获取日志评论迭代输出
) m9 ]' [/ R, c, d* h2. 发表日志业务流程
- Q: s: g3 z) W8 I2 \7 da) 配置发表日志跳转Action:messageAddInput.action+ |" G* ?' e# l) I
b) 开发发表日志页面:message_add.jsp; C: e! g& Y) g. G4 k
c) 开发发表日志Action:MessageAdd.java/ MessageAdd校验文件2 H) q, E; T% @$ R6 Z1 Q" ^
i. 保存日志信息0 h9 G. m, i" o1 d% W
ii. 设置提示信息
7 V; D1 Z; V1 ?3 H3 }( F# @, Ziii. 返回到博客管理主页面7 W4 Y; r0 B8 ^8 [4 y0 [
3. 修改日志业务流程
: Q: ?# ^! V: Xa) 开发修改日志跳转Action:MessageUpdateInputAction.java
" s: C/ w4 @3 y1 v& Ki. 根据日志ID获取日志对象
3 P' e; ]; z2 w7 {1 G) eii. 返回修改日志页面message_update.jsp
5 i8 W1 X3 D! ^b) 开发修改日志页面:message_update.jsp2 d! j! {$ Y% Q9 X- X% U1 Q+ ~" {
i. 根据日志持久化对象获取并展示被修改的日志信息
' }! U" v! x- @8 u- R! Nc) 开发修改日志Action:MessageUpdateAction.java/ MessageUpdateAction校验文件/ p, e5 {7 F! q
i. 根据ID得到Message对象: k x7 I+ m8 K: t+ q/ `9 Y5 ? |# V
ii. 更新数据' s: ]1 M/ w" e [
iii. 返回博客管理主页面
) t/ Q. H/ f8 }4. 删除日志业务流程6 X# l$ G0 J b; ]) ^
a) 开发删除日志Action:MessageDeleteAction.java
C7 v+ C) @ ?- J0 ji. 获取当前用户ID
W6 a, o: g) w4 ^1 }* z$ Pii. 根据用户ID和日志ID删除日志! l7 q: Q. E; y
iii. 添加提示信息& S) U# L1 a7 A0 W: a3 ~0 @
iv. 返回博客管理主页面4 m! Q) R5 r; D9 Z8 L, |& ?
5. 删除评论业务流程2 p. V* }$ W! K2 n$ j8 ]) ^: ]
a) 删除评论Action:ReplyDeleteAction.java
- Z+ a7 d1 [2 l# U5 V5 C( Z3 wi. 获取当前用户ID
$ i. }/ K- z+ dii. 根据用户ID和评论ID删除日志
9 W. d. ^3 s' x6 U0 N! u0 w4 q- T4 J3 @iii. 添加提示信息- }% g7 ~; m+ R) P
iv. 返回博客管理主页面- S) O$ F- s& H! A% x& g: [
C. 博客访问模块
0 @8 F4 ]- k' ] c! |1. 博客浏览业务流程
% s1 ?" q/ ?& T: Oa) 开发博客浏览Action:BlogAction.java
% [9 a( F/ [$ Q# A" g" q- @i. 根据用户名获取持久化User对象
7 r0 e4 F% j- U) K- f5 l- b Jii. 返回博客浏览主页面
! n5 d( d& Z! { Mb) 开发博客浏览主页面:blog.jsp/ H q& j c7 x% M+ s
i. 根据用户持久化对象User获取用户日志迭代输出8 A- L) F( Y# r2 n5 S: n/ f
ii. 根据每条日志对象获取日志评论迭代输出
- z, p& |1 x4 k2. 发表评论业务流程
) z' s- k2 H3 A4 u2 Y5 b* p2 Qa) 开发配置跳转Action:replyAddInput.action. z( f/ p0 {# r4 N
i. 根据日志ID获取被评论的日志对象message
& w3 i$ \1 k# uii. 返回添加日志评论页面
- c3 ?/ S) v2 m/ e2 V1 Nb) 开发添加评论页面:reply.jsp
" {2 M( ~) r8 Mi. 显示持久化的message信息(且使用隐藏表单域保存Message信息)+ Y$ a& p9 q+ @2 K n! W. q1 ^
ii. 显示评论的表单4 J9 c1 @6 w/ I6 }- J# M
c) 开发添加评论Action:ReplyAddAction.java/ ReplyAddAction验证文件
: \9 @; h. Z) [! `$ `7 K0 n% e" vi. 获取并保持评论信息7 W- J: n7 o, Y
ii. 评论失败:返回添加评论页面reply.jsp(所以Action中应该保存被评论的日志信息)- F6 v' G1 k3 R9 ]" V; l2 R. Y
iii. 评论成功:返回博客浏览主页面:blog.jsp
. |+ n5 _" s+ |1 F2 ]6 V
4 K9 W( C$ b: I5 O3 Q9 Y2 m基于Struts +Hibernate开发的博客管理系统源代码6 \6 C0 t$ d) ^' x% J; A
0 {2 H2 i; i( ~& a2 S& L% c- O- }' b
& @# m. k# j3 S( @) ]: f+ ^* Q解压码:' `5 h; B+ |0 P6 R
0 [; X3 L) u# [9 R9 w- B% E- c; G7 E+ c2 A/ \0 [
% r b8 L9 l4 ~9 d0 x3 p |
本帖被以下淘专辑推荐:
- · 项目源码|主题: 28, 订阅: 64
- · 网站|主题: 1, 订阅: 0
|