该用户从未签到
|
一、 分析需求" p& F$ @2 R& A( _
1. 用户注册:任何访问者都可以注册为博客管理系统的合法用户
- g- R3 W* E" F* ^2. 用户登陆:登录的用户具有浏览日志,发表日志,修改日志,删除日志,删除日志评论的功能& S6 x: {9 g& ?4 X* I
3. 浏览日志:登录后的用户可以浏览自己的网络日志和评论
! s F1 a5 X# b( q& Q+ e4. 发表日志:登录后的用户可以发表自己的网络日志9 a, |, z3 [: y b. g
5. 修改日志:登录后的用户可以修改自己的网络日志/ Y2 b* c8 t( B2 q2 R o9 T4 F. b
6. 删除日志:登录后的用户可以删除自己的网络日志
# a/ U: |0 p: j, M3 c7. 删除评论:登录后的用户可以删除针对本人的网络日志的评论
( q& w6 }, F% l! N l8. 博客浏览:任何访问者都可以浏览特定用户博客中的日志(按照博客用户的用户名浏览此用户)
& H. U" O: U0 g9. 发布评论:任何访问者都可以针对别人的网络日志发表评论
6 U: ]8 z# h0 y
4 {: c% R* b8 \$ Z8 y% g" v+ `0 B$ G2 }/ m+ |4 q
二、 分析建模) f+ o$ }4 E2 H9 d
1. 实体建模
/ x! l( ] T; Q7 a3 j2. 关系模型
3 W6 F; B) l' k1 q2 [' m. p- ^( [2 q3. 构建域模型User/Message/Reply
2 n! r4 T- J- P7 {+ A
0 v; f5 Q2 s9 K- Z8 Q+ T% |& B# H! [5 h
三、 项目初始化! f' T J/ j# I5 R
1. 添加struts支持
1 [/ M. b+ ?, F- V# m. d2. 添加hibernate支持& t' E- P( s4 `/ ?; X
3. 添加log4j/dom4j/common-lang.jar/mysql相关类库$ D+ d: B+ s7 e4 j# ]% x
4. 定义系统异常类
' x! s# j# L5 E. HA. BlogException.java+ b- g* r! a: q6 R/ A9 l
B. BlogDAOException.java
1 C( ~% j- y5 E n. H. ^
3 @. J) k3 \; _; g2 a3 l
! i& }1 L/ d: F2 s$ T四、 实现域模型(实体关系建模)
& ]+ s, Q- U# Y4 E# m: X1. Java实现域模型) g/ e5 [# o8 L
使用Java语言描述于模型:BaseModel.java/User.java/Message.java/Reply.java
- T+ \" C* ~! Q3 r+ f2 R2. 数据库实现域模型
: `6 z$ ?# C0 K0 o7 m( ~2 q2 s6 a使用数据库语言描述域模型:userinfo表/message表/reply表) V' d, {! Y* h5 E$ B3 G
3. 定义映射文件
$ D! E- v @- }; c t
# V6 c3 S, k0 U- L
0 R8 O* J; { V q6 _6 v8 y4 J五、 基于Hibernate实现DAO+ @7 A- S- w1 {0 W0 ~8 m
1. HibernateUtil工具类:简化Hibernate操作
0 x- F* f! F0 F2. HibernateFilter过滤器:事务处理6 `: f4 m+ [. E/ {
3. HibernateDao基础Dao:简化DAO操作+ X- g$ x$ G) e) i
4. 实现DAO
" Y# j4 ^. u* j$ B" \六、 基于dom4j实现DAO与表现层层解耦
$ B; ]+ q( Q2 l" c" j4 e
8 P8 I4 ^% Z; s% G
& I* o! c3 t3 E$ \七、 DAO单元测试1 k2 v9 ^" _0 @( R+ Y
5 x3 v: l, A2 p o( R1 `5 q% _2 ^1 p' c }; E
八、 基于Struts实现表现层
% V- v/ n4 E9 l- k, p& x4 dA. 用户管理模块9 M0 O8 D; \1 `
1. 用户注册业务流程
% s1 C# b7 D; Y$ F5 s! q5 ^a) 配置注册页面跳转Action:registerInput.action
$ x+ ^. c; O- f9 R1 J5 ub) 开发注册页面:register.jsp4 J$ h, p5 \" ?# I/ [
c) 开发注册Action:RegisterAction.java/ RegisterAction校验文件; b: ^0 J8 |9 H& @
i. 获取并保存用户注册信息
$ H# ^9 V# {5 i" J# I; [, c# Tii. 注册失败:添加注册失败提示信息;返回注册页面:register.jsp% u& }6 _) I4 h. M: K1 l
iii. 注册成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp
8 C6 M9 O1 t. V- W2. 用户登陆业务流程
* d; B; U0 V; j8 \: ~) Da) 开发登录页面:login.jsp9 ?; Q. i; Y# O* \1 ?
b) 开发登录Action:LoginAction.java/ LoginAction校验文件
) v! J. \! U: I8 ii. 根据用户名查询用户信息: v3 t) `$ `, Q4 n+ q ]- M, p
ii. 如果用户不存在或者密码不匹配则登录失败,否则登录成功
. ^ w4 I% o: n D3 r' z) ^1 ~iii. 登录失败:添加登录失败信息;返回登录页面:login.jsp$ b0 U# \1 r2 Y! C4 B$ {
iv. 登录成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp
[/ q/ d5 D3 _. vB. 博客管理模块
6 }( d% v7 V: z' ]& q: f6 m8 H1. 浏览日志业务流程1 E/ x! e% c. ^& d: L3 ^5 g7 r- H
a) 开发浏览日志Action:HomePageAction.java4 X/ q$ ?! d- K. ~( H3 [' X) d. N
i. 得到当前登陆用户的信息
. ~. F' [& q! |" B9 I* N% xii. 根据登录用户信息得到User持久化对象
& H4 h2 y$ n# k% _* Z4 o7 riii. 返回到博客管理主页面
* K S- x' F1 v4 D. Q- J% Ab) 开发博客管理主页面:homepage.jsp& z6 e) B5 i# _1 ]- a
i. 根据用户持久化对象获取用户日志迭代输出- \7 c! V+ q! t& d6 E' L. w6 _
ii. 根据每条日志对象获取日志评论迭代输出! L4 s' q, o6 H! I; g x
2. 发表日志业务流程1 d0 I0 N! d0 Z9 d0 ]0 X
a) 配置发表日志跳转Action:messageAddInput.action/ ^. q9 H* ~6 F' a- a
b) 开发发表日志页面:message_add.jsp w, H1 V* a& c' B" i& l
c) 开发发表日志Action:MessageAdd.java/ MessageAdd校验文件
8 C. g9 B1 q2 mi. 保存日志信息
& O! \- \+ T2 I, e5 Eii. 设置提示信息
+ u5 e2 w- ]9 C' Diii. 返回到博客管理主页面
; {6 _3 B7 X( ?/ n, @$ L4 S6 u7 f2 T# }3. 修改日志业务流程
) @; Q) m2 N' i* E- U) xa) 开发修改日志跳转Action:MessageUpdateInputAction.java1 C2 G1 d: a7 r
i. 根据日志ID获取日志对象! t9 Y7 G/ w2 Z! G9 a
ii. 返回修改日志页面message_update.jsp
' c7 m" [3 k9 o3 u% }b) 开发修改日志页面:message_update.jsp+ |6 f* F5 X4 }, z" _; O
i. 根据日志持久化对象获取并展示被修改的日志信息
5 \" Y- g3 a- n f% Dc) 开发修改日志Action:MessageUpdateAction.java/ MessageUpdateAction校验文件! T3 } d x& S" C8 M7 r
i. 根据ID得到Message对象
6 o* [( m' e* A3 mii. 更新数据
9 \; {( l9 @; p7 |iii. 返回博客管理主页面/ q/ n2 T* L* G; [
4. 删除日志业务流程! a! _; F. V2 Z( t+ _
a) 开发删除日志Action:MessageDeleteAction.java
9 M8 V2 e; e$ R1 V' L* Z: {i. 获取当前用户ID
5 I( ?' w. o" l3 s- Sii. 根据用户ID和日志ID删除日志9 ^6 W* ~+ O4 E" C
iii. 添加提示信息% N9 `/ p$ a/ W/ W# T% y
iv. 返回博客管理主页面( R) z! Q! s6 Z/ J% r
5. 删除评论业务流程
8 T; O# ]3 t8 ^3 S* _a) 删除评论Action:ReplyDeleteAction.java8 o+ _0 L C5 A& v/ |9 h
i. 获取当前用户ID& c( V8 ^. x6 I4 ?" i7 c
ii. 根据用户ID和评论ID删除日志8 y" T! y4 E* `. x/ |% \
iii. 添加提示信息, _6 I8 d: y1 M/ g" Q4 D \# v
iv. 返回博客管理主页面
) D8 H! Y! \8 C& S# M- UC. 博客访问模块) Z5 e& z3 J5 K; d+ ]* E& b* U: O
1. 博客浏览业务流程; B0 G$ x, l% @2 |1 _9 v6 ^5 ?8 k
a) 开发博客浏览Action:BlogAction.java
7 V( C9 c/ k0 R# P# _- C- ri. 根据用户名获取持久化User对象* ?2 ~7 Y. R7 f7 z
ii. 返回博客浏览主页面; L( y7 C2 _$ p, A3 R1 d& R3 f
b) 开发博客浏览主页面:blog.jsp# A+ o+ ^& k, y; m- E
i. 根据用户持久化对象User获取用户日志迭代输出. k! I7 p+ v8 @& A' v4 X# W2 C
ii. 根据每条日志对象获取日志评论迭代输出+ [) `9 A& |; K
2. 发表评论业务流程% z4 ^( |# P% l
a) 开发配置跳转Action:replyAddInput.action, E% K) l* Y1 w; w9 g( w
i. 根据日志ID获取被评论的日志对象message, G' ~% N2 N: F7 `1 M8 j4 ^8 s
ii. 返回添加日志评论页面
& m. f! W/ v! [b) 开发添加评论页面:reply.jsp1 I) x4 V) h: t( L) V
i. 显示持久化的message信息(且使用隐藏表单域保存Message信息)- W' O+ j8 i( d7 Q$ J% `9 w; f5 E
ii. 显示评论的表单
1 `" D: q* o1 H0 A% p) |/ Mc) 开发添加评论Action:ReplyAddAction.java/ ReplyAddAction验证文件
5 `4 {7 ^4 b3 ~" A) vi. 获取并保持评论信息7 F& t& v% G6 f- u6 h1 v
ii. 评论失败:返回添加评论页面reply.jsp(所以Action中应该保存被评论的日志信息)7 \. n, H. t" c
iii. 评论成功:返回博客浏览主页面:blog.jsp- b x. K' l: z
: @- z0 |2 U+ q
基于Struts +Hibernate开发的博客管理系统源代码
p H3 N5 A& T& T V( M: r3 |* A! d5 f+ W. @1 v
7 |% k0 J% q7 S
解压码:
% r& {6 r- P' h. k# Z( H7 O% D- Y1 l! P9 f1 W5 @
3 e" ?4 t( ^! D9 j
) J6 {8 C# A3 w/ E8 ~* b
|
本帖被以下淘专辑推荐:
- · 项目源码|主题: 28, 订阅: 64
- · 网站|主题: 1, 订阅: 0
|