该用户从未签到
|
一、 分析需求
# Y- d2 |6 \; \ z- a5 s1 s2 O1. 用户注册:任何访问者都可以注册为博客管理系统的合法用户1 ?5 V# R* Q4 F) n8 @
2. 用户登陆:登录的用户具有浏览日志,发表日志,修改日志,删除日志,删除日志评论的功能
" D Z1 v7 L# k. R j. N3. 浏览日志:登录后的用户可以浏览自己的网络日志和评论
$ e; T' e8 b# `: v. I2 n; A, ~/ x6 x4. 发表日志:登录后的用户可以发表自己的网络日志2 @' h+ ?1 V, X5 t' B7 \. }; t, b* i
5. 修改日志:登录后的用户可以修改自己的网络日志
1 a7 L3 N& Q, N8 w1 Q+ g7 ^6. 删除日志:登录后的用户可以删除自己的网络日志- ?9 W* a8 T7 q# d/ P
7. 删除评论:登录后的用户可以删除针对本人的网络日志的评论2 d5 S( p3 N9 I7 X
8. 博客浏览:任何访问者都可以浏览特定用户博客中的日志(按照博客用户的用户名浏览此用户)
4 c# d) Z+ F4 m: Y1 t) b9. 发布评论:任何访问者都可以针对别人的网络日志发表评论& r2 r" l) d/ v
$ M7 Y/ ^) Q6 z# s, i6 k$ O) r
7 w: O0 x' I+ @6 ?% j二、 分析建模8 ^- J# y+ ~ V7 S6 j0 P5 p0 E
1. 实体建模( H+ @( ~2 H+ v6 e0 B' C
2. 关系模型
$ K( `6 M* i- i0 V3. 构建域模型User/Message/Reply0 d9 R: _7 F+ f. B: @+ @9 t
2 k# L+ b! @; x, \4 Z7 i) ?* E" a
q% O& n/ f# }" d4 x三、 项目初始化
9 L5 P- \8 X9 h6 B2 I$ n$ ]1. 添加struts支持
9 g: r3 d6 F9 `- I4 E. @, f2. 添加hibernate支持
h# g, v- T) p2 i5 j7 M6 S! Q3. 添加log4j/dom4j/common-lang.jar/mysql相关类库: B9 e1 S8 \/ j0 P0 @( x
4. 定义系统异常类
l! e* i4 J. [ O) V! [A. BlogException.java& E2 J; Q0 ^+ U- [9 b6 M
B. BlogDAOException.java, n! n: X* v, y) k9 V
3 W _9 f6 v" ~5 ^0 }* h
: S; q/ a) T; i+ r8 @四、 实现域模型(实体关系建模)3 F) ]. n8 n. L; @3 F) `
1. Java实现域模型6 ^1 T. Q! v$ J, d0 g9 o3 H( O* O+ y
使用Java语言描述于模型:BaseModel.java/User.java/Message.java/Reply.java
' ^, m6 E% b! e0 @$ w2. 数据库实现域模型7 N, W/ S2 ~; p% ]) c3 x+ `
使用数据库语言描述域模型:userinfo表/message表/reply表# J* G1 s- j$ s2 i1 y' [1 m6 \9 H$ V
3. 定义映射文件, J8 ~6 n+ l3 P1 X# a
; \- c3 e9 Z$ E) `
$ y9 o- v4 H. B7 O8 ^; m五、 基于Hibernate实现DAO
" y" b2 z+ u8 Z# O6 N- \/ v1. HibernateUtil工具类:简化Hibernate操作" o! A$ p# r" \" d3 H
2. HibernateFilter过滤器:事务处理
2 i7 I4 t1 v9 ]3. HibernateDao基础Dao:简化DAO操作6 ?3 ]. \" ~# s5 k- j$ H" C! z
4. 实现DAO B2 n( `8 @+ p. |) e* r) r$ J2 W
六、 基于dom4j实现DAO与表现层层解耦
- F8 x" [8 Z, j+ V R( C. m* K
Q! q. s7 {4 l/ L- x1 w/ t7 a" W& w S* \" d0 } q8 s' M
七、 DAO单元测试: _. y2 c/ n* v5 Z% \& {* S
& T) R0 ^1 S' Y3 H
# \6 E y4 K' o) o/ n9 G/ r八、 基于Struts实现表现层- P/ A$ |% F2 ~9 M9 M' h1 g
A. 用户管理模块
3 m u6 v% ^/ |3 z6 W( R! ~& G7 o* H1. 用户注册业务流程
# X! z# \3 c8 l p% G X5 ua) 配置注册页面跳转Action:registerInput.action9 M3 }8 F. g3 O3 m3 a/ U
b) 开发注册页面:register.jsp3 x! D+ K% ?- E9 |: n/ L% S1 `. e
c) 开发注册Action:RegisterAction.java/ RegisterAction校验文件
1 p- P0 P8 Z( D- |i. 获取并保存用户注册信息
/ S$ p& @+ s3 m1 y7 c0 K. W0 cii. 注册失败:添加注册失败提示信息;返回注册页面:register.jsp
& T( X+ {' m( R0 S4 v' L7 O; Tiii. 注册成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp
4 }. W+ r* q% P2. 用户登陆业务流程) |, m4 _3 F( q5 y1 s
a) 开发登录页面:login.jsp3 _5 R. }' Z; w F- a
b) 开发登录Action:LoginAction.java/ LoginAction校验文件* j$ l# [4 R5 W- P# v
i. 根据用户名查询用户信息( T" o; c0 ^6 M% Q
ii. 如果用户不存在或者密码不匹配则登录失败,否则登录成功
4 l" A# D8 S% W% N. Uiii. 登录失败:添加登录失败信息;返回登录页面:login.jsp
& `$ l, N9 D" r% @( p! niv. 登录成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp
+ l! N' A+ j$ x* FB. 博客管理模块/ z4 f8 g: d& j& d6 Q
1. 浏览日志业务流程
$ @- x( u- A/ e+ T6 Na) 开发浏览日志Action:HomePageAction.java
7 f3 Z' W y$ v+ @0 yi. 得到当前登陆用户的信息( l" k. {/ h; F4 Z1 ^
ii. 根据登录用户信息得到User持久化对象
2 X$ x b4 g' Liii. 返回到博客管理主页面5 k8 f3 d0 M' {' k# c! o
b) 开发博客管理主页面:homepage.jsp; s: a7 W) x9 O1 @& J3 G+ k
i. 根据用户持久化对象获取用户日志迭代输出
_- E. [+ L% h$ ^ii. 根据每条日志对象获取日志评论迭代输出8 C1 {+ r D Q
2. 发表日志业务流程/ B: R. H, ]# S
a) 配置发表日志跳转Action:messageAddInput.action
0 H* g* I5 C: d/ x" c# ]+ S9 Bb) 开发发表日志页面:message_add.jsp4 p3 t' R J4 G4 f2 I( P: n
c) 开发发表日志Action:MessageAdd.java/ MessageAdd校验文件8 ~: r' K: k) _/ o! g
i. 保存日志信息: y+ p; F6 S* G- Z/ J( N) K+ ?
ii. 设置提示信息/ }. F) `. s# }- |6 u$ P( Q
iii. 返回到博客管理主页面
& S6 u0 M: i1 C- J# r: E3. 修改日志业务流程
' g' C! @% _+ ]4 ?% Ba) 开发修改日志跳转Action:MessageUpdateInputAction.java9 D. @; Q( [. a7 \" w4 v3 F" Y
i. 根据日志ID获取日志对象
0 ?* R# _- k. m- @ii. 返回修改日志页面message_update.jsp5 o4 v8 h& E8 ], v" B: D# ~4 |
b) 开发修改日志页面:message_update.jsp
O( G9 Z$ M. }+ {& o. [0 Vi. 根据日志持久化对象获取并展示被修改的日志信息( N" T5 \+ M. y6 n. [
c) 开发修改日志Action:MessageUpdateAction.java/ MessageUpdateAction校验文件
+ M9 h! r8 ?% w( n# D8 H+ M- N6 Bi. 根据ID得到Message对象+ w( H: L" p- X, D5 D/ y, `5 B8 e! Q
ii. 更新数据
0 a8 ]. E2 q" U ~$ ziii. 返回博客管理主页面- l0 l) s1 z7 T9 Y
4. 删除日志业务流程' j# C+ ]0 E/ T
a) 开发删除日志Action:MessageDeleteAction.java
' e3 b O+ B5 J3 C3 M5 S" Ki. 获取当前用户ID) G8 a' @8 H! P5 N( |! X0 y
ii. 根据用户ID和日志ID删除日志
3 H) M) z5 z% x9 tiii. 添加提示信息
* A$ {% l9 ?% Biv. 返回博客管理主页面
# ? ^6 {) s0 e3 w5. 删除评论业务流程+ P. Y/ L, j8 u! r
a) 删除评论Action:ReplyDeleteAction.java
8 u- \% p) o* v& l% }* t* Si. 获取当前用户ID
; v8 ?/ U% v1 _ii. 根据用户ID和评论ID删除日志8 g p' }9 s/ E
iii. 添加提示信息* ^: l* K. p0 K7 B) H- l. n
iv. 返回博客管理主页面
: v. [) {- I8 l# \, U; ~# oC. 博客访问模块
1 S6 Z5 r7 ~) ?4 ~1. 博客浏览业务流程+ f- s* S/ v, B- C, a
a) 开发博客浏览Action:BlogAction.java( |" w- u" x3 I5 r- S% N
i. 根据用户名获取持久化User对象& |9 Z' N& }' w7 s o7 q# o9 v! g
ii. 返回博客浏览主页面/ \) w9 D3 T' [6 ~& j0 Q! d
b) 开发博客浏览主页面:blog.jsp2 a* G8 f" a$ n' \3 L
i. 根据用户持久化对象User获取用户日志迭代输出: G: ]/ P. {/ d, K P
ii. 根据每条日志对象获取日志评论迭代输出
' O+ z4 h; A' p+ _2. 发表评论业务流程
: b6 t7 f7 F% Z0 a# d% Wa) 开发配置跳转Action:replyAddInput.action
7 ^3 D- Q5 v* Pi. 根据日志ID获取被评论的日志对象message
. A, y# @2 {/ O1 _9 @ii. 返回添加日志评论页面" s1 {& c; O a$ D
b) 开发添加评论页面:reply.jsp" l; S, z" C, S4 N) B
i. 显示持久化的message信息(且使用隐藏表单域保存Message信息)7 Q+ C1 l" p& N- X
ii. 显示评论的表单
4 I" f9 |# P# Oc) 开发添加评论Action:ReplyAddAction.java/ ReplyAddAction验证文件
9 ~' d, h& N4 R2 Li. 获取并保持评论信息
8 u% Z' G7 ^2 t& f' Jii. 评论失败:返回添加评论页面reply.jsp(所以Action中应该保存被评论的日志信息)# K- h; j2 |- k/ }: t/ C6 P
iii. 评论成功:返回博客浏览主页面:blog.jsp
8 f/ o( f; h6 l4 H- P2 c' r* L; M
基于Struts +Hibernate开发的博客管理系统源代码
# ?$ c' ~8 q: e3 Z. ?% a0 f* c/ c% s
2 l. e) _9 I( M3 {) m解压码:
2 V4 f0 P$ B7 x% Q# B+ I- S
2 {$ o5 K' a- o7 k, b H t
1 I& E9 ?4 u9 W( e2 m* G1 ~5 k/ r: k1 q5 o1 x9 L4 Y+ }
|
本帖被以下淘专辑推荐:
- · 项目源码|主题: 28, 订阅: 64
- · 网站|主题: 1, 订阅: 0
|