该用户从未签到
|
一、 分析需求( a, i4 j2 `1 N+ t- x- c
1. 用户注册:任何访问者都可以注册为博客管理系统的合法用户% J# [+ E2 X4 n/ k
2. 用户登陆:登录的用户具有浏览日志,发表日志,修改日志,删除日志,删除日志评论的功能
6 `+ y4 j v) q! z: T. d6 F( n3. 浏览日志:登录后的用户可以浏览自己的网络日志和评论0 t E! y% q, P; l# C
4. 发表日志:登录后的用户可以发表自己的网络日志3 L- e: { @! i- n/ V/ M( d
5. 修改日志:登录后的用户可以修改自己的网络日志
; y2 o' J, b. w# e( ^) r. G6. 删除日志:登录后的用户可以删除自己的网络日志
, B f: X5 F, U q1 G1 g7 K7. 删除评论:登录后的用户可以删除针对本人的网络日志的评论
0 K; K/ p2 [5 w2 B u* W8. 博客浏览:任何访问者都可以浏览特定用户博客中的日志(按照博客用户的用户名浏览此用户). B: L7 L7 M- l) k" E$ C% k3 z1 a
9. 发布评论:任何访问者都可以针对别人的网络日志发表评论
3 r- r h# T) i1 ^7 M
+ K/ b1 J: A, M& I4 t& Z7 v6 D$ R
: O# |, t1 a9 l; t# ]/ ^6 p二、 分析建模% m- I1 R9 b Z( E
1. 实体建模
& d" | Z8 `& h% K) ?( Z2. 关系模型* ` t* h( b2 D3 c# w
3. 构建域模型User/Message/Reply
& i5 n7 ~3 c+ S% V; Q
: j# E: k- v2 ~/ k, y( P& [ Q) i( s5 @ Q0 A& Q* m" K
三、 项目初始化
! b+ k/ r0 ?5 R& {! y8 Z' {1. 添加struts支持) m; F" X6 y4 `% `. Z$ n" {
2. 添加hibernate支持
% v2 u. O5 q0 [+ f i! I3. 添加log4j/dom4j/common-lang.jar/mysql相关类库
. Y! d" ], ^9 d4 }2 X/ I: |9 \0 Q4. 定义系统异常类
6 q8 ~+ U& `5 h' H* Q+ m. [& _% @7 BA. BlogException.java
; e; p( b9 u. u* A% p2 ZB. BlogDAOException.java+ D7 E. i7 |9 o a W8 o8 h& k
- A# L' o5 N% A9 q
% }$ }- |# M4 B4 h四、 实现域模型(实体关系建模)
6 j$ v% q- ^ J- M# F( {4 _9 r1. Java实现域模型
5 e ]* s' x5 r使用Java语言描述于模型:BaseModel.java/User.java/Message.java/Reply.java
0 ?6 X. v. g L5 a9 b2. 数据库实现域模型4 v* U/ c6 d4 L: B* A' C0 B7 w
使用数据库语言描述域模型:userinfo表/message表/reply表! |1 x: N C% q0 Y& f4 d7 Z
3. 定义映射文件1 x/ p; ?9 V; Z" ]
. G6 v2 f6 `9 w3 X+ j, }
1 \" y( E7 a1 C8 y五、 基于Hibernate实现DAO
6 _% e$ |' R+ s! |3 [1. HibernateUtil工具类:简化Hibernate操作5 M2 c Y* e9 o4 u
2. HibernateFilter过滤器:事务处理
( l! a+ S5 i3 o% ?8 e& c3. HibernateDao基础Dao:简化DAO操作
! ^2 x8 W% g% \4. 实现DAO
t" c B! T+ ~% W, g8 s" l6 V六、 基于dom4j实现DAO与表现层层解耦
8 c& u E) w# z0 Y1 A1 V$ [1 `- W: J* s) q" L0 y! v4 J
Q; U9 @, x0 S3 Y
七、 DAO单元测试+ I; q6 I) z$ q1 ^% T+ @% s
: T9 ]; z! H- V3 {% l
( b! E' M) ^* ~: W' _八、 基于Struts实现表现层" z4 s- K+ v0 [
A. 用户管理模块- [* {2 a# t3 b0 |6 R# U. B Z
1. 用户注册业务流程
3 e# f( g# R d8 h( C9 W3 g9 sa) 配置注册页面跳转Action:registerInput.action7 K2 F/ a. H& _! b1 }0 ^1 c$ J" _
b) 开发注册页面:register.jsp
0 u! i: e z4 y7 T# Kc) 开发注册Action:RegisterAction.java/ RegisterAction校验文件
! \. A5 }" ?' ~: ui. 获取并保存用户注册信息
9 N, U) j1 z i/ I; |2 B' ?ii. 注册失败:添加注册失败提示信息;返回注册页面:register.jsp; M9 q. Q3 w% C- z( @ T
iii. 注册成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp7 d) m4 u5 n6 W- A* Y
2. 用户登陆业务流程
! K9 O1 e6 j$ o a! }a) 开发登录页面:login.jsp# R9 E: O _6 ~! }: i$ j" P
b) 开发登录Action:LoginAction.java/ LoginAction校验文件
% d# B. y4 a( T) X L1 m2 H! J \i. 根据用户名查询用户信息5 a) G$ k' Z0 _4 e. f! E
ii. 如果用户不存在或者密码不匹配则登录失败,否则登录成功8 V' @( d2 Z9 B- E [
iii. 登录失败:添加登录失败信息;返回登录页面:login.jsp
" h* c! o/ t4 d1 |iv. 登录成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp
! d0 P- f- m9 z' C. Y" w+ s& W% J: RB. 博客管理模块
& r# V m! t" I1. 浏览日志业务流程9 P; V$ `( p" G4 s" s+ ]
a) 开发浏览日志Action:HomePageAction.java8 a7 C3 ~5 ?% V' t, C
i. 得到当前登陆用户的信息
# \3 w- S$ S8 Z+ A! O! fii. 根据登录用户信息得到User持久化对象 q# c) G; v; c' Y
iii. 返回到博客管理主页面
" \5 p8 A# r( z# w4 [b) 开发博客管理主页面:homepage.jsp
6 ^. ~$ G( M+ yi. 根据用户持久化对象获取用户日志迭代输出
' N+ h3 U! a0 i/ Eii. 根据每条日志对象获取日志评论迭代输出
W! H- T' j5 n4 x" T9 ?* T2. 发表日志业务流程
* d; I3 J5 K3 c6 [a) 配置发表日志跳转Action:messageAddInput.action( X. a+ }" @% M5 U
b) 开发发表日志页面:message_add.jsp+ k c& g5 K: m+ v0 I
c) 开发发表日志Action:MessageAdd.java/ MessageAdd校验文件
2 J( y9 r2 f, l$ z. N4 Zi. 保存日志信息6 q' Y, z- h* I+ h5 V$ m8 G# i) }+ c
ii. 设置提示信息
( ?* L3 E. S4 Giii. 返回到博客管理主页面
2 m3 h e' u( S7 u3. 修改日志业务流程
9 e; \3 d- r4 C- ^a) 开发修改日志跳转Action:MessageUpdateInputAction.java7 M& g& @9 ]+ [: O
i. 根据日志ID获取日志对象' Z% K$ ~: C6 N2 J( C5 x
ii. 返回修改日志页面message_update.jsp
4 O: Q4 a$ A7 B4 Wb) 开发修改日志页面:message_update.jsp
" P v% }8 C6 K8 h$ Yi. 根据日志持久化对象获取并展示被修改的日志信息
* p. k+ N# Q* t n1 ^# T2 }) Tc) 开发修改日志Action:MessageUpdateAction.java/ MessageUpdateAction校验文件
: B9 D& p& I8 d4 `5 Bi. 根据ID得到Message对象
3 e$ o$ k* }' j; x% c, N$ [ii. 更新数据
6 I( v: {) i3 I4 v w( y7 d+ [iii. 返回博客管理主页面3 w! C' j8 { a& y9 {, Y3 C
4. 删除日志业务流程% q y4 Y+ l; [- z( J6 z. u" d
a) 开发删除日志Action:MessageDeleteAction.java
5 T7 ^) H( O& F5 S& ci. 获取当前用户ID$ s, s% J- u6 L4 ^
ii. 根据用户ID和日志ID删除日志
- u8 y7 Q8 W' G% tiii. 添加提示信息; i9 N ^, B9 |2 _ K/ C
iv. 返回博客管理主页面& X% c; S' q2 C% f# j+ G9 S
5. 删除评论业务流程; N) a9 d0 h+ ~3 z+ r- Y
a) 删除评论Action:ReplyDeleteAction.java- K5 A0 M; e8 p5 M( [$ o+ F
i. 获取当前用户ID
z0 f8 A) @( v8 k2 s! e* a, f! Xii. 根据用户ID和评论ID删除日志
) K$ ]* g$ l- ] N) V. riii. 添加提示信息
" q! O/ d: l8 q. |1 Qiv. 返回博客管理主页面% ]% S2 ^) c4 W$ W3 k1 d6 e
C. 博客访问模块) U) @/ c# H& t; o8 ?. b
1. 博客浏览业务流程! R& r9 w# T5 _% z! u- D
a) 开发博客浏览Action:BlogAction.java1 ?' m: g4 W: V& }5 o# {) j* d
i. 根据用户名获取持久化User对象
& o, ?( n5 N, P: T% H. Lii. 返回博客浏览主页面
* _$ s \0 y' @6 \8 Db) 开发博客浏览主页面:blog.jsp0 A3 i- n8 v N E E& J5 W7 z
i. 根据用户持久化对象User获取用户日志迭代输出
) s1 u1 A1 E1 @" vii. 根据每条日志对象获取日志评论迭代输出9 z. F- Z7 F* M9 P
2. 发表评论业务流程& s, ~ _% ~0 ~0 A$ E' \; ?
a) 开发配置跳转Action:replyAddInput.action
4 R* W- p% Q* D/ t% Si. 根据日志ID获取被评论的日志对象message' J2 `" J; u; j+ S( k
ii. 返回添加日志评论页面/ C0 H0 V: `% c7 R: @5 m
b) 开发添加评论页面:reply.jsp! Q4 A; h4 ^/ k! a: k
i. 显示持久化的message信息(且使用隐藏表单域保存Message信息)
2 e0 M+ f6 R& h8 M# I2 C& ^/ E' ~ii. 显示评论的表单; o( W' V4 }9 Q% w1 ^2 J- ?8 I% K
c) 开发添加评论Action:ReplyAddAction.java/ ReplyAddAction验证文件
. U- H4 R) q3 ei. 获取并保持评论信息: r7 ~7 r- C% e
ii. 评论失败:返回添加评论页面reply.jsp(所以Action中应该保存被评论的日志信息)
2 ~+ P; i" K7 p9 r& T6 R, j2 Jiii. 评论成功:返回博客浏览主页面:blog.jsp9 k0 z. [ k; B! J
- F8 y! a3 B/ N; g基于Struts +Hibernate开发的博客管理系统源代码% s' I3 ]3 O0 O! ~, g6 V
* i# ]* ?- E. Z8 E( N
& L8 t1 c# ?# N/ D* h- x0 r
解压码:
. L0 ^$ b2 a$ ~
1 S. `( R. o, \! h" A, T. a* r- }! A
; q o! U2 V. h: c | |
本帖被以下淘专辑推荐:
- · 项目源码|主题: 28, 订阅: 64
- · 网站|主题: 1, 订阅: 0
|