该用户从未签到
|
一、 分析需求
! y: T q+ r9 k' _' i d1. 用户注册:任何访问者都可以注册为博客管理系统的合法用户- {3 [8 d4 c6 h- q
2. 用户登陆:登录的用户具有浏览日志,发表日志,修改日志,删除日志,删除日志评论的功能, w: R9 W! C+ x7 Q5 o: I/ m
3. 浏览日志:登录后的用户可以浏览自己的网络日志和评论- I! q+ j3 k* v$ u: g
4. 发表日志:登录后的用户可以发表自己的网络日志3 S6 Y7 w4 i. Z; ]6 W6 G/ R0 A- ^. I
5. 修改日志:登录后的用户可以修改自己的网络日志& Q$ j0 a( w, A+ B2 _# j+ Q
6. 删除日志:登录后的用户可以删除自己的网络日志$ @7 o l/ ?- P( k
7. 删除评论:登录后的用户可以删除针对本人的网络日志的评论
$ s" W7 l' ~$ m! O$ W, P8 r8. 博客浏览:任何访问者都可以浏览特定用户博客中的日志(按照博客用户的用户名浏览此用户)1 f0 N/ ~7 @/ L* ?# o! C% P$ T N( v
9. 发布评论:任何访问者都可以针对别人的网络日志发表评论1 n; E% f3 p+ t9 l
6 ?2 U2 I6 ?# |) _+ i- j6 z) E# P4 G4 V$ V4 x) b! S! Q
二、 分析建模! N% ^% T2 f4 S; W" ?4 H8 i
1. 实体建模/ d R A6 O5 ]- \0 r
2. 关系模型
& D1 U) E2 T* l' ^. ? [- x3. 构建域模型User/Message/Reply2 x7 G8 Y& f' c9 g0 W* }( c
& s, J1 Z+ K% H: |* |) _# k
; Q ^6 r& |. m- a/ d
三、 项目初始化' q4 y) P- l) g6 H8 C) l) ?. t3 p
1. 添加struts支持% n; l$ }- z. K4 V) `' N
2. 添加hibernate支持7 ?& j: o( g, g+ ]5 F+ ]
3. 添加log4j/dom4j/common-lang.jar/mysql相关类库, ~) ?. P* W/ g
4. 定义系统异常类 E# r9 A# `# E, w- H7 j1 Y
A. BlogException.java' u4 ? c$ Z1 H8 q1 |$ t/ Q* f
B. BlogDAOException.java) a* n5 v) \. l, g
% k& H# V( q1 s7 J( L4 g
. [/ o; p4 h2 z1 d1 |7 r0 l
四、 实现域模型(实体关系建模)
0 K5 r& }5 E8 s* B4 g5 r/ G1. Java实现域模型; s/ {- G( ^$ V
使用Java语言描述于模型:BaseModel.java/User.java/Message.java/Reply.java
8 S$ i, C2 u+ V2. 数据库实现域模型
7 W) s# c2 u9 j, b使用数据库语言描述域模型:userinfo表/message表/reply表
4 J+ f+ J, y6 o6 n: e" G0 m/ {3. 定义映射文件
# w; \8 l! g; O+ z3 \6 Q& H
, {+ a. t( q9 ~1 `6 G2 ?/ g1 n+ R! [% d4 q
五、 基于Hibernate实现DAO; K) C" F& M5 D
1. HibernateUtil工具类:简化Hibernate操作
1 Q+ J3 V" \' N( a" a& \- ~- W2. HibernateFilter过滤器:事务处理 ^/ T r0 x% U9 w& ^ a1 u
3. HibernateDao基础Dao:简化DAO操作4 v- G- A* H, P% \! A: E
4. 实现DAO
; o& C6 ?" W! U# G. h4 I: n六、 基于dom4j实现DAO与表现层层解耦
1 X1 c, m% K! [* E' i4 L7 f! S% [" [* _0 j0 D2 F% Y& d* I
6 r$ |1 z0 u1 t% `1 N9 j/ k3 ]
七、 DAO单元测试
% U) {+ A* ~9 |- s. H) `% z9 h. i7 f; z
# Y' r# K6 w% t% R- Z; h6 P八、 基于Struts实现表现层% z/ G5 d x* `; B9 B
A. 用户管理模块
( t( o+ s- f, J9 z, M2 J" c1. 用户注册业务流程
& V( \& x3 Y4 {# z" P3 `5 xa) 配置注册页面跳转Action:registerInput.action
5 p$ B% i6 T& N- {2 E, \b) 开发注册页面:register.jsp
5 L. H2 J" X A; [0 @c) 开发注册Action:RegisterAction.java/ RegisterAction校验文件3 C1 c, n) }, t1 d
i. 获取并保存用户注册信息7 b: M; O% x- O
ii. 注册失败:添加注册失败提示信息;返回注册页面:register.jsp! `! a0 l. n* m3 N! ?0 p
iii. 注册成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp9 J0 S2 F5 F9 x5 _9 I& ^/ h
2. 用户登陆业务流程
, @. P' J, S' _% J& h! ga) 开发登录页面:login.jsp
. x8 s+ [* ?/ _+ a* p3 bb) 开发登录Action:LoginAction.java/ LoginAction校验文件5 Y5 C: \. H. P, i1 o4 ?/ k
i. 根据用户名查询用户信息
) c( o8 s5 i# a" Q0 ~0 Mii. 如果用户不存在或者密码不匹配则登录失败,否则登录成功; b0 x3 O J* f" f! S4 u- f+ i
iii. 登录失败:添加登录失败信息;返回登录页面:login.jsp
, I; ?" W& ^' G! Giv. 登录成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp
E* g4 J& Z/ l/ MB. 博客管理模块3 V& }. t' p8 X! A
1. 浏览日志业务流程' Y- ~$ p, U8 g5 |
a) 开发浏览日志Action:HomePageAction.java! E: u) h! y: \9 ^( C6 P6 a
i. 得到当前登陆用户的信息- H( x1 k7 K% S
ii. 根据登录用户信息得到User持久化对象
9 c5 k0 d8 Y S3 J# u. n5 Oiii. 返回到博客管理主页面$ Z4 ? ~/ T% z& Y) C
b) 开发博客管理主页面:homepage.jsp
* b& V' t" m: I. v: {0 I5 Fi. 根据用户持久化对象获取用户日志迭代输出
+ s& d6 j+ ^( p, G+ b% oii. 根据每条日志对象获取日志评论迭代输出
+ X; Y9 i3 g, {3 H, P! p( H- E2. 发表日志业务流程+ `7 }* T# V( h+ }3 ]1 G) [( t
a) 配置发表日志跳转Action:messageAddInput.action
8 v I* v( {4 e# xb) 开发发表日志页面:message_add.jsp
~% S5 o. y4 F3 T+ g" ~c) 开发发表日志Action:MessageAdd.java/ MessageAdd校验文件
! H1 _: h9 y7 Ei. 保存日志信息$ ?! _* `4 Q# N7 g
ii. 设置提示信息% Q1 v# u) U. L1 ?
iii. 返回到博客管理主页面0 v' j/ A$ Q) }, V
3. 修改日志业务流程
0 N& U$ O, _; E- h1 Aa) 开发修改日志跳转Action:MessageUpdateInputAction.java0 W1 @! E9 @8 d, K0 W: Z
i. 根据日志ID获取日志对象
* w! k; ]+ K* e6 y8 jii. 返回修改日志页面message_update.jsp
# j. W. o" G7 k# Z4 `5 ~8 W, \b) 开发修改日志页面:message_update.jsp
) d+ y( q1 g0 S8 H7 f, J4 J2 ? qi. 根据日志持久化对象获取并展示被修改的日志信息! D" e" ^$ K" e
c) 开发修改日志Action:MessageUpdateAction.java/ MessageUpdateAction校验文件5 s" |. e6 u. `; K/ |) T& g
i. 根据ID得到Message对象0 s( w7 d# {* d
ii. 更新数据
) e6 y4 p- V3 Z$ N: oiii. 返回博客管理主页面8 j0 ~7 M A+ W/ ]7 N# { X. G
4. 删除日志业务流程- K/ s! c+ a7 m& @1 E
a) 开发删除日志Action:MessageDeleteAction.java
' Z; u# U; S8 e n' o9 J$ ^i. 获取当前用户ID
+ { E% H9 \7 u# Gii. 根据用户ID和日志ID删除日志
2 v0 A4 H9 q2 Wiii. 添加提示信息
5 s2 j0 x/ _+ V$ h! giv. 返回博客管理主页面
" t' T* x% u; e8 k6 V j+ h5. 删除评论业务流程* N* r% z8 x- I" Z- R+ Z6 Q9 E
a) 删除评论Action:ReplyDeleteAction.java- o2 m1 p1 m5 I M" q$ w# o
i. 获取当前用户ID- b0 J* Y( r8 i- c$ L- N
ii. 根据用户ID和评论ID删除日志9 {. ^( l. `( c$ E0 T& X! D
iii. 添加提示信息
0 M7 g$ n4 R: |3 i! x8 yiv. 返回博客管理主页面4 b" K; e- n! o5 }* I j. N" w
C. 博客访问模块+ r- E, M, L, e: c
1. 博客浏览业务流程+ P" g# y+ s/ x8 P
a) 开发博客浏览Action:BlogAction.java2 e2 Z# s: x: Q9 [
i. 根据用户名获取持久化User对象
1 m6 f3 t" Y6 g u1 Yii. 返回博客浏览主页面, w' L- p5 C% V$ u1 k' \0 G! X
b) 开发博客浏览主页面:blog.jsp
+ p7 v2 g8 Z2 F4 A! Z9 F# vi. 根据用户持久化对象User获取用户日志迭代输出) I8 Y/ x* r( p7 p
ii. 根据每条日志对象获取日志评论迭代输出* \+ i$ ?( d- E" Q0 m8 z0 a) D( A
2. 发表评论业务流程0 c3 ^5 v' J! d/ g6 a
a) 开发配置跳转Action:replyAddInput.action% t' ?" }. S1 t; m3 {
i. 根据日志ID获取被评论的日志对象message: [; N' f+ Q+ }4 M A3 b# r
ii. 返回添加日志评论页面# T/ y6 b' N0 a. y6 z1 p+ g
b) 开发添加评论页面:reply.jsp! ?7 `8 S- ?* P, n1 n! t% U5 k8 r
i. 显示持久化的message信息(且使用隐藏表单域保存Message信息)( V; i Z. T" u; W
ii. 显示评论的表单' ^3 ?1 \) O9 e0 c, q' F/ e; u
c) 开发添加评论Action:ReplyAddAction.java/ ReplyAddAction验证文件
3 E# p1 s) ]" x/ N% |i. 获取并保持评论信息
7 D2 S; I* k* X" Pii. 评论失败:返回添加评论页面reply.jsp(所以Action中应该保存被评论的日志信息)( }/ c& R: F$ J( _4 Q$ r
iii. 评论成功:返回博客浏览主页面:blog.jsp
+ D( e' z, k( Y p; S# u! w& ~# J, a7 _. n
基于Struts +Hibernate开发的博客管理系统源代码/ L4 e: _$ x1 [: t
& I% r% ~% V/ v8 s# \- [
" g- F8 _ j p" [$ S! ~( D8 ]
解压码:* t4 ]) L( E2 Z' G4 h- Y0 @
$ ^ U$ \+ j9 `3 @
# n0 k$ n- }' T6 q; P5 X8 K
% j( Q, D$ l& n# I6 u+ u' G4 K7 W1 W |
本帖被以下淘专辑推荐:
- · 项目源码|主题: 28, 订阅: 64
- · 网站|主题: 1, 订阅: 0
|