该用户从未签到
|
一、 分析需求
) J- _ p0 `. p% N* J! u2 _1. 用户注册:任何访问者都可以注册为博客管理系统的合法用户. E! w9 l+ C$ Q4 q; }$ e u ]
2. 用户登陆:登录的用户具有浏览日志,发表日志,修改日志,删除日志,删除日志评论的功能% J0 G. F% e8 @# n
3. 浏览日志:登录后的用户可以浏览自己的网络日志和评论+ W0 @$ b" i- w2 k( U' G. W
4. 发表日志:登录后的用户可以发表自己的网络日志% H, \' p3 s& i; J6 T" O
5. 修改日志:登录后的用户可以修改自己的网络日志" z1 H1 n7 e c" L, ]$ e+ \ a
6. 删除日志:登录后的用户可以删除自己的网络日志, _3 u' R2 H& F" g4 H/ ?
7. 删除评论:登录后的用户可以删除针对本人的网络日志的评论
; U1 J1 @4 f$ X% O( ~8 F4 E$ m8. 博客浏览:任何访问者都可以浏览特定用户博客中的日志(按照博客用户的用户名浏览此用户)
' s! l4 u+ g6 I2 d9. 发布评论:任何访问者都可以针对别人的网络日志发表评论* _1 r# O6 S: F: u
2 F* a3 X( n6 S- }" X) j$ u2 D+ g) e! B
二、 分析建模
" X, T' b+ ?" u1 t [$ l1. 实体建模$ R1 R5 D# N2 s# y% S3 [& w
2. 关系模型
^! Q/ o$ k7 ^" i: Y/ Y( }* Q! \' ^3. 构建域模型User/Message/Reply% ]4 I1 r9 |6 E4 |' w3 k
$ p" Z) N" f7 b
) s x' s; O0 o7 o2 e2 K三、 项目初始化
: k7 b2 t- l& p( }/ `1. 添加struts支持
4 w8 V: T$ X; @0 J$ n" R# k2. 添加hibernate支持+ U6 J/ l5 n3 F5 I
3. 添加log4j/dom4j/common-lang.jar/mysql相关类库
0 C3 o% h2 J6 O y, o. S4. 定义系统异常类 f, ^( s% W1 f k2 }
A. BlogException.java* p) t: m# @6 ^. j5 u# A+ e$ l) |
B. BlogDAOException.java
" U/ \( i/ U) p0 {6 I" X5 C# N: T# Q
" N& N4 ~+ ~- d
四、 实现域模型(实体关系建模)
% A9 S/ j8 p' X% ~" W1. Java实现域模型/ N k; f- Y7 ~! h6 F
使用Java语言描述于模型:BaseModel.java/User.java/Message.java/Reply.java
* u' Z, V6 O, o/ ~3 ` e1 n+ d2. 数据库实现域模型
) S" D& h. q! s; f, q使用数据库语言描述域模型:userinfo表/message表/reply表) F: }% y2 b2 ~- e3 f
3. 定义映射文件4 P# X& v& H! k2 c. h1 N
: ]3 \' p4 x. [) V9 U- M
6 X! k$ |7 z, ^5 o' e五、 基于Hibernate实现DAO. z1 ]- m# A& r! P- @
1. HibernateUtil工具类:简化Hibernate操作
# p- {0 `, y& i7 U2. HibernateFilter过滤器:事务处理. E. |, \8 g& f5 q' T. j% t
3. HibernateDao基础Dao:简化DAO操作
$ t. c* f0 R( J. G: }4. 实现DAO7 k t( S. y0 Z. ?7 |) p2 B9 p8 y
六、 基于dom4j实现DAO与表现层层解耦/ h9 _5 U$ B8 e6 ]. p& E1 L
% i0 }0 K y' W# ~+ v" H. E! \7 X, W5 W R4 R+ \2 [
七、 DAO单元测试. [6 F0 U j+ b; t ]. i7 `7 c9 K
4 I) N; p( s9 \4 p1 U9 d4 |5 ]5 Y. `+ Z! Z1 z3 a6 d
八、 基于Struts实现表现层
P. ~# e* \( I+ x* cA. 用户管理模块/ n' h+ o; P y
1. 用户注册业务流程" q0 ?0 X: J; }4 N+ P0 ~% X$ }
a) 配置注册页面跳转Action:registerInput.action3 l& R9 t: x4 j* C, T2 \
b) 开发注册页面:register.jsp7 @+ ]8 C0 j& R' n! V, v
c) 开发注册Action:RegisterAction.java/ RegisterAction校验文件
+ z" j) Z6 W. ^, W0 Ji. 获取并保存用户注册信息
6 N4 N5 Y: ?2 f, p# x9 Oii. 注册失败:添加注册失败提示信息;返回注册页面:register.jsp" O2 j( X' q7 a8 v
iii. 注册成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp$ [) ^. F1 d' U
2. 用户登陆业务流程7 B2 c/ P4 G8 |* t
a) 开发登录页面:login.jsp
" c. l# V' i- D/ r* ^: p; Gb) 开发登录Action:LoginAction.java/ LoginAction校验文件
3 Z. o2 N( ?% b; Y1 g' Hi. 根据用户名查询用户信息% ^: r6 ~8 \2 q# G
ii. 如果用户不存在或者密码不匹配则登录失败,否则登录成功' z' n, q- u! g9 T
iii. 登录失败:添加登录失败信息;返回登录页面:login.jsp* j' m, W+ n# L# m: w6 F+ N' @
iv. 登录成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp
* e9 I5 L p) V m; ?+ {B. 博客管理模块
# ~& R1 r' Q$ E" I1. 浏览日志业务流程 K5 V8 [: p q3 T2 j$ w8 A
a) 开发浏览日志Action:HomePageAction.java4 L0 W& R& {5 m- ^5 h
i. 得到当前登陆用户的信息
( G& n: V) C6 E- z( hii. 根据登录用户信息得到User持久化对象; \$ n+ [$ \# o* A0 ^& C
iii. 返回到博客管理主页面
4 Y/ N0 l/ _" x8 z- mb) 开发博客管理主页面:homepage.jsp5 O0 {( P1 r$ k8 p
i. 根据用户持久化对象获取用户日志迭代输出
9 H5 _7 Q) |( ]* v$ r! N( wii. 根据每条日志对象获取日志评论迭代输出 `' @0 ]0 J1 v8 U# V' t
2. 发表日志业务流程
9 W7 S( a8 h! r7 f4 _9 r! x1 b) \; G- ya) 配置发表日志跳转Action:messageAddInput.action
) K# [! }0 ?: Ib) 开发发表日志页面:message_add.jsp
: a$ t9 u% ~ B& Y6 ?& P3 L3 Tc) 开发发表日志Action:MessageAdd.java/ MessageAdd校验文件
/ T4 A0 b% _' X/ Y7 v9 s" S$ `i. 保存日志信息
/ N1 ^( `& w6 Q5 z+ ~ sii. 设置提示信息
n7 c' p# B" ~9 `5 H$ Iiii. 返回到博客管理主页面
# W$ r/ C7 _/ j3 n% e! q3. 修改日志业务流程
$ W9 h+ O5 J3 E+ E8 Fa) 开发修改日志跳转Action:MessageUpdateInputAction.java% x2 |- H' w9 T& N6 f2 l
i. 根据日志ID获取日志对象! X( C& @8 C- }2 \
ii. 返回修改日志页面message_update.jsp
; j5 O+ c& {) i. J% J7 vb) 开发修改日志页面:message_update.jsp- `; Y0 U' ]1 z b- w
i. 根据日志持久化对象获取并展示被修改的日志信息
# R+ s- v! u& }/ o# \c) 开发修改日志Action:MessageUpdateAction.java/ MessageUpdateAction校验文件
9 c" a8 g' A4 a7 Wi. 根据ID得到Message对象% H0 O# _6 G$ `0 l0 \
ii. 更新数据
! J& f9 L) V4 ~iii. 返回博客管理主页面$ q4 q' C3 Y7 g8 i: f
4. 删除日志业务流程 O+ n# c1 P: A& Z
a) 开发删除日志Action:MessageDeleteAction.java4 N, L1 k b8 z0 t7 f
i. 获取当前用户ID
3 u% X7 p4 }; O2 H# Z0 Wii. 根据用户ID和日志ID删除日志
/ o# _! e" \3 liii. 添加提示信息* v# @5 N2 ]# I
iv. 返回博客管理主页面8 E% c: }/ c6 E# F4 a: K
5. 删除评论业务流程
6 _5 ^) |; j( ^a) 删除评论Action:ReplyDeleteAction.java! s% v* q t6 q' a9 Z
i. 获取当前用户ID
/ y* T/ `" t% m( a6 J; Hii. 根据用户ID和评论ID删除日志3 h; ~. z1 D3 W% b6 x
iii. 添加提示信息
' ?+ {0 B8 u- |; z, c. h4 uiv. 返回博客管理主页面
" m! |9 [) q7 Y: y" i, _C. 博客访问模块
$ W ?! o% s0 U1 }: @: \1. 博客浏览业务流程
: w, ^# o! u# }6 |8 Pa) 开发博客浏览Action:BlogAction.java
9 f0 V- o/ h- O! ~$ k0 ?& K& xi. 根据用户名获取持久化User对象% ~% i) r4 ~, ~
ii. 返回博客浏览主页面( c* c# H( x6 t s* `5 c
b) 开发博客浏览主页面:blog.jsp% z5 F2 {2 g* v, a& q) \% j
i. 根据用户持久化对象User获取用户日志迭代输出+ k0 w5 ?/ O4 W. c+ O; Y; _8 v
ii. 根据每条日志对象获取日志评论迭代输出& K9 P+ S9 p0 T1 ~4 r1 R3 T' g
2. 发表评论业务流程
/ _ L- X* C; `- m8 B: Wa) 开发配置跳转Action:replyAddInput.action
/ n2 Z/ T. R) f2 n! n9 P2 mi. 根据日志ID获取被评论的日志对象message
! `- J2 }; d0 Q+ P5 qii. 返回添加日志评论页面0 P6 k- T# K- x* Y) o
b) 开发添加评论页面:reply.jsp0 u" h( t/ p9 p4 k
i. 显示持久化的message信息(且使用隐藏表单域保存Message信息)
$ ~' @' U5 H/ fii. 显示评论的表单
9 }8 z l; A6 f2 G6 H$ |" bc) 开发添加评论Action:ReplyAddAction.java/ ReplyAddAction验证文件2 R3 _; U/ V( R* x6 l/ n7 r5 N3 d( F
i. 获取并保持评论信息! N4 @: E4 q2 P) ]/ D- J
ii. 评论失败:返回添加评论页面reply.jsp(所以Action中应该保存被评论的日志信息)
3 @/ M' V6 E6 O: o, eiii. 评论成功:返回博客浏览主页面:blog.jsp8 U" F- }2 r3 C4 ^" o* m6 B V; \
% @" I }, w5 s' g; f! p; R* ?基于Struts +Hibernate开发的博客管理系统源代码
0 E% q4 P( s1 H% R" O/ c$ h3 H4 t& m& H9 y# j& R2 C: G- y( _
5 V# z* _- a/ q* I2 x6 G解压码:: }9 O, W5 U- P1 H% Q b% g
2 Z' U* R# L" m" D' k
, i6 Q+ @, L( Q
, @/ F. C+ O% s ~0 o b+ W& X+ c |
本帖被以下淘专辑推荐:
- · 项目源码|主题: 28, 订阅: 64
- · 网站|主题: 1, 订阅: 0
|