该用户从未签到
|
一、 分析需求) I; \5 H7 Z( T' k
1. 用户注册:任何访问者都可以注册为博客管理系统的合法用户1 N) x$ |" x0 z9 X+ m
2. 用户登陆:登录的用户具有浏览日志,发表日志,修改日志,删除日志,删除日志评论的功能
3 ?9 t% W m; I+ U2 A" B7 P3. 浏览日志:登录后的用户可以浏览自己的网络日志和评论' N) k& g( @9 B4 {3 _
4. 发表日志:登录后的用户可以发表自己的网络日志
) d% B* \1 A1 z; W4 O' u$ |5. 修改日志:登录后的用户可以修改自己的网络日志0 n2 A' p; ~" R! }- q3 E3 V
6. 删除日志:登录后的用户可以删除自己的网络日志
' B% |/ V) H! t* X6 k9 G! {" a) K7. 删除评论:登录后的用户可以删除针对本人的网络日志的评论
) U- Q8 l1 w3 p8. 博客浏览:任何访问者都可以浏览特定用户博客中的日志(按照博客用户的用户名浏览此用户)
/ `% d" ^8 T' L7 R8 h2 l1 V9. 发布评论:任何访问者都可以针对别人的网络日志发表评论& ~/ T0 A" m+ ~ V, H
0 A \5 e* g( [; o$ n' r( m! O
; p8 E5 L; R2 [9 v" G& i$ l5 D+ d二、 分析建模
, ]9 p6 j. S0 g0 a) ?0 }" _0 I1. 实体建模- }% ~9 B* ^( ?1 K1 `4 I) {5 R
2. 关系模型8 z9 A: I* g9 y9 Q2 C6 w9 ~- `
3. 构建域模型User/Message/Reply4 r. ]8 d1 [" C" t. M) C$ G
, q8 S4 A3 ]6 \ e
* O+ l8 A3 c- g5 f. k
三、 项目初始化( E4 h0 D% R. T# \8 B) S
1. 添加struts支持& {0 y% @6 L- Q- t
2. 添加hibernate支持
8 k6 c9 ?6 `1 _: |: L$ j3. 添加log4j/dom4j/common-lang.jar/mysql相关类库3 v' u7 t# ]1 N# j/ n5 x
4. 定义系统异常类! F2 R* ?" V4 F+ [. k
A. BlogException.java0 Y. T2 b/ p5 x" x+ i
B. BlogDAOException.java
, {, B1 p" ^+ W1 [! J$ \& G& T
* A; R5 v/ d/ c1 _% N7 u
/ {" Z( P6 _$ a' I: T9 y四、 实现域模型(实体关系建模)
; ?( F$ x. u1 V$ S; D1. Java实现域模型
& Z( Z! K7 Q3 v( ]+ p! T' e使用Java语言描述于模型:BaseModel.java/User.java/Message.java/Reply.java$ f% Z8 \! ? |" A/ V7 I
2. 数据库实现域模型( g0 N8 N/ E9 j5 e# V. R
使用数据库语言描述域模型:userinfo表/message表/reply表
& Z9 E4 O0 l- [4 a$ ?4 |2 x3. 定义映射文件
5 I9 I) c4 d% R5 k- Q
/ V* n; `: ^' ]4 U3 s8 d1 i5 E$ ]% L; ~5 s7 {
五、 基于Hibernate实现DAO1 }) o+ V" u6 D3 U# K6 y! y
1. HibernateUtil工具类:简化Hibernate操作6 B! x" X" H" Z! z5 a& i( P8 a
2. HibernateFilter过滤器:事务处理; }" p! r+ {7 G& Q
3. HibernateDao基础Dao:简化DAO操作. N! p, P G, S
4. 实现DAO5 A; w$ P! s0 c0 X; q" x5 R7 C% M
六、 基于dom4j实现DAO与表现层层解耦
+ l, X' m- t" c% F$ z
6 E' |; p: m6 \ c5 ]0 n
7 g- V8 s; u" Q/ z& B; m B k; F; S七、 DAO单元测试& R" r# \5 K9 V
) M# r* z6 T; A) Q( S, E5 Y
. Q) f# _7 l6 I# p j8 k$ `八、 基于Struts实现表现层
- O' v/ d# ~4 d4 W& X1 ^A. 用户管理模块
( l0 R* y1 w; }1 p. V6 \% }1. 用户注册业务流程
, R- j2 f# }' W: Ga) 配置注册页面跳转Action:registerInput.action3 x& C X# F4 g0 ]
b) 开发注册页面:register.jsp
7 c1 i7 b6 Y) y- Lc) 开发注册Action:RegisterAction.java/ RegisterAction校验文件& T8 h4 ]5 ?9 t* d6 s
i. 获取并保存用户注册信息4 p2 O4 y2 ?9 u0 R" M
ii. 注册失败:添加注册失败提示信息;返回注册页面:register.jsp
: ^1 E# G1 k5 \- n; Tiii. 注册成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp
6 N* c: O- Z0 S6 m( }6 n2. 用户登陆业务流程
) u: B/ x# g9 `) p6 Na) 开发登录页面:login.jsp
* j3 M& B" Q4 u x* L! Vb) 开发登录Action:LoginAction.java/ LoginAction校验文件3 l' h: Z1 U9 P3 m
i. 根据用户名查询用户信息4 A5 s/ F* W8 j4 M2 ^' B
ii. 如果用户不存在或者密码不匹配则登录失败,否则登录成功
% W4 T9 f( e5 r# l1 j$ L1 miii. 登录失败:添加登录失败信息;返回登录页面:login.jsp% u% O/ O6 [; _/ x9 J
iv. 登录成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp+ d' c; R3 I$ e3 r5 a I" ~
B. 博客管理模块/ N/ t1 m* { v: N: l
1. 浏览日志业务流程
1 L5 B4 N5 R- }# O3 F" m! G2 Za) 开发浏览日志Action:HomePageAction.java5 u% {: q* }- W8 L" a' e
i. 得到当前登陆用户的信息
& U$ U* [- Z- S9 t2 sii. 根据登录用户信息得到User持久化对象! D, F5 u* Q3 [1 }9 y
iii. 返回到博客管理主页面; k2 E5 b- r- E9 R/ v8 |
b) 开发博客管理主页面:homepage.jsp' Q# b+ R7 m% y3 _& S# Y8 S* `
i. 根据用户持久化对象获取用户日志迭代输出
3 U( y. ^) U: I$ E/ { d S( e- qii. 根据每条日志对象获取日志评论迭代输出( ]0 l. G# ?3 t- F* ]
2. 发表日志业务流程: @/ s/ s# W1 |! r. n, g( s8 M
a) 配置发表日志跳转Action:messageAddInput.action
( \# ^% P, ]/ u% [3 |b) 开发发表日志页面:message_add.jsp
) T7 F2 L* y8 l3 V% E, I4 [c) 开发发表日志Action:MessageAdd.java/ MessageAdd校验文件
0 }$ S! e* | w3 q7 p2 z$ Ci. 保存日志信息+ X2 {7 I; h% o) y# v8 n
ii. 设置提示信息
9 @9 S/ [, U- i5 W! ?iii. 返回到博客管理主页面
" ?: Y* ]6 g( Y: P3. 修改日志业务流程1 X% w/ B+ R, h9 m" s% a
a) 开发修改日志跳转Action:MessageUpdateInputAction.java: E4 V' w' U; L* V' t5 B
i. 根据日志ID获取日志对象! i6 o' E+ l0 d/ F/ b8 X8 L: e' G
ii. 返回修改日志页面message_update.jsp
! {8 g) p& n1 t7 ^b) 开发修改日志页面:message_update.jsp
8 s h' l* E0 Y# P' \# ]. ]" Pi. 根据日志持久化对象获取并展示被修改的日志信息! v3 n" ~. Q+ e5 l1 L
c) 开发修改日志Action:MessageUpdateAction.java/ MessageUpdateAction校验文件: I. |* W& a9 }, x+ E+ l3 Y% f
i. 根据ID得到Message对象3 W& E# G8 b- |8 w
ii. 更新数据
8 w h( g& O4 o* biii. 返回博客管理主页面& |: b6 @7 x1 W9 V% Q& G+ j9 W0 I
4. 删除日志业务流程6 a$ U1 f/ Y E1 @. |' e& t: ?7 Y
a) 开发删除日志Action:MessageDeleteAction.java
D2 H! Q. E5 U9 E, Vi. 获取当前用户ID G' n; B& ?9 l3 N5 e
ii. 根据用户ID和日志ID删除日志4 C2 a3 ]4 @2 X& s$ [
iii. 添加提示信息: {7 A9 [) v+ e, @
iv. 返回博客管理主页面4 M2 l, K# l- ?' R. ? u
5. 删除评论业务流程
: J/ u5 I; W9 h" v' da) 删除评论Action:ReplyDeleteAction.java; z' S' ]" `4 u
i. 获取当前用户ID
+ n. _5 G" ~7 ~4 qii. 根据用户ID和评论ID删除日志
& J8 s( Z- w* J7 N3 v" Liii. 添加提示信息2 p x& i1 d# p& Q% f$ f
iv. 返回博客管理主页面
& {! j0 F5 {' Y1 CC. 博客访问模块' C+ x# n. D# A) u) K
1. 博客浏览业务流程- N1 Y2 ?/ y' H( T$ ~( v% L& I
a) 开发博客浏览Action:BlogAction.java( Y# H: @8 a1 `* X
i. 根据用户名获取持久化User对象
' H6 x4 I, u, xii. 返回博客浏览主页面2 I' @4 ]0 L3 k
b) 开发博客浏览主页面:blog.jsp
9 s/ Z+ P3 p' wi. 根据用户持久化对象User获取用户日志迭代输出: [- A+ J6 q W9 S
ii. 根据每条日志对象获取日志评论迭代输出4 c- e5 n0 h/ C' E7 N. R3 z7 }0 {
2. 发表评论业务流程
w |+ l7 [; Ia) 开发配置跳转Action:replyAddInput.action6 {6 I [) q. |
i. 根据日志ID获取被评论的日志对象message! D4 ^) o! `5 f' g3 M2 }
ii. 返回添加日志评论页面* I2 i0 t' l% G6 M. R
b) 开发添加评论页面:reply.jsp. {: O2 K, v( L: g7 f2 J5 {
i. 显示持久化的message信息(且使用隐藏表单域保存Message信息)8 k& v9 w( v/ ?! Z3 s9 \$ S/ Z
ii. 显示评论的表单+ ?+ }. k4 b! o. v$ v$ q
c) 开发添加评论Action:ReplyAddAction.java/ ReplyAddAction验证文件% U e# @ {0 X& q3 h
i. 获取并保持评论信息5 V z+ q* t" b5 [) u& S
ii. 评论失败:返回添加评论页面reply.jsp(所以Action中应该保存被评论的日志信息)# a6 ]2 x R/ l4 B. h
iii. 评论成功:返回博客浏览主页面:blog.jsp! v1 ?; u9 ~0 ?
4 k( G8 P: T2 Q# ^! f基于Struts +Hibernate开发的博客管理系统源代码
1 |) x8 ?- K, \
( x! k. \8 k9 j- }$ z) f' ~+ f5 m6 L7 H
解压码:
8 A9 v, j/ m+ m" c5 K. _$ p/ G- n( s' z6 n8 f6 A; r& l* c% i: _
8 _8 L( h% W$ C1 m% i4 B2 @9 }4 Z# K* n, m9 D4 r
|
本帖被以下淘专辑推荐:
- · 项目源码|主题: 28, 订阅: 64
- · 网站|主题: 1, 订阅: 0
|