该用户从未签到
|
一、 分析需求9 P( a5 |1 r1 f
1. 用户注册:任何访问者都可以注册为博客管理系统的合法用户
2 o+ L M2 i* s- h: d) u- v: E' }2. 用户登陆:登录的用户具有浏览日志,发表日志,修改日志,删除日志,删除日志评论的功能
; z6 V% ^5 s" ` g/ P J3. 浏览日志:登录后的用户可以浏览自己的网络日志和评论1 w+ z [) M8 C9 K3 a8 ?
4. 发表日志:登录后的用户可以发表自己的网络日志: Z' Y n9 O9 P" A# }: r/ Z
5. 修改日志:登录后的用户可以修改自己的网络日志7 r" m3 q9 \7 n$ D( W
6. 删除日志:登录后的用户可以删除自己的网络日志7 [, c& W7 q. J
7. 删除评论:登录后的用户可以删除针对本人的网络日志的评论) D$ A+ J, F( E( o; e
8. 博客浏览:任何访问者都可以浏览特定用户博客中的日志(按照博客用户的用户名浏览此用户)! d m4 Y# p* q& l u
9. 发布评论:任何访问者都可以针对别人的网络日志发表评论1 ]2 B' {# ]3 i: Y' y, G9 Q
w8 w: V& p: K1 o U9 d1 n9 j
) [- D. F# i% e& h% F9 |! a* X二、 分析建模
$ A2 K% ]: B [" [8 ]0 N1. 实体建模( J" Y6 E/ M- d. `
2. 关系模型
" y$ N7 s5 G, H8 \: F8 l7 X% ~3. 构建域模型User/Message/Reply! A1 R# I s& R1 ~
( h' M+ g# W, F
9 x/ d( @, K0 w- L3 B7 `7 q三、 项目初始化
1 [ B8 z6 d4 ]1. 添加struts支持; Z# i! B7 I, {: @$ ]7 I9 {
2. 添加hibernate支持+ o0 f0 ?! M- T( l3 l4 {
3. 添加log4j/dom4j/common-lang.jar/mysql相关类库
* x! l1 e7 c/ R9 @2 u6 z4. 定义系统异常类0 ?; J& S k! V: V K
A. BlogException.java L) y/ J8 e, p% U$ R
B. BlogDAOException.java
O: l( A P X* e# P% n" \# V* |( Q) b( j7 n
8 A. i) r9 k, ^3 d四、 实现域模型(实体关系建模)' |9 d6 N' f& B, ?
1. Java实现域模型2 m% [3 l8 ]% H' E
使用Java语言描述于模型:BaseModel.java/User.java/Message.java/Reply.java7 J0 I/ R. f; f* I& P$ f
2. 数据库实现域模型
) q* G2 y6 u& _) z使用数据库语言描述域模型:userinfo表/message表/reply表
) b J5 O- r3 U* \3. 定义映射文件
]& f z2 K; z' o P9 m6 n! w; e/ V
* N, l6 ~" D& S) ]) w7 ] ^ K# X, H, k9 g! A6 \1 @# h
五、 基于Hibernate实现DAO8 |! M T, Z3 J2 v$ U+ e& g+ C
1. HibernateUtil工具类:简化Hibernate操作3 b4 _8 l% l) l2 V; Z: `
2. HibernateFilter过滤器:事务处理
' h9 g0 t$ t' K1 u3. HibernateDao基础Dao:简化DAO操作
7 Z8 u4 U% ~! ^. r7 d/ I4 J4. 实现DAO
, R8 ?$ Z$ T* ~8 Q1 }- w( h3 N六、 基于dom4j实现DAO与表现层层解耦 d5 v! [& {+ Y/ `% t7 s7 l
0 g, y) }( ]5 P: h3 Q
4 b% Y' C* d: i5 b: t$ _* P8 H
七、 DAO单元测试
3 c* I. {; _. N7 d0 @- H4 d' b- ]; p
, D! b# p. N$ \$ y% {6 j" [
八、 基于Struts实现表现层3 }: `! m u# j* J* n6 s/ J
A. 用户管理模块
& l' q% o( N0 p: p% D& p1. 用户注册业务流程) D+ w% ^+ e9 } ^5 X* a8 e. Q
a) 配置注册页面跳转Action:registerInput.action
- H! X" h) K! l; k ~b) 开发注册页面:register.jsp& a5 _- t* [! w4 j4 U# U5 O
c) 开发注册Action:RegisterAction.java/ RegisterAction校验文件0 p: j0 V% A- t+ }5 ^
i. 获取并保存用户注册信息$ u1 E+ Q# O& `* Y
ii. 注册失败:添加注册失败提示信息;返回注册页面:register.jsp
+ k. C y5 h9 Y2 i% Viii. 注册成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp
+ D1 K% G1 N9 _% L- Z0 |: X& e% d2. 用户登陆业务流程
, l, E" S' r6 T H0 ga) 开发登录页面:login.jsp
. ^+ J* F, t, d4 Ob) 开发登录Action:LoginAction.java/ LoginAction校验文件
+ D7 d( C' Q$ @. Y' hi. 根据用户名查询用户信息
8 B& c9 l1 s/ k* B fii. 如果用户不存在或者密码不匹配则登录失败,否则登录成功# e [( n1 K4 F& C- z/ y4 ?8 N7 N
iii. 登录失败:添加登录失败信息;返回登录页面:login.jsp0 F* V3 \$ V/ t7 S: q6 R- Y
iv. 登录成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp# R7 C# w0 K C; l: K! B
B. 博客管理模块3 Z+ u' k! q2 f" R6 `7 R. }& T
1. 浏览日志业务流程
4 T; C: |7 D& N1 Y6 N, Ia) 开发浏览日志Action:HomePageAction.java2 }; {- N( X. Y/ m
i. 得到当前登陆用户的信息! ^& s" |9 N: y3 D, W+ v
ii. 根据登录用户信息得到User持久化对象: c0 S) j# X9 P' }: \
iii. 返回到博客管理主页面
+ @. w; U4 T0 D; `# u9 i6 O. a8 M: \b) 开发博客管理主页面:homepage.jsp% x( E, D( x h. O. X0 [
i. 根据用户持久化对象获取用户日志迭代输出5 l5 ~; O, f; k* s1 I# t7 z8 @
ii. 根据每条日志对象获取日志评论迭代输出
# {6 b0 {& p# z0 q. k" {2. 发表日志业务流程7 {7 @$ q% {8 c
a) 配置发表日志跳转Action:messageAddInput.action" J7 y6 d$ c0 k( E. K7 Y8 ~
b) 开发发表日志页面:message_add.jsp
% B- C. r0 Y, p+ U I( O: ic) 开发发表日志Action:MessageAdd.java/ MessageAdd校验文件7 y4 T4 X+ ]7 M
i. 保存日志信息
4 {% o3 _# L; i" l! p) X( o0 yii. 设置提示信息
8 P; A. t' h0 giii. 返回到博客管理主页面
* U& c$ ?7 ^8 O3. 修改日志业务流程5 z4 ^% M3 E3 x; ~( F$ m1 @
a) 开发修改日志跳转Action:MessageUpdateInputAction.java
) E+ K- o$ r8 d. ei. 根据日志ID获取日志对象
: I4 Y/ n( v2 |7 A# Zii. 返回修改日志页面message_update.jsp
* Y5 F; H$ `! {6 X! f! Gb) 开发修改日志页面:message_update.jsp# W8 R( C9 K, K0 a/ _" [5 Z
i. 根据日志持久化对象获取并展示被修改的日志信息$ \9 w: H2 j7 m& Z: s
c) 开发修改日志Action:MessageUpdateAction.java/ MessageUpdateAction校验文件
' c& m* b- k) u' `: Q/ r9 \) zi. 根据ID得到Message对象8 v N! n. w: Q1 A0 F
ii. 更新数据4 M$ J2 P8 V0 O- [, }: S7 `
iii. 返回博客管理主页面& y# P# \7 J5 ^' D
4. 删除日志业务流程
. z7 y; ]7 o( E8 n8 ra) 开发删除日志Action:MessageDeleteAction.java
; T6 j. b. l+ H g; Di. 获取当前用户ID2 U8 X& \* h1 D9 i! Z) }
ii. 根据用户ID和日志ID删除日志5 S* K% E7 Q; r7 f/ v; H; ]* I
iii. 添加提示信息: ^+ v$ a3 Y& _. J* h
iv. 返回博客管理主页面8 u# N2 R; {' h1 V- v
5. 删除评论业务流程
. e1 b6 r6 z* R. J3 K$ Ta) 删除评论Action:ReplyDeleteAction.java o8 R) { E$ k
i. 获取当前用户ID
. K* t% E6 \9 [* kii. 根据用户ID和评论ID删除日志
, c$ K. | z7 G1 piii. 添加提示信息
9 V$ a8 j( D: w) F2 `- Aiv. 返回博客管理主页面( Y6 y2 m: ]8 N, X- G/ b
C. 博客访问模块
" @5 ?3 v# ` j& s4 H1. 博客浏览业务流程
2 s& [9 K$ r; T+ G( va) 开发博客浏览Action:BlogAction.java
/ h0 `' x8 q' N3 P: |0 ]i. 根据用户名获取持久化User对象
- L5 T$ w4 @) a# Y' oii. 返回博客浏览主页面
" S& n- a; y1 yb) 开发博客浏览主页面:blog.jsp
1 H3 S9 N8 K, T5 K1 ti. 根据用户持久化对象User获取用户日志迭代输出3 }) z0 n- R# N, s- p
ii. 根据每条日志对象获取日志评论迭代输出9 ]# f5 o. m* p: R% b1 m2 [
2. 发表评论业务流程; I$ j: R/ m+ n! t! T
a) 开发配置跳转Action:replyAddInput.action
6 ]4 S* b3 l. a C' ~' ]& gi. 根据日志ID获取被评论的日志对象message
2 \& ?3 y+ o6 i4 L! a; b& Rii. 返回添加日志评论页面
! P4 J7 J7 q, a2 e! s& F" @4 {5 m% wb) 开发添加评论页面:reply.jsp+ I, k8 Q+ D3 S+ {: R
i. 显示持久化的message信息(且使用隐藏表单域保存Message信息)
) t" t5 e. k& j! r! B8 ^; Z+ e3 kii. 显示评论的表单& K3 y/ ?* ?, ~% r+ d4 K# {8 e
c) 开发添加评论Action:ReplyAddAction.java/ ReplyAddAction验证文件
! q" P0 W$ b& K* ?( _i. 获取并保持评论信息7 R3 E' i- a& }4 t! O
ii. 评论失败:返回添加评论页面reply.jsp(所以Action中应该保存被评论的日志信息)4 R# B7 M8 ~ B$ \9 \ F3 F
iii. 评论成功:返回博客浏览主页面:blog.jsp
6 m; T) {2 ]5 E) s& o
9 \' O; U0 U& U' k4 @+ X5 K基于Struts +Hibernate开发的博客管理系统源代码
9 G) f+ _7 L; K4 _! {1 u% t3 _4 W" N$ q
P. J0 v/ r% K, a/ m解压码:2 `8 [2 Q* e3 h( E
|/ s) T- d3 a- [5 o) _8 y1 t6 Y: h. R. g
6 q; \9 |3 o; \/ ^# o2 E
|
本帖被以下淘专辑推荐:
- · 项目源码|主题: 28, 订阅: 64
- · 网站|主题: 1, 订阅: 0
|