该用户从未签到
|
一、 分析需求 `, I9 m$ i4 ` t/ [$ w! ?& r
1. 用户注册:任何访问者都可以注册为博客管理系统的合法用户
2 Q5 T. V1 Y) z* s3 t! M2. 用户登陆:登录的用户具有浏览日志,发表日志,修改日志,删除日志,删除日志评论的功能6 T1 J/ {9 L e
3. 浏览日志:登录后的用户可以浏览自己的网络日志和评论( ^, a& X. i1 J2 M- [$ G
4. 发表日志:登录后的用户可以发表自己的网络日志
7 N& `7 m* U: r$ _5. 修改日志:登录后的用户可以修改自己的网络日志, E% W3 U9 b$ q0 m7 Z
6. 删除日志:登录后的用户可以删除自己的网络日志6 {, H$ b/ }# v
7. 删除评论:登录后的用户可以删除针对本人的网络日志的评论. j, q1 P9 P. l
8. 博客浏览:任何访问者都可以浏览特定用户博客中的日志(按照博客用户的用户名浏览此用户)9 Y$ C% \' g7 b+ M
9. 发布评论:任何访问者都可以针对别人的网络日志发表评论' m$ ~- |+ ^% C8 C) i
, m Y) G! D4 G1 L
* e1 x. T9 @: z! [+ `
二、 分析建模
3 ]0 O" J3 t) h" Q6 n1. 实体建模# i- y5 G5 w3 `3 k# ^" ^& c
2. 关系模型
- F- s9 d0 V3 {; W- O3 v9 M3. 构建域模型User/Message/Reply
1 ?1 X, ?0 A" \; o6 o# F
9 d- R, r+ ^7 y' \* a1 X, F8 _4 Q$ V0 I/ w$ v0 B% U- m
三、 项目初始化% Y G! X4 O1 i
1. 添加struts支持3 D7 {6 @8 D7 a8 s
2. 添加hibernate支持
9 B3 J4 b1 K) ]! M3. 添加log4j/dom4j/common-lang.jar/mysql相关类库# B0 C' v& _7 F- d
4. 定义系统异常类" S. M% C% _. X8 D+ v: G" a
A. BlogException.java
: e" s) Z* j5 l( s M- m: wB. BlogDAOException.java1 L3 \/ s" a( x- R) |1 X* o
9 ]2 d& J# K8 {4 @7 c' J7 |. }
! x+ Z) L4 G: B9 F4 i0 a" _/ y
四、 实现域模型(实体关系建模)
! `* L; s/ a, P! G7 d9 l1. Java实现域模型
8 L M" V; c; J" O$ M, u8 S2 C使用Java语言描述于模型:BaseModel.java/User.java/Message.java/Reply.java
7 m4 H" k( E3 h2. 数据库实现域模型" `# |, L2 _ F/ v
使用数据库语言描述域模型:userinfo表/message表/reply表9 O( A7 A( u# [ ~# H
3. 定义映射文件; q/ b. Y6 |# F4 R2 p$ \
5 t, f+ k* N- p1 j
- {( V: O2 S/ Z: K- [3 y五、 基于Hibernate实现DAO
. K! H, |1 c% \7 f3 s1 u( U1. HibernateUtil工具类:简化Hibernate操作
' x% m' Y$ O% l5 j$ |2. HibernateFilter过滤器:事务处理- R$ m+ Z( O; F: Z0 i, x
3. HibernateDao基础Dao:简化DAO操作$ z' { i3 c& V$ z
4. 实现DAO
- ]3 f0 Q4 P6 W" r六、 基于dom4j实现DAO与表现层层解耦: E' H! K# D% r6 d
. D2 G& D; p) ^1 m$ T, W2 r
' W2 O: G" z" o' { M
七、 DAO单元测试; _; W) `9 Q [' T& [( f/ A: P
0 f- V, q+ W% q) E: n- U4 v
& ]' c* k+ [0 M- _( f9 i1 y9 V八、 基于Struts实现表现层
. f& S, Q* b: t. r4 H$ c' r: V7 J8 _A. 用户管理模块5 f+ w3 P2 s6 w$ T8 k: F( |
1. 用户注册业务流程
' D* A+ W& L: R2 D9 ?4 @2 [& Ma) 配置注册页面跳转Action:registerInput.action
4 d$ A; Q; g2 A3 g% k- y9 jb) 开发注册页面:register.jsp0 d. m( n- l# B9 k- m
c) 开发注册Action:RegisterAction.java/ RegisterAction校验文件9 \; y( L5 B% f9 F% e* S" V: T5 I
i. 获取并保存用户注册信息* R& n& k) Y) D. T0 \
ii. 注册失败:添加注册失败提示信息;返回注册页面:register.jsp( i8 V& _- J( O$ R
iii. 注册成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp
, ]9 z# g7 \6 z: @. e% T9 |3 k2. 用户登陆业务流程
; \$ Q/ x! N: Z. ^2 ?a) 开发登录页面:login.jsp
9 K' _3 \" p3 h( w* b0 ub) 开发登录Action:LoginAction.java/ LoginAction校验文件
" l* [6 H8 P# d+ ]i. 根据用户名查询用户信息
- s7 t: R$ p- p7 M8 \2 I5 Gii. 如果用户不存在或者密码不匹配则登录失败,否则登录成功) b* }3 u5 S9 F; x; G4 C
iii. 登录失败:添加登录失败信息;返回登录页面:login.jsp* E& D6 f) @" |, `7 ]
iv. 登录成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp: m, x+ r! h4 H/ Y; k
B. 博客管理模块4 j5 [3 [. C+ m7 J9 [# g- z D
1. 浏览日志业务流程
: L6 `% K1 V) S$ Z' ua) 开发浏览日志Action:HomePageAction.java
6 ]4 W! A, F) u, e, Ii. 得到当前登陆用户的信息; O* I1 x R9 t0 q
ii. 根据登录用户信息得到User持久化对象3 p( [' Y3 c6 n* O. `
iii. 返回到博客管理主页面) ^: f! n% ^; D$ m! ~) L; D
b) 开发博客管理主页面:homepage.jsp5 a- K* @4 v2 ?" Q( }8 J! h" x
i. 根据用户持久化对象获取用户日志迭代输出! K. n* \1 P( g: u3 @/ m0 G
ii. 根据每条日志对象获取日志评论迭代输出
* {! P/ ]5 V. v8 m2. 发表日志业务流程
4 `8 F) I& l3 S3 wa) 配置发表日志跳转Action:messageAddInput.action
% c4 C0 T/ ]; M% sb) 开发发表日志页面:message_add.jsp
" N0 ]: k) {+ g5 S! r- l8 `c) 开发发表日志Action:MessageAdd.java/ MessageAdd校验文件9 \2 Y8 X S5 }, H" p/ `1 F
i. 保存日志信息1 ^' ?& E1 p' `
ii. 设置提示信息
; N' i& i# o' h& |0 i# Wiii. 返回到博客管理主页面 n& a2 q3 F2 A' j+ m% _6 k) ?8 N5 Y
3. 修改日志业务流程7 m" w2 z; J2 p+ l/ D {8 D! l4 X
a) 开发修改日志跳转Action:MessageUpdateInputAction.java
d- \' X1 f( I* |' ci. 根据日志ID获取日志对象
' K6 m) I0 i+ y; ]1 t, K9 I% jii. 返回修改日志页面message_update.jsp
t" y- T1 K; v1 }$ h g9 L% n eb) 开发修改日志页面:message_update.jsp
6 e k: x- _* g' U" m9 I$ Q6 j6 }i. 根据日志持久化对象获取并展示被修改的日志信息
% S' J f) E5 { R& s: {) lc) 开发修改日志Action:MessageUpdateAction.java/ MessageUpdateAction校验文件* o5 q# [" g! _
i. 根据ID得到Message对象& i. @8 k. w1 D1 d
ii. 更新数据/ _3 W; Q, {$ q) I& h! q( }. ~, k
iii. 返回博客管理主页面5 C; D" g; h" @( `* Z* P/ g% x
4. 删除日志业务流程
" j7 W1 W, c1 G- b2 I; S s6 ga) 开发删除日志Action:MessageDeleteAction.java
5 n0 x) \* ^. v8 e7 t6 ~( k* G9 ^7 P" Li. 获取当前用户ID
* Q: d9 V! O+ M Y% p- rii. 根据用户ID和日志ID删除日志
1 D8 T2 B9 l* T, \iii. 添加提示信息
3 S" @/ W$ n! e. ~+ ~9 niv. 返回博客管理主页面
; B) e- I/ ^! R3 N8 {" D2 W% }5. 删除评论业务流程# E3 A7 a# f7 O) h( E0 R
a) 删除评论Action:ReplyDeleteAction.java3 [+ q& Q9 X# h) M9 b' e
i. 获取当前用户ID
2 A0 h5 W+ ]- j/ }6 c" Xii. 根据用户ID和评论ID删除日志
' K* `4 k! R% Z8 ^/ U$ \iii. 添加提示信息! t2 |7 S- T# I. ~9 y& X3 O
iv. 返回博客管理主页面
% t; M B$ D8 C! o% H8 EC. 博客访问模块
, k5 n; F1 v& @1 g" r8 |$ }/ ^1. 博客浏览业务流程- M% Z9 @$ Z/ B& X
a) 开发博客浏览Action:BlogAction.java% x7 R1 o% I$ ^0 o
i. 根据用户名获取持久化User对象' D& D; j5 f1 @% B/ S! [; O
ii. 返回博客浏览主页面7 y1 {5 g" V# N5 C8 A1 g
b) 开发博客浏览主页面:blog.jsp% K" G& h& c7 R
i. 根据用户持久化对象User获取用户日志迭代输出0 F1 x5 v" ^8 a) q
ii. 根据每条日志对象获取日志评论迭代输出+ ~9 `; s: [: X9 j" R8 F$ [0 x8 L; b; m
2. 发表评论业务流程3 y* _) m4 v1 n5 `6 L, H
a) 开发配置跳转Action:replyAddInput.action1 S6 D) p8 C* U" X0 d' j
i. 根据日志ID获取被评论的日志对象message
0 ?# V# V% E1 J3 I2 Eii. 返回添加日志评论页面
: {0 ^# K7 F0 O. t1 @3 d2 Kb) 开发添加评论页面:reply.jsp4 {& H: V5 |' |0 n% M# W
i. 显示持久化的message信息(且使用隐藏表单域保存Message信息)
4 Q& t5 {' g5 B C6 L0 Wii. 显示评论的表单, f- M5 m$ B" {. w/ L4 [4 Y
c) 开发添加评论Action:ReplyAddAction.java/ ReplyAddAction验证文件
4 i- i6 b& C2 U ]3 I: Hi. 获取并保持评论信息
4 t0 j& L, s; H5 jii. 评论失败:返回添加评论页面reply.jsp(所以Action中应该保存被评论的日志信息)$ F8 C% W1 E0 i3 R" f4 |3 \! @
iii. 评论成功:返回博客浏览主页面:blog.jsp% J: w! }, K/ ]% z3 L# `/ [ `/ Y2 g
2 z. U1 s% p3 w7 g& f* j
基于Struts +Hibernate开发的博客管理系统源代码
3 R( [ X2 K0 T' S1 J9 m, B) B( |2 l$ w1 Y+ C1 F5 g
' Y, V. g1 G0 }3 y2 i7 d解压码:
. b! P1 Z9 [: Z& k8 Z+ Y0 `8 }# l" _. K, Z, }# E- M2 n. Y
5 N" i. m. P" N3 z$ j- e: N Y4 U
9 q ?5 H3 |* \2 ?9 d |
本帖被以下淘专辑推荐:
- · 项目源码|主题: 28, 订阅: 64
- · 网站|主题: 1, 订阅: 0
|