|
该用户从未签到
|
一、 分析需求
! r6 S7 t3 v, K4 C0 M1. 用户注册:任何访问者都可以注册为博客管理系统的合法用户: |' z' J7 X' i. Y
2. 用户登陆:登录的用户具有浏览日志,发表日志,修改日志,删除日志,删除日志评论的功能1 `0 _+ q$ I* v
3. 浏览日志:登录后的用户可以浏览自己的网络日志和评论
7 Q/ R% l; @1 o, E2 \( U- ^4. 发表日志:登录后的用户可以发表自己的网络日志
1 Q. h% H* H- M5. 修改日志:登录后的用户可以修改自己的网络日志! K1 X# J! C! M0 [, N4 Q$ X! \
6. 删除日志:登录后的用户可以删除自己的网络日志
+ V. q, P0 `. _8 K& T7. 删除评论:登录后的用户可以删除针对本人的网络日志的评论
/ ^0 ~8 f. g& s8 @8. 博客浏览:任何访问者都可以浏览特定用户博客中的日志(按照博客用户的用户名浏览此用户)1 D! I) v( i% J, f
9. 发布评论:任何访问者都可以针对别人的网络日志发表评论
! U. J. Q+ X+ V4 [2 g! F# {% F
/ f. e6 Q a, d) I
1 l! L! R5 w7 S* W/ j二、 分析建模
2 f6 {6 u; b5 f* b+ O1. 实体建模& X4 I( p i+ d G! Z+ |) O
2. 关系模型
% U$ f6 ~+ S, ` F' _6 o: N; S3. 构建域模型User/Message/Reply9 W) N3 b7 q) [: A: Z4 t+ E# a
- _! u5 g) }2 m4 |; `3 i- l$ |
; {' s, d; e+ g, G3 j+ h三、 项目初始化
* ~5 w8 f L) S0 Y# ?+ ~0 G9 v1. 添加struts支持. J7 I4 O7 c0 j' s! s! M! ?
2. 添加hibernate支持2 c7 [3 h! Q* }% Z: p& E
3. 添加log4j/dom4j/common-lang.jar/mysql相关类库( g/ x- S/ {7 ~3 e' d8 t1 b
4. 定义系统异常类
8 v1 o- ]# b0 g- p- O) _A. BlogException.java: g- v# ~. H0 _. @7 Y0 l$ Z* K
B. BlogDAOException.java3 j+ j; m& w, {
9 B9 Q+ F7 \! H5 A7 c! V* k& _- D$ t g+ E2 A" {3 h
四、 实现域模型(实体关系建模)
+ B$ C5 ]( N7 j4 v3 a1. Java实现域模型
4 {2 _1 Z/ X4 h) ~2 L4 m( Q0 ?5 Z使用Java语言描述于模型:BaseModel.java/User.java/Message.java/Reply.java
" b1 @- A+ {9 F+ _0 a2. 数据库实现域模型
' x3 I) h( e* L( c- T. c" k使用数据库语言描述域模型:userinfo表/message表/reply表
# ?& l) U* T+ ]; }& E1 W. J0 m" d3. 定义映射文件, |. \0 a5 ~3 {3 d9 r" n0 B
. w- j" y; r# u/ k7 T3 W1 p$ [% }$ `! ]
" S% S7 c5 r" b0 A. H4 g五、 基于Hibernate实现DAO3 b- d* [2 Z3 X& u; d6 p
1. HibernateUtil工具类:简化Hibernate操作
' b5 E8 {/ t# \) |- N7 J4 F2. HibernateFilter过滤器:事务处理1 c* M) {7 F; {2 c w
3. HibernateDao基础Dao:简化DAO操作# c" S" b/ n2 J1 f
4. 实现DAO) I7 Z7 X! O% J
六、 基于dom4j实现DAO与表现层层解耦/ f8 z! E9 N. q# G' g D
( [ v. h9 c7 f0 l
2 C2 e" [2 @4 M8 O, y9 m七、 DAO单元测试
- V0 g% V6 }& G$ O3 y# x \% q
9 h( a9 b+ v( n7 s6 u) @- W& D; r1 [3 t8 f: J. W) A) k- t# q
八、 基于Struts实现表现层
B6 l/ }" o$ E% I; m* m" rA. 用户管理模块
0 e% C, K* y% B4 }. S1 e1. 用户注册业务流程& E0 q t- m: L' ^2 l2 u* L
a) 配置注册页面跳转Action:registerInput.action
: b+ i" z- y9 p. K6 A4 S9 P! Bb) 开发注册页面:register.jsp
, [4 C' |# F- m" V. r$ c! Hc) 开发注册Action:RegisterAction.java/ RegisterAction校验文件
) } d& g. E4 A0 x. P* F) Ji. 获取并保存用户注册信息/ i0 o/ r& Y3 E- l* I
ii. 注册失败:添加注册失败提示信息;返回注册页面:register.jsp1 L; N* p6 T* {6 R* g
iii. 注册成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp+ I Z% d4 s+ l& P0 w
2. 用户登陆业务流程2 Q8 y* ]6 X% x1 O; @7 p$ Y
a) 开发登录页面:login.jsp# |2 g6 K4 n7 i0 k% p
b) 开发登录Action:LoginAction.java/ LoginAction校验文件
5 S" P9 t* h N+ K+ E7 ni. 根据用户名查询用户信息/ Q5 l1 w: e1 h) d* O' ~/ v
ii. 如果用户不存在或者密码不匹配则登录失败,否则登录成功
( [. \2 @! U0 Iiii. 登录失败:添加登录失败信息;返回登录页面:login.jsp L- N, M1 b1 n- L, Q+ D
iv. 登录成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp n3 W9 y/ L- ~ B7 l3 @0 j
B. 博客管理模块
4 c) I! i: D: D1 z Q. `! ~7 z8 e( M1. 浏览日志业务流程
' a$ S2 Y9 J# Y0 Ga) 开发浏览日志Action:HomePageAction.java
2 I% u" `$ x |( s. Bi. 得到当前登陆用户的信息( x4 r5 M/ @4 u1 O% f/ N& M; J
ii. 根据登录用户信息得到User持久化对象
* ?2 C' \- E9 |7 Q8 |iii. 返回到博客管理主页面
2 M$ u. z8 g6 E! ]b) 开发博客管理主页面:homepage.jsp, Y2 ]% ^% F1 m% `
i. 根据用户持久化对象获取用户日志迭代输出
9 a2 |9 ?) `9 S' J7 iii. 根据每条日志对象获取日志评论迭代输出, t# Q$ n+ g. Y
2. 发表日志业务流程
2 ]. m/ F! y/ v& Y' O1 \a) 配置发表日志跳转Action:messageAddInput.action% `. g& ]7 R W
b) 开发发表日志页面:message_add.jsp
+ [/ c5 X4 M" t* t0 g$ ac) 开发发表日志Action:MessageAdd.java/ MessageAdd校验文件
- W/ B0 d. ?9 g! A9 W( F1 Pi. 保存日志信息7 I% ]- }1 h7 X" I. D5 t
ii. 设置提示信息
" e& N5 o, v4 d5 s' c- }# piii. 返回到博客管理主页面: {; A$ p0 y) x! t% ` L
3. 修改日志业务流程5 r: O/ C6 q' V8 ^2 _$ m* K
a) 开发修改日志跳转Action:MessageUpdateInputAction.java
" F# c9 B2 w" |' ^# _$ ~* s8 g+ si. 根据日志ID获取日志对象
# \# V3 W- q1 H$ x: c6 y- D5 C$ iii. 返回修改日志页面message_update.jsp
' ~6 }3 }, P- j" sb) 开发修改日志页面:message_update.jsp
7 h$ D2 P& w _ J% \/ @4 v! X3 ti. 根据日志持久化对象获取并展示被修改的日志信息
& b* }! n7 d) e, qc) 开发修改日志Action:MessageUpdateAction.java/ MessageUpdateAction校验文件 u# }/ _9 [5 T: P
i. 根据ID得到Message对象
% ?9 P2 d. T6 F7 `8 uii. 更新数据
3 K: O! V7 g6 @3 eiii. 返回博客管理主页面
3 X. s8 b) M1 w, O+ p4. 删除日志业务流程7 M* }6 }' D9 L' J1 [7 D
a) 开发删除日志Action:MessageDeleteAction.java
. s3 ?$ e& N6 o' A1 si. 获取当前用户ID" M7 ?. n& O" v
ii. 根据用户ID和日志ID删除日志% P$ X5 R' X+ y7 X( K" E! D. A
iii. 添加提示信息
9 I0 `( N5 w* Tiv. 返回博客管理主页面5 H7 _9 A. G. G: e$ h8 U1 S$ N5 O2 f
5. 删除评论业务流程" Z3 W' ]1 K4 N' v( R/ F2 E
a) 删除评论Action:ReplyDeleteAction.java; j I e t( Q; A6 T8 U" @
i. 获取当前用户ID
' u2 q- Y) N: t* E3 H& ? j D Jii. 根据用户ID和评论ID删除日志/ \8 P& B8 G& `. X
iii. 添加提示信息# }0 T% I" J# ?, T9 U4 n7 O
iv. 返回博客管理主页面
3 Q# @ t/ X4 t G/ [0 vC. 博客访问模块) Y; ]: E2 a# C i1 n
1. 博客浏览业务流程
- d1 P+ }; T$ ?a) 开发博客浏览Action:BlogAction.java% A/ ?% t, |' _, G* X# Q5 Y
i. 根据用户名获取持久化User对象
- C. L# Q: {) Y, E8 T4 _% l( a7 gii. 返回博客浏览主页面 J. _; u0 h9 ]3 S; o: {# P" t
b) 开发博客浏览主页面:blog.jsp
. v$ s2 ]1 R, j6 Hi. 根据用户持久化对象User获取用户日志迭代输出+ b6 ?+ ~4 G. r9 s
ii. 根据每条日志对象获取日志评论迭代输出
; H% u" _8 B/ q( q) I2. 发表评论业务流程
5 t( v9 C& l* R7 E% na) 开发配置跳转Action:replyAddInput.action: n; d! N( D( K3 z4 T! Y
i. 根据日志ID获取被评论的日志对象message
+ I, q( E7 t: {5 vii. 返回添加日志评论页面
3 q2 c( {2 v: N$ x% j3 F7 {4 vb) 开发添加评论页面:reply.jsp
0 h, x* X' O& R6 e" ]/ Oi. 显示持久化的message信息(且使用隐藏表单域保存Message信息)- O/ B8 _' r. ?& | u! G7 j
ii. 显示评论的表单
5 N) P" L# o& `# Gc) 开发添加评论Action:ReplyAddAction.java/ ReplyAddAction验证文件
5 v) M8 ], s' L4 Q. \) Ki. 获取并保持评论信息
- z+ u( p9 {; K8 z9 {ii. 评论失败:返回添加评论页面reply.jsp(所以Action中应该保存被评论的日志信息)! ^7 B# C# o; X# u+ y0 c
iii. 评论成功:返回博客浏览主页面:blog.jsp
- }7 G) t$ V2 |8 T
. S9 M% U/ @" G5 V基于Struts +Hibernate开发的博客管理系统源代码4 u$ R {# O- |
2 O3 T; U" O! [' c L
( R, ]9 N3 \9 n; z; j( W( O
解压码:
7 Y9 X; Q, R% |) S- l6 W$ T0 F
" z4 E$ L3 H$ i: C* m: J, @/ G" Q0 K5 Z" Q
" r# p( [( u0 Z0 M* ^( Q |
本帖被以下淘专辑推荐:
- · 项目源码|主题: 28, 订阅: 64
- · 网站|主题: 1, 订阅: 0
|