该用户从未签到
|
一、 分析需求
2 v, P2 O7 U; | e4 \1. 用户注册:任何访问者都可以注册为博客管理系统的合法用户6 W7 E- K6 B+ U* R+ l6 e
2. 用户登陆:登录的用户具有浏览日志,发表日志,修改日志,删除日志,删除日志评论的功能, q" f8 T$ {. r s1 P5 o! w8 b' s9 A
3. 浏览日志:登录后的用户可以浏览自己的网络日志和评论6 m3 [2 x+ F8 {2 Q; g" s& b$ w
4. 发表日志:登录后的用户可以发表自己的网络日志
+ w, m8 ]8 G+ S4 w5. 修改日志:登录后的用户可以修改自己的网络日志
3 ~7 v" f% w2 O" L5 \+ e6. 删除日志:登录后的用户可以删除自己的网络日志. E5 ^8 J% P; W. k; v& g. y0 k* F/ J
7. 删除评论:登录后的用户可以删除针对本人的网络日志的评论
# c6 B5 x( G1 }- l" p( L8. 博客浏览:任何访问者都可以浏览特定用户博客中的日志(按照博客用户的用户名浏览此用户)
6 A" e F4 q3 y1 ~; y9. 发布评论:任何访问者都可以针对别人的网络日志发表评论# J0 }8 [* b) O' o7 b
) e6 G- v1 G5 h, P3 @* @: b0 o: r2 O! E
二、 分析建模
, U! f" \+ ]0 }6 Z8 i) V/ V1. 实体建模
$ G, Z, f# o/ V \$ x6 M1 v+ k2. 关系模型- f) g- f2 P- M+ [9 j9 F H: X
3. 构建域模型User/Message/Reply# \& ^* A2 W" G4 r& D* g- [0 E
- T7 x# Q y5 o% i8 d. L3 T
9 c" [( z8 R. D$ i# v7 U. N9 n
三、 项目初始化, y7 o# j f% h% m w2 o" y' W
1. 添加struts支持: q5 z4 E7 i2 o$ |. @
2. 添加hibernate支持8 k3 l8 O& ?4 w5 [$ M
3. 添加log4j/dom4j/common-lang.jar/mysql相关类库
7 G" \* \- A- t* T3 ]4. 定义系统异常类2 P) G% b/ B, x$ R F4 ]
A. BlogException.java$ S O; k0 b6 b3 [6 E& T; ]
B. BlogDAOException.java
- L9 R" R# u H; R% ^! _# r6 Z
a5 R, C2 W6 G% q
四、 实现域模型(实体关系建模)# V5 f# i) A4 [ L; n! [
1. Java实现域模型* h4 y/ }. ]2 D
使用Java语言描述于模型:BaseModel.java/User.java/Message.java/Reply.java. K- }1 [/ a/ q4 d& _$ }- l7 q
2. 数据库实现域模型$ y- n1 E' o0 B% |7 d. h0 }
使用数据库语言描述域模型:userinfo表/message表/reply表 a2 \5 Q. @4 G& a8 I2 M
3. 定义映射文件
# _: _, v. O1 {0 @8 E% d" x/ |' j7 _
; z/ X. @1 H, m x9 E; C: _. o
7 w1 t' U" x1 Q' T五、 基于Hibernate实现DAO
+ K5 t: S4 C4 Q3 _# ^1. HibernateUtil工具类:简化Hibernate操作5 v$ H( n# x4 l8 O
2. HibernateFilter过滤器:事务处理; m) Q. S* n9 x, G3 \/ C3 U
3. HibernateDao基础Dao:简化DAO操作* Q# {6 K0 h1 H* H: P- C
4. 实现DAO3 o% T+ }+ u8 L0 l, ~% b
六、 基于dom4j实现DAO与表现层层解耦% v9 p6 p+ r, @$ \+ W- u) q
Q! _$ M$ W- R# v: a
" n0 F5 a6 Y- I七、 DAO单元测试
9 Z3 U A: q! A3 C- a: r- s/ e7 Y6 }3 H
( w/ L+ M" ^6 J8 {3 k( u八、 基于Struts实现表现层
) `4 y: n& W' t' ?' \3 hA. 用户管理模块8 @, h& G4 u5 T! y' n5 c* K
1. 用户注册业务流程7 V2 R' z3 b$ g0 q3 ?- G3 k" X
a) 配置注册页面跳转Action:registerInput.action
4 ] P( Z J: |b) 开发注册页面:register.jsp! q+ b1 Z* Z; }
c) 开发注册Action:RegisterAction.java/ RegisterAction校验文件
0 y5 u7 g" Y- m8 p+ {i. 获取并保存用户注册信息6 M7 m# @2 v B) f; g
ii. 注册失败:添加注册失败提示信息;返回注册页面:register.jsp& a6 u5 V& V9 G l2 B5 @* A
iii. 注册成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp
7 }& x7 d( Y6 p# z2. 用户登陆业务流程
/ n. P1 o. B$ A2 k( @3 V+ f- @a) 开发登录页面:login.jsp2 }. q0 V$ s' o& P; Y" Z: v6 z1 T6 Z0 }+ L
b) 开发登录Action:LoginAction.java/ LoginAction校验文件
i( y/ d, L* `1 u5 p0 Ai. 根据用户名查询用户信息
# ], A3 Y+ N7 h( N1 b+ c6 X lii. 如果用户不存在或者密码不匹配则登录失败,否则登录成功( o. f0 [+ K, n K w
iii. 登录失败:添加登录失败信息;返回登录页面:login.jsp
( `. A8 l; N: y$ x1 N. H& d, Aiv. 登录成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp
, t/ C; u* ?7 Y1 l- m& V3 Y# QB. 博客管理模块
8 r' r0 d# E; A4 _& g1. 浏览日志业务流程
8 G! G* B8 ^" Y8 `9 \: Ra) 开发浏览日志Action:HomePageAction.java
$ w$ F* |; b$ c. w# y- s6 u9 ei. 得到当前登陆用户的信息
4 G# b# z3 ^+ Aii. 根据登录用户信息得到User持久化对象( e- e+ ^& \% f( o/ k" D( t7 S
iii. 返回到博客管理主页面
$ B" C( U+ _+ o0 j% ob) 开发博客管理主页面:homepage.jsp* O: d* \+ ]) p# t, ]6 [& e/ t
i. 根据用户持久化对象获取用户日志迭代输出, b2 l' k1 m" l
ii. 根据每条日志对象获取日志评论迭代输出
+ G! `0 l2 t! ]: X2. 发表日志业务流程; H2 T& R% }$ E9 m) ~
a) 配置发表日志跳转Action:messageAddInput.action
% A6 |% G. a" ?+ m" W+ Jb) 开发发表日志页面:message_add.jsp
9 z5 L$ k+ v( o! {c) 开发发表日志Action:MessageAdd.java/ MessageAdd校验文件9 _' n6 ]: `* A9 c
i. 保存日志信息
3 D+ B' z/ Z! Y/ Q0 W) oii. 设置提示信息
; X q. u% d! D: h3 X6 jiii. 返回到博客管理主页面
; @/ i% o- e1 j! Q: E9 h. R# r3. 修改日志业务流程& L# v( m0 [: U! E8 X
a) 开发修改日志跳转Action:MessageUpdateInputAction.java6 w6 v3 D( V+ p0 r Q
i. 根据日志ID获取日志对象) {' M. J* f0 F9 k
ii. 返回修改日志页面message_update.jsp
8 b, H% U! H+ q0 Hb) 开发修改日志页面:message_update.jsp9 e' o, [$ m$ T8 Q
i. 根据日志持久化对象获取并展示被修改的日志信息
! D B' H U0 |) H Sc) 开发修改日志Action:MessageUpdateAction.java/ MessageUpdateAction校验文件
: ?4 V3 T5 V) n1 P Fi. 根据ID得到Message对象
: o' K! v. b1 u6 b5 @- y& a/ Eii. 更新数据4 b, `$ D) L: e- ^
iii. 返回博客管理主页面
1 Q) x, G; b3 v: }; p4. 删除日志业务流程
2 ^/ B, G7 ?9 z6 v0 o H5 ya) 开发删除日志Action:MessageDeleteAction.java
" ]6 _0 r! g' I( u1 ii. 获取当前用户ID+ i' m: g2 g7 c/ c7 I; s
ii. 根据用户ID和日志ID删除日志
7 D: u; I& Q/ q: M; [/ J* a6 Tiii. 添加提示信息
8 ?$ Q# }! W2 r* P7 giv. 返回博客管理主页面% a6 T- y, \8 g6 A% L
5. 删除评论业务流程4 n9 p9 _4 V( f1 e
a) 删除评论Action:ReplyDeleteAction.java
9 j/ @6 _2 W: J2 Mi. 获取当前用户ID+ t5 B# T/ c/ P# t
ii. 根据用户ID和评论ID删除日志! E, M2 M b4 A
iii. 添加提示信息; Q! q7 P# }! w# ~6 R( e) w( a9 {
iv. 返回博客管理主页面 H& k n' l" R
C. 博客访问模块) p2 Z* L+ l x& F7 P- A; D
1. 博客浏览业务流程
2 J" F6 g" Y& ~; }& J! B% w: la) 开发博客浏览Action:BlogAction.java
6 U) L7 _, U& b: s1 @i. 根据用户名获取持久化User对象5 _ m! Z: s/ |' F( I
ii. 返回博客浏览主页面
% @/ l! O( _1 b5 wb) 开发博客浏览主页面:blog.jsp. g. f+ m z9 o
i. 根据用户持久化对象User获取用户日志迭代输出- y4 P4 x: N j3 T2 @
ii. 根据每条日志对象获取日志评论迭代输出
3 R' I) c1 O% @+ W$ V; x' E2. 发表评论业务流程
% L; W0 _/ l" Ma) 开发配置跳转Action:replyAddInput.action
& ~, \: A, J h9 o4 A. q! [i. 根据日志ID获取被评论的日志对象message
& V, h+ q8 s, v, Sii. 返回添加日志评论页面2 x/ T D5 B0 ~5 \! @+ T
b) 开发添加评论页面:reply.jsp
- \7 Y6 E. ^& k( g3 fi. 显示持久化的message信息(且使用隐藏表单域保存Message信息)
1 p( r7 v# V; `( Eii. 显示评论的表单 s! Q; A& U& T1 P! L& `) }9 N
c) 开发添加评论Action:ReplyAddAction.java/ ReplyAddAction验证文件
/ l8 j- f; n& M7 E M, {i. 获取并保持评论信息: x! ?' K' i- e' L, z( Y8 h3 g
ii. 评论失败:返回添加评论页面reply.jsp(所以Action中应该保存被评论的日志信息)
" z- \# B# e- I4 D$ |: e3 Biii. 评论成功:返回博客浏览主页面:blog.jsp
* P( q' i$ G& |2 `' g- L5 M: q& O& L* ?9 Z/ B
基于Struts +Hibernate开发的博客管理系统源代码+ u4 J; Y+ I: q: j" f4 S
8 Q" _# s8 Z5 F' w+ M8 g. x) U+ o! ]& ~9 A" a$ F
解压码:
, M h% |* s, A6 a9 W" P; A, L5 H
$ w3 V7 { N8 F r0 c6 I& [7 ~! A& b( B
' T+ ~2 t) S, p- f$ D2 d |
本帖被以下淘专辑推荐:
- · 项目源码|主题: 28, 订阅: 64
- · 网站|主题: 1, 订阅: 0
|