该用户从未签到
|
一、 分析需求2 s. e: u7 y3 E: M3 l) U
1. 用户注册:任何访问者都可以注册为博客管理系统的合法用户" S, ?# Z8 p8 t% {4 U
2. 用户登陆:登录的用户具有浏览日志,发表日志,修改日志,删除日志,删除日志评论的功能: q0 s- F1 Y9 Z/ A9 | I0 g* V
3. 浏览日志:登录后的用户可以浏览自己的网络日志和评论
% G$ p' I9 `' y& R4. 发表日志:登录后的用户可以发表自己的网络日志
! q0 V; s, L% x9 m! F- h, o5. 修改日志:登录后的用户可以修改自己的网络日志9 e5 |3 i6 B; n% y9 e7 r+ I
6. 删除日志:登录后的用户可以删除自己的网络日志
- h* w' {5 \3 C3 }! z7. 删除评论:登录后的用户可以删除针对本人的网络日志的评论0 v: T9 i6 Y: _, B" r, r4 V
8. 博客浏览:任何访问者都可以浏览特定用户博客中的日志(按照博客用户的用户名浏览此用户)
- I1 e5 j( f- F0 ]9. 发布评论:任何访问者都可以针对别人的网络日志发表评论
/ z* C6 \% ` B" m2 v+ Z
+ r5 }' `2 v/ F3 ^. R
) r! |' L( X3 U, A+ Z& A, E二、 分析建模) p g6 c+ G) Q. F# Z) A
1. 实体建模
+ A3 S* t+ b! E6 |2. 关系模型
- |) H$ ~4 w+ V; ]$ ~: t2 |3. 构建域模型User/Message/Reply
+ U! {2 f& m; E, x8 ?: I+ ` {' v9 H8 t( k; r9 N5 {
- B) }& n3 V/ D& h9 \( d
三、 项目初始化
7 o0 \) O, K4 K3 D2 E! l1. 添加struts支持- D% l3 f, _$ V E3 |2 ]* v
2. 添加hibernate支持
$ f- y' i3 q7 ?% i0 \! `3. 添加log4j/dom4j/common-lang.jar/mysql相关类库9 W. e, G4 G) k; a& z# M. g+ `2 X( v
4. 定义系统异常类- L+ j' p, g4 Y1 C
A. BlogException.java2 J8 @! |( x- l; n
B. BlogDAOException.java
3 L) p, R/ E( U% U
+ K2 t" u7 g) C3 i
& d# k9 `8 y+ b" q2 P3 @四、 实现域模型(实体关系建模)
5 H+ n9 @ @% Y: s" u1. Java实现域模型) i: ~6 V' c7 Z: v+ J
使用Java语言描述于模型:BaseModel.java/User.java/Message.java/Reply.java
1 l& H& W# I4 s" f2 |& ?2. 数据库实现域模型$ a& }4 x- {; D3 S, Y- s
使用数据库语言描述域模型:userinfo表/message表/reply表
4 w$ Y' T0 P2 J7 k0 M! P( \& u3. 定义映射文件
) Z# [" N$ q2 `" o7 y2 o) Z8 x$ w7 ^; m8 R+ Z9 L- f
~9 I: A! u, g. Q+ b五、 基于Hibernate实现DAO; s" F* @" t/ U( y* p4 [
1. HibernateUtil工具类:简化Hibernate操作
8 a. u3 k2 w+ u; R' ^4 N2. HibernateFilter过滤器:事务处理
5 N# Q$ k- M( b( V0 ?3 R6 k% ?; N3. HibernateDao基础Dao:简化DAO操作
, h% Z" B, A& y* u4 L! t4. 实现DAO' ]4 a7 @. F' t/ W. X, M7 q
六、 基于dom4j实现DAO与表现层层解耦# v: F& Z- D, P1 O# N' W
5 \- p" n3 I/ P# O. F* K
9 @0 k5 Y2 O, z+ P- G: _/ \七、 DAO单元测试6 U& i; b5 M- h( {8 \6 R# [
3 K/ a9 b H& ], Z5 W+ {
# V! b9 ?# |" B8 y4 ?八、 基于Struts实现表现层
! X3 m' c% y( `$ V7 T% KA. 用户管理模块6 J, ~( ^! S3 I: p3 ]* Y
1. 用户注册业务流程4 ]! ?7 [8 ]: I. N8 H! F
a) 配置注册页面跳转Action:registerInput.action( p/ Y& e8 S8 w
b) 开发注册页面:register.jsp9 F! E3 W' d4 n5 _4 U) h; s
c) 开发注册Action:RegisterAction.java/ RegisterAction校验文件
" {% v1 _; N0 e; b. A3 di. 获取并保存用户注册信息5 _1 a- E* g4 H- s }
ii. 注册失败:添加注册失败提示信息;返回注册页面:register.jsp
8 c6 o' g3 j1 Z" D' ]7 z2 E: ]iii. 注册成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp
+ O. z! M+ F' W& d# U2. 用户登陆业务流程2 U( c( `9 H4 C. M f1 s
a) 开发登录页面:login.jsp0 i" j- @( H5 u( a3 D4 l
b) 开发登录Action:LoginAction.java/ LoginAction校验文件
+ d) ~/ P$ y8 y1 A. o$ }i. 根据用户名查询用户信息1 k# i' ~. E8 u4 ^, V6 U) ~$ z, A
ii. 如果用户不存在或者密码不匹配则登录失败,否则登录成功
5 q7 p$ F2 z3 n$ ^iii. 登录失败:添加登录失败信息;返回登录页面:login.jsp& S0 U+ h. `9 \( @* f
iv. 登录成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp0 h. s2 m9 P0 V/ I! ?
B. 博客管理模块
# G, a$ |5 K6 I9 z( |1. 浏览日志业务流程1 Y, ~5 C( u& S9 w9 p
a) 开发浏览日志Action:HomePageAction.java
: S, d* q j' M& ~0 ^i. 得到当前登陆用户的信息1 X4 E( j& v% f# A2 ~; e
ii. 根据登录用户信息得到User持久化对象
. A. o9 B9 D1 P% N$ \iii. 返回到博客管理主页面1 C; d9 S7 c9 ~1 ]* m5 J* z2 K* i; i
b) 开发博客管理主页面:homepage.jsp. B; h6 O8 I* O
i. 根据用户持久化对象获取用户日志迭代输出
9 y N# {: q+ M% u; Y5 B fii. 根据每条日志对象获取日志评论迭代输出
$ g6 W" x6 _4 P; I" ?( H f2. 发表日志业务流程
" X4 ]- H, j2 N* w! x3 qa) 配置发表日志跳转Action:messageAddInput.action0 B4 ?- H5 P1 s& T- m# L
b) 开发发表日志页面:message_add.jsp
# W& q4 b4 ^# I8 l6 H+ A6 V i ^c) 开发发表日志Action:MessageAdd.java/ MessageAdd校验文件/ q- o( l* f* f0 x
i. 保存日志信息# p3 l, @) E& @
ii. 设置提示信息
% i0 J5 ]4 Y, ]iii. 返回到博客管理主页面) A9 X) Y/ X8 T2 V$ ^3 e6 {: u
3. 修改日志业务流程0 m2 m0 R( k) V+ J$ E! V, S i
a) 开发修改日志跳转Action:MessageUpdateInputAction.java
' U: _* e& S' z! k t& |i. 根据日志ID获取日志对象
/ ~# [: F/ @$ I, h& G) ]! Rii. 返回修改日志页面message_update.jsp
7 S& y N4 i4 h1 j, |b) 开发修改日志页面:message_update.jsp. n* A8 Y5 @* N! v
i. 根据日志持久化对象获取并展示被修改的日志信息) D: z ?1 _ r/ N6 v
c) 开发修改日志Action:MessageUpdateAction.java/ MessageUpdateAction校验文件
8 D! K/ C& w7 K& N2 i1 k0 `2 ]i. 根据ID得到Message对象
! R4 K$ O3 J! ~% g' B1 e7 lii. 更新数据
5 q$ u* H+ |3 C7 X4 }iii. 返回博客管理主页面+ J3 o2 a0 R6 Q7 u
4. 删除日志业务流程- M! W: i' Y& E+ ^0 Q" M
a) 开发删除日志Action:MessageDeleteAction.java' i4 D6 q" w2 t& j
i. 获取当前用户ID
! ~9 R; E# }* l! r: \ii. 根据用户ID和日志ID删除日志5 H8 m1 ~2 I4 U3 H
iii. 添加提示信息
0 z$ E9 h9 A* R% `! w0 i+ kiv. 返回博客管理主页面
% ^6 ]5 s' U4 Z7 Q1 Z$ [# f5. 删除评论业务流程( s, d/ t2 U0 |/ F* K' i) c
a) 删除评论Action:ReplyDeleteAction.java
- n2 z" K6 K9 Z. w. } ~( si. 获取当前用户ID
3 b9 \( W$ u$ G7 Q$ iii. 根据用户ID和评论ID删除日志! `9 @* Z( ~. h/ M9 m0 J+ D: T% x
iii. 添加提示信息
6 v" ?( `- ~5 b6 Q( F/ {3 o7 L$ ~' hiv. 返回博客管理主页面
8 [7 y1 Q$ z1 c" Z1 W7 tC. 博客访问模块& \! |6 V( u6 N$ I, q4 L1 g4 z
1. 博客浏览业务流程% b) I0 p0 G7 E- C3 r8 K9 U
a) 开发博客浏览Action:BlogAction.java3 M0 J2 d! E9 _1 H& w/ A2 Y! B! v1 u
i. 根据用户名获取持久化User对象. b% r. {5 x" S+ P( w# e' y
ii. 返回博客浏览主页面
+ r# R. I4 o, Y. wb) 开发博客浏览主页面:blog.jsp
9 ^, \6 U2 ?9 i9 w. j7 T/ ^i. 根据用户持久化对象User获取用户日志迭代输出
. j3 d" f' r" ]7 U1 u% wii. 根据每条日志对象获取日志评论迭代输出) w4 E; `/ K; u( b/ v& C+ x) Z/ Z) W; r
2. 发表评论业务流程
; _$ A8 a! o& p0 V% T# F) A5 xa) 开发配置跳转Action:replyAddInput.action
' r9 m; r+ U" `/ |% z9 oi. 根据日志ID获取被评论的日志对象message
# e h' N3 W5 D8 B" o+ ~ii. 返回添加日志评论页面
8 Z- K- s8 v% Z7 S* X4 n4 E4 eb) 开发添加评论页面:reply.jsp6 K& p1 G# H0 f3 l
i. 显示持久化的message信息(且使用隐藏表单域保存Message信息); X( \2 b2 M8 X- X0 n$ }; @- i
ii. 显示评论的表单5 n& Z0 u1 |/ h! u6 {5 _
c) 开发添加评论Action:ReplyAddAction.java/ ReplyAddAction验证文件
$ ~& p, _. H2 u8 d; M. e' Gi. 获取并保持评论信息
/ ]" x; \2 q& @. u( G" A2 yii. 评论失败:返回添加评论页面reply.jsp(所以Action中应该保存被评论的日志信息)0 _- T9 M/ L3 p' E/ V# w
iii. 评论成功:返回博客浏览主页面:blog.jsp! E) i9 s5 z8 J8 C6 p* X- r$ g
8 m6 h0 C( `# t+ `" \1 s! M
基于Struts +Hibernate开发的博客管理系统源代码8 W4 P, Q5 F; _$ }
@6 t+ l, B- k: Y* I8 z/ b) A
0 U, J6 u( m, i, N4 P% t( b, I, i& W解压码:
% B% }! b/ O7 G- v5 |
) `/ x4 S+ `) x& [; U( A9 ]2 o
- W- Y7 h: g5 R/ l }
2 O, ], J' S% S' | |
本帖被以下淘专辑推荐:
- · 项目源码|主题: 28, 订阅: 64
- · 网站|主题: 1, 订阅: 0
|