该用户从未签到
|
一、 分析需求( a* f5 }# t* o! E6 d
1. 用户注册:任何访问者都可以注册为博客管理系统的合法用户
0 Y$ U1 s3 y2 s2. 用户登陆:登录的用户具有浏览日志,发表日志,修改日志,删除日志,删除日志评论的功能* W' s8 Y8 c7 r5 ?- W; {
3. 浏览日志:登录后的用户可以浏览自己的网络日志和评论
$ ^% ~5 m l& h4 Q7 i8 \) ]4. 发表日志:登录后的用户可以发表自己的网络日志, C* ^, e( W+ ~* Z8 g7 I
5. 修改日志:登录后的用户可以修改自己的网络日志
3 g }' G* t; c" i& Z( Q6. 删除日志:登录后的用户可以删除自己的网络日志: l4 X( h0 E- R5 H0 Z& L
7. 删除评论:登录后的用户可以删除针对本人的网络日志的评论
$ Y m' p$ k( m/ x5 j8. 博客浏览:任何访问者都可以浏览特定用户博客中的日志(按照博客用户的用户名浏览此用户)
& f! A! U H4 o7 F. J6 {, |7 V) T5 B9. 发布评论:任何访问者都可以针对别人的网络日志发表评论
9 R$ ^' P! h- X" @
& z8 W! x! J2 n9 \$ T& O1 G5 i5 M) E+ ]
二、 分析建模6 e+ `2 j. L- p5 P) _+ Z9 E0 c
1. 实体建模# L% Z! D2 b- u. i0 _
2. 关系模型
7 y5 @9 U, Q8 q' N) _3. 构建域模型User/Message/Reply
# N& M' e. I3 v; A( A$ n8 h
$ X+ `% _4 h) f" a1 G; K; Q
0 {* Y, g* o* o% `三、 项目初始化
( H! j6 u' T, |# `; ?1. 添加struts支持
4 J3 {9 k3 {1 X! {( L9 p, t* e2. 添加hibernate支持
9 b+ k9 M# A5 M1 S- k* [0 }3. 添加log4j/dom4j/common-lang.jar/mysql相关类库
2 v' J* H9 A) f5 w. c4. 定义系统异常类% K4 Z# u% p. `2 V6 b% H
A. BlogException.java% K" l# \8 Q/ \1 b! n
B. BlogDAOException.java
0 _# W; P/ D0 c" M! @' G/ n& _3 J8 |7 W |. L& k
1 k: I+ C7 a( H+ f" x) j
四、 实现域模型(实体关系建模)
4 P* ? u0 }- v8 f+ V1. Java实现域模型; k- [/ k8 x) k# t$ l* n
使用Java语言描述于模型:BaseModel.java/User.java/Message.java/Reply.java
& v4 y0 {+ |, I0 }; _& a# |8 C2. 数据库实现域模型) R% N0 d4 ]* Q+ X
使用数据库语言描述域模型:userinfo表/message表/reply表( D! `: s) v* ]$ s5 x- ^
3. 定义映射文件! b, M2 d/ y6 u7 X8 n" K- s
9 }: l# s* j8 \' @3 A1 Z3 a- S# J. b a9 |- H3 v
五、 基于Hibernate实现DAO
. O5 |% X+ E( T% S& O* V1. HibernateUtil工具类:简化Hibernate操作; B9 O6 u# Z0 E& t. n& @; |/ ?
2. HibernateFilter过滤器:事务处理& O- I5 a: K5 p( y$ l. V2 T
3. HibernateDao基础Dao:简化DAO操作
7 I2 ?) E. ~- `- u- d4. 实现DAO, J# I6 w/ n+ N
六、 基于dom4j实现DAO与表现层层解耦
5 c8 x( V0 W8 j9 N
) O8 m9 n$ e) Z" T( l9 l( W& Z% ] o- y
七、 DAO单元测试: ` G+ X+ e# k y$ {/ O a# s
/ n0 u( ^# y4 a/ l5 l" P
5 M/ d" i$ i, `5 H2 {0 u t
八、 基于Struts实现表现层
9 B/ {/ t! z3 F3 k0 E$ q- w7 f1 gA. 用户管理模块! f: n7 a" ], j' Q' b8 @1 }
1. 用户注册业务流程4 O2 `% Z$ U8 }* j! |: Q
a) 配置注册页面跳转Action:registerInput.action
9 C: K; ?- X d7 l; V( xb) 开发注册页面:register.jsp4 Z( U# N. S: d h' Z4 G
c) 开发注册Action:RegisterAction.java/ RegisterAction校验文件
" I3 d% t$ M% f7 y7 xi. 获取并保存用户注册信息
8 @# o* y! b, C. S3 G' s7 |! K1 b; yii. 注册失败:添加注册失败提示信息;返回注册页面:register.jsp
/ ^; E$ U" w/ G, h7 Q! iiii. 注册成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp
6 L6 j" ~2 ~0 o5 F: i2. 用户登陆业务流程( k4 V/ f+ T4 b8 K! q% _5 r+ {/ q
a) 开发登录页面:login.jsp
; |! b$ ^# s3 D# u ^0 }- ?b) 开发登录Action:LoginAction.java/ LoginAction校验文件
3 S* u9 ^* Q2 D3 Xi. 根据用户名查询用户信息4 r% D) y" v' }8 G
ii. 如果用户不存在或者密码不匹配则登录失败,否则登录成功
\, P) o# V- ?) @) m4 i: y( b4 Giii. 登录失败:添加登录失败信息;返回登录页面:login.jsp
# K" _) f$ l$ I8 t% Z+ K" ]iv. 登录成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp5 F8 W; j8 d. d
B. 博客管理模块
5 Y# | L. C! T1. 浏览日志业务流程
9 Z! O2 c* Y$ O- i6 h, O/ aa) 开发浏览日志Action:HomePageAction.java$ }8 |' t" f! v" ?9 S
i. 得到当前登陆用户的信息& \: A1 g) I. L z; k5 Y) j7 \
ii. 根据登录用户信息得到User持久化对象
( i2 A3 L3 b9 P: u% kiii. 返回到博客管理主页面
2 L1 [$ r* q2 b u0 Ib) 开发博客管理主页面:homepage.jsp
7 y) _' M% d, G+ J( y+ f3 W. vi. 根据用户持久化对象获取用户日志迭代输出
& E8 {( @. B( C$ |; bii. 根据每条日志对象获取日志评论迭代输出
5 u0 [' U# R8 e# o) L2. 发表日志业务流程3 Q3 V5 U) W1 ~* T$ E# @7 ~
a) 配置发表日志跳转Action:messageAddInput.action, O/ j( q! f- h) @; d5 _
b) 开发发表日志页面:message_add.jsp& i1 v- d/ E/ x+ @
c) 开发发表日志Action:MessageAdd.java/ MessageAdd校验文件
" z( ^5 Q3 @$ x; ?2 w0 Pi. 保存日志信息# a2 R! `/ T4 }. G
ii. 设置提示信息
0 B4 i/ D i$ i4 diii. 返回到博客管理主页面 R9 r1 M6 j. L5 V% E. v
3. 修改日志业务流程0 B5 t+ w2 Z. }3 f& m) r" R
a) 开发修改日志跳转Action:MessageUpdateInputAction.java
4 Z: r( }$ k1 p0 Ui. 根据日志ID获取日志对象
$ r' b l2 V4 D+ I, S. h& y6 s- qii. 返回修改日志页面message_update.jsp
: T: q0 t( i% T4 k p1 fb) 开发修改日志页面:message_update.jsp- b8 |4 T# ~* Y) |+ a4 L0 a
i. 根据日志持久化对象获取并展示被修改的日志信息
, e8 T/ B: U" F; F ^8 Ac) 开发修改日志Action:MessageUpdateAction.java/ MessageUpdateAction校验文件
- _0 { r4 V$ `i. 根据ID得到Message对象% k* r" w4 @9 ]5 {# M% n& H
ii. 更新数据
/ S" B% E' [* o# \- Viii. 返回博客管理主页面
, M/ U b& K6 W" {/ F/ t8 i8 @' v4. 删除日志业务流程* I2 w7 a) L1 z0 K+ J+ f4 R
a) 开发删除日志Action:MessageDeleteAction.java. x% C k5 c# S( U! l
i. 获取当前用户ID
* q6 ~( z6 l w, Sii. 根据用户ID和日志ID删除日志
6 R2 f/ W* j. g3 biii. 添加提示信息
3 L* f% y- {: G: e5 |' Q! yiv. 返回博客管理主页面
3 S( [- u) O! a8 B3 r5. 删除评论业务流程
* e( s% k5 p9 N( |- G6 K! j: v, ia) 删除评论Action:ReplyDeleteAction.java
+ X6 w, S9 d1 Si. 获取当前用户ID
) n5 H- v+ M% m& `ii. 根据用户ID和评论ID删除日志4 X- Q# f9 z1 R+ R' m
iii. 添加提示信息
! ?- p- [5 h6 s' P9 eiv. 返回博客管理主页面. M- W4 v6 L/ q/ u9 ^- {4 ~1 |- l
C. 博客访问模块( j- e9 `! D P. [% h; _
1. 博客浏览业务流程
4 n8 f. H% @9 j' t9 \7 }% ia) 开发博客浏览Action:BlogAction.java
; b. H9 b+ o- g$ k) Bi. 根据用户名获取持久化User对象
5 g9 g: j* S T3 ~6 Zii. 返回博客浏览主页面
; J, V# D: c1 l0 \5 R( qb) 开发博客浏览主页面:blog.jsp# [$ i4 ^# D) v7 G; _( O0 j
i. 根据用户持久化对象User获取用户日志迭代输出
% l% S* D4 O5 I2 N" hii. 根据每条日志对象获取日志评论迭代输出
$ u( `2 k1 T5 N2. 发表评论业务流程; R: W0 t8 v! S( e- A1 \" m; Y
a) 开发配置跳转Action:replyAddInput.action; } x8 j% H7 u) e( T
i. 根据日志ID获取被评论的日志对象message" y+ y6 @' `7 U/ W% H
ii. 返回添加日志评论页面/ M. A( @% z5 [
b) 开发添加评论页面:reply.jsp8 b) [2 Y6 Q4 ]; w/ c+ R
i. 显示持久化的message信息(且使用隐藏表单域保存Message信息)
* H" `' B' g2 S0 h( C8 q- tii. 显示评论的表单
" {+ y1 P, `$ t8 sc) 开发添加评论Action:ReplyAddAction.java/ ReplyAddAction验证文件
/ A [! i9 n6 e( a5 Pi. 获取并保持评论信息9 T" G% Y) f% m% z, \+ Q
ii. 评论失败:返回添加评论页面reply.jsp(所以Action中应该保存被评论的日志信息)% b# v Q, Y$ x {/ k
iii. 评论成功:返回博客浏览主页面:blog.jsp
5 P( s8 G4 `1 a" S5 m2 n4 u" n
$ {0 k4 E, x, w0 V# V. B, Q$ o& |基于Struts +Hibernate开发的博客管理系统源代码
4 O" O A: M% l' H( I; n* `0 c c( n2 V8 ~1 c" [
) S6 F7 \6 \& G1 x* L
解压码:6 B0 S" }2 [9 v. I0 N) h$ ?) J
% M+ Y1 V% |0 q5 L% A7 P# B- {7 B* K2 C
8 e. K/ R9 L2 X% U( e
! F- W0 U" }8 ^ {3 d, X9 B: i
|
本帖被以下淘专辑推荐:
- · 项目源码|主题: 28, 订阅: 64
- · 网站|主题: 1, 订阅: 0
|