该用户从未签到
|
一、 分析需求
n+ a1 U% P: s+ M* g6 C$ C5 Q1. 用户注册:任何访问者都可以注册为博客管理系统的合法用户$ C, ]6 B: h# O$ u% h
2. 用户登陆:登录的用户具有浏览日志,发表日志,修改日志,删除日志,删除日志评论的功能/ `! G3 [ f& R2 g1 A) ^
3. 浏览日志:登录后的用户可以浏览自己的网络日志和评论
) \: B8 g" |3 Q* S S) F6 D3 p/ l% E4. 发表日志:登录后的用户可以发表自己的网络日志8 B3 k2 ]1 V4 T$ e" ]
5. 修改日志:登录后的用户可以修改自己的网络日志
" M1 Z2 _2 B. A$ E6. 删除日志:登录后的用户可以删除自己的网络日志1 D) R; m9 \; ~; T5 W Z
7. 删除评论:登录后的用户可以删除针对本人的网络日志的评论
2 }' Q& L, b6 D4 r& v+ K7 N, |8. 博客浏览:任何访问者都可以浏览特定用户博客中的日志(按照博客用户的用户名浏览此用户)
0 m$ d2 y) J5 P/ z9. 发布评论:任何访问者都可以针对别人的网络日志发表评论
8 Z7 Z# ^# h& C9 g# R0 O, H; f$ V0 S% A: b5 y( R3 D% M
4 K3 ?* }5 A7 l: Y9 @( V
二、 分析建模$ W$ k, @+ ?# E( L% h
1. 实体建模
3 Y5 X* a" }2 @4 ]2. 关系模型- B; y- W, C$ l9 S5 H
3. 构建域模型User/Message/Reply
& ?! S7 N) Z' z, ^- _ _) T/ n$ w( m1 B: v- s
' C% u* _& i( e7 R$ W三、 项目初始化
9 c ~. O1 l8 O0 g% h8 G% O1. 添加struts支持1 g. i$ m& M+ V4 v
2. 添加hibernate支持
" X7 X) I! U1 ^8 ^9 H8 h3. 添加log4j/dom4j/common-lang.jar/mysql相关类库( [0 f% r) r+ ^( I0 G' O1 s, f- [8 Y R
4. 定义系统异常类7 w9 h$ x% M" b, ?- f0 J
A. BlogException.java6 l# O8 x/ _0 B [+ G0 G' d4 ^
B. BlogDAOException.java: Q9 G3 G9 u- Z+ I$ O
) r' s0 C' M9 E! I' k5 I/ L6 j
# E7 b6 B: v6 S* P9 N3 G2 }四、 实现域模型(实体关系建模)
- z% m3 [; v4 r" ~+ P0 `7 Y1. Java实现域模型/ v0 N. l! w- K* J. W
使用Java语言描述于模型:BaseModel.java/User.java/Message.java/Reply.java
! r! U) s0 }& L/ N# |; ~% f2. 数据库实现域模型
1 @; ~* U1 B7 d' Z3 |9 `使用数据库语言描述域模型:userinfo表/message表/reply表5 H! `, b- U& B, E, G; }$ B
3. 定义映射文件
$ V* H) O$ X, ]2 i( t6 h2 _: l! {! \1 v+ l8 c3 S2 a% q8 X% Y
0 O: R! @) z0 V: x# o五、 基于Hibernate实现DAO
# s c0 p9 _* m1. HibernateUtil工具类:简化Hibernate操作4 w y5 u0 J% ], N
2. HibernateFilter过滤器:事务处理
% \0 E3 N `/ U. V3. HibernateDao基础Dao:简化DAO操作3 v6 w( n0 |" [5 R; t( W
4. 实现DAO
5 Y' e: Y; |/ a' J" O六、 基于dom4j实现DAO与表现层层解耦
+ o( t5 B0 V: w2 Y+ s/ n0 B+ e
& w) i% g; P0 `, R, v. y9 Q6 Q N" s: T4 k+ E) @
七、 DAO单元测试
. b F7 n2 g8 w: j/ i8 C% `. O! A5 e$ u! M+ I7 l
9 a0 K# A- J" ?# ^, x八、 基于Struts实现表现层* N! G/ Z6 T# \3 f$ S; {5 H
A. 用户管理模块8 j$ r0 A0 c5 H6 Z$ o7 e" k8 ]
1. 用户注册业务流程6 ^8 R% ^9 t+ P4 [( y' R$ F
a) 配置注册页面跳转Action:registerInput.action
2 c5 \! ?5 T" e X1 X, Bb) 开发注册页面:register.jsp
H5 V* i5 A/ R4 C1 @c) 开发注册Action:RegisterAction.java/ RegisterAction校验文件6 H# b1 O9 W4 Z& q; q
i. 获取并保存用户注册信息) Y$ Y) d5 _1 ?4 j, l1 L
ii. 注册失败:添加注册失败提示信息;返回注册页面:register.jsp
2 c) Q; g; l$ j& hiii. 注册成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp" Q( A" ?- H4 {! s
2. 用户登陆业务流程2 Y. C5 R4 y, q7 t
a) 开发登录页面:login.jsp8 c, }( x1 I/ P* s" S7 h6 v
b) 开发登录Action:LoginAction.java/ LoginAction校验文件( _# b4 a, t1 v5 k. E& b, m
i. 根据用户名查询用户信息, k* p/ r5 g+ U: J/ z5 y
ii. 如果用户不存在或者密码不匹配则登录失败,否则登录成功& u; F+ d m0 ?- G
iii. 登录失败:添加登录失败信息;返回登录页面:login.jsp! {% W5 H( q3 l6 R- W
iv. 登录成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp# k4 e0 G4 K- I' u% o4 H% O
B. 博客管理模块
( t3 D7 e' J& @$ Q1 z1. 浏览日志业务流程
- ~! Z! O0 J0 @$ M2 T- h( z& na) 开发浏览日志Action:HomePageAction.java
1 a" x/ i- P4 p, G- \i. 得到当前登陆用户的信息
% K8 d, H* F4 K, gii. 根据登录用户信息得到User持久化对象
; y* R% C' l, T& l4 ?2 Diii. 返回到博客管理主页面$ I6 e' O- {7 g( \2 ^8 k7 v7 f
b) 开发博客管理主页面:homepage.jsp
# v1 C+ f# _. u/ J1 Q' Di. 根据用户持久化对象获取用户日志迭代输出' m* y; `) W9 `9 x/ T; Q8 f
ii. 根据每条日志对象获取日志评论迭代输出. ^& V4 D! _/ y
2. 发表日志业务流程
% S, D5 J) V5 `: ea) 配置发表日志跳转Action:messageAddInput.action
/ ]* \% h1 T: }' E% _) W' N$ c: Pb) 开发发表日志页面:message_add.jsp
/ d$ u8 N! o9 j0 H' c6 J/ dc) 开发发表日志Action:MessageAdd.java/ MessageAdd校验文件
) b+ j) J2 R5 ]$ i: W6 Li. 保存日志信息3 K8 N9 P; d$ ?! Q; Y' E
ii. 设置提示信息: |- M- @" ^9 t. S
iii. 返回到博客管理主页面! y7 \3 _7 E9 p5 L1 b$ j8 A
3. 修改日志业务流程
4 A3 f% [4 H4 o' la) 开发修改日志跳转Action:MessageUpdateInputAction.java$ b. k+ @- f' O; }- u. o
i. 根据日志ID获取日志对象 }4 i) y* @' U; E6 P4 L/ b; z7 {
ii. 返回修改日志页面message_update.jsp
2 g3 t! ~ b1 J2 y& V, K9 T2 }b) 开发修改日志页面:message_update.jsp
# S# R3 i! H) s' A) ui. 根据日志持久化对象获取并展示被修改的日志信息
0 B6 D& h$ U ~5 J) f8 y7 Kc) 开发修改日志Action:MessageUpdateAction.java/ MessageUpdateAction校验文件9 E% `' p9 x: @% a8 R
i. 根据ID得到Message对象9 R3 H1 V+ \# t0 Z. E! f2 U
ii. 更新数据
: K/ J1 m+ \. h# h0 Hiii. 返回博客管理主页面
# ~6 B& [; L4 ~/ ~6 n0 t C4. 删除日志业务流程! M* y9 y) u7 ^0 b
a) 开发删除日志Action:MessageDeleteAction.java
. n4 a; e+ T. d# U6 G) Xi. 获取当前用户ID8 L- n4 f1 R( n' Y- m
ii. 根据用户ID和日志ID删除日志 U+ H, k; u; s: C( W
iii. 添加提示信息
. a+ U* j: z7 N/ p y& h: F$ I; W) Wiv. 返回博客管理主页面* F; n% F! _# U8 H6 m5 J6 |
5. 删除评论业务流程" e* s7 g) F* Y9 `) W
a) 删除评论Action:ReplyDeleteAction.java
4 ]' y. R: r1 _3 ai. 获取当前用户ID) }% B% w4 e8 ~1 {
ii. 根据用户ID和评论ID删除日志
( Y) ~# U. J$ W; A) [8 Iiii. 添加提示信息
! ]4 I9 t t$ a0 R& {) Miv. 返回博客管理主页面1 L. d: o) a+ ]) \
C. 博客访问模块' a; M* J2 C# V2 W# Y5 ^0 b
1. 博客浏览业务流程$ \$ _7 h2 i1 V
a) 开发博客浏览Action:BlogAction.java
/ O/ E2 `! y; k c# s- Zi. 根据用户名获取持久化User对象8 x7 p# I* Q: W8 i# i3 W& W, u
ii. 返回博客浏览主页面
6 q" D. p8 ^" s1 W7 V$ o) Lb) 开发博客浏览主页面:blog.jsp/ c2 ? f3 n8 b
i. 根据用户持久化对象User获取用户日志迭代输出
* j1 k |9 D. x/ s+ d7 r2 @4 Uii. 根据每条日志对象获取日志评论迭代输出
# K2 m/ y- I8 A3 O- |2. 发表评论业务流程" C/ `9 c" X7 F0 N* O
a) 开发配置跳转Action:replyAddInput.action
$ J; y4 P5 w2 Y# A* Fi. 根据日志ID获取被评论的日志对象message/ u4 t+ T3 a2 I/ E6 C
ii. 返回添加日志评论页面5 x! n7 p6 j' |. ^
b) 开发添加评论页面:reply.jsp- o, y$ P, ^5 g s3 r! d/ y, b
i. 显示持久化的message信息(且使用隐藏表单域保存Message信息)5 B4 C+ ]7 } u' _1 v+ D ]
ii. 显示评论的表单
# E- t* c$ Z2 k6 _3 _9 y4 Kc) 开发添加评论Action:ReplyAddAction.java/ ReplyAddAction验证文件, O- ~+ b" P" l( O
i. 获取并保持评论信息
' E% M* W" k7 p- r! x1 x/ Fii. 评论失败:返回添加评论页面reply.jsp(所以Action中应该保存被评论的日志信息)
; R0 h6 W- ]& i) Niii. 评论成功:返回博客浏览主页面:blog.jsp$ u( d6 `! c9 }' B" Q! [
; J2 E% K' f' G& g6 L
基于Struts +Hibernate开发的博客管理系统源代码
& W, s9 p7 b- o% G' |, J: } w/ N- }; _+ z0 q H
6 p& D3 a& v9 c9 L解压码:
2 B8 `/ O9 y, N" y4 a( @6 _- m
3 [( e2 q& z' o) i3 O& B# o0 f: U7 u4 @' `
$ y$ W2 b+ C8 E* _ |
本帖被以下淘专辑推荐:
- · 项目源码|主题: 28, 订阅: 64
- · 网站|主题: 1, 订阅: 0
|