该用户从未签到
|
一、 分析需求$ g2 M0 c+ K% b" e
1. 用户注册:任何访问者都可以注册为博客管理系统的合法用户) q- d' m8 z# L5 ^* E( Y: X, j
2. 用户登陆:登录的用户具有浏览日志,发表日志,修改日志,删除日志,删除日志评论的功能
7 W3 g0 g7 H4 t$ Z3. 浏览日志:登录后的用户可以浏览自己的网络日志和评论
# v+ {8 ?- R% u$ g4. 发表日志:登录后的用户可以发表自己的网络日志: p- g9 q/ G" ?; U/ o# u6 M
5. 修改日志:登录后的用户可以修改自己的网络日志$ x* B5 c- j, n
6. 删除日志:登录后的用户可以删除自己的网络日志, l5 T' j. R& Z
7. 删除评论:登录后的用户可以删除针对本人的网络日志的评论
/ Q( p8 o+ b0 h/ [/ g8. 博客浏览:任何访问者都可以浏览特定用户博客中的日志(按照博客用户的用户名浏览此用户)
# D. H9 E; R( P3 Q6 K% {9. 发布评论:任何访问者都可以针对别人的网络日志发表评论
8 \: U# O0 p" @3 ^& R- x: V7 y/ @; Z, t# ~' g$ B
& O- r7 B) N4 j/ _
二、 分析建模" s; X, F1 k# F4 V+ `% [
1. 实体建模" ^, }4 a. \: d5 [* N# s
2. 关系模型4 d6 B& Z- R* R0 e7 {" ^
3. 构建域模型User/Message/Reply8 h" T6 a. ]+ f4 u: o$ O7 Z( E
: \; L9 p% q+ i& G/ z. f) B; ?" k9 I3 D% E
三、 项目初始化
1 b" j- P8 D$ g' L1. 添加struts支持 p% q5 s: d3 z/ [3 y$ T
2. 添加hibernate支持+ l3 Q; F' W* ~# [4 T6 O. R
3. 添加log4j/dom4j/common-lang.jar/mysql相关类库
; H# E- v5 X% {4 v2 g5 L4. 定义系统异常类
' J' e) \! K* wA. BlogException.java
: ^- I y. D, c/ Q+ NB. BlogDAOException.java
/ B3 S' K, J/ @/ q- z0 ]8 ^8 l
1 V7 \% ^( d+ ?( A" ?# e Y
: S) m' N+ M( t/ o9 [四、 实现域模型(实体关系建模)
! B, K# B$ a$ ?3 U! y1. Java实现域模型
U) O( s; F8 Y3 z2 }/ E使用Java语言描述于模型:BaseModel.java/User.java/Message.java/Reply.java# `! q0 |- M% @1 b8 E
2. 数据库实现域模型% X( D. Z# c: A9 y+ U. ^/ G! \
使用数据库语言描述域模型:userinfo表/message表/reply表5 V$ K, r5 R5 A& i
3. 定义映射文件5 Q$ o, N& ?3 w: r' W' S
, W* ^7 Y* I+ y) H% ?! c
7 O- I# O# o, i' R) |6 m" j3 E
五、 基于Hibernate实现DAO
6 @# T1 F6 v$ i* M# f1. HibernateUtil工具类:简化Hibernate操作- @! f# h! f# ?! w2 E4 x
2. HibernateFilter过滤器:事务处理
5 W$ X, c; z$ O5 S1 b3. HibernateDao基础Dao:简化DAO操作# G5 M/ i( E v3 J0 d
4. 实现DAO# z3 | V+ c+ u# [1 D
六、 基于dom4j实现DAO与表现层层解耦2 N& I' b* R# B8 {. d! `8 d
3 @; V) E4 j3 x! W* _+ M, y& e
" h6 |" p( [; S8 z% P1 G0 Q5 J七、 DAO单元测试
9 R1 k {* X# N3 b" E
$ }8 E. D) f% C1 |
+ I/ U5 [) {6 p9 ~0 I( [1 u* r: x' c八、 基于Struts实现表现层
0 ?7 ?* t9 ]% J* N9 fA. 用户管理模块& ?6 q$ {- Z5 Y# ]9 M, n
1. 用户注册业务流程 M: R5 u. X8 x* v! G3 J; ~( ?
a) 配置注册页面跳转Action:registerInput.action
! A, F# b, [& V$ Db) 开发注册页面:register.jsp
( H3 y" n* W/ i. [" b& v% W' Wc) 开发注册Action:RegisterAction.java/ RegisterAction校验文件
* J. i- [' g, {2 o* Ti. 获取并保存用户注册信息' q/ U+ D$ t* S: \
ii. 注册失败:添加注册失败提示信息;返回注册页面:register.jsp
+ A0 R Y) R3 r& | m1 ~& F/ Niii. 注册成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp* A1 l# Q( L/ m' H' y
2. 用户登陆业务流程
) K6 a2 N4 Q6 k: P; Va) 开发登录页面:login.jsp1 `+ h0 S6 G' @+ s
b) 开发登录Action:LoginAction.java/ LoginAction校验文件( l: K4 O% }1 D
i. 根据用户名查询用户信息
) Y/ A/ }' b" F5 yii. 如果用户不存在或者密码不匹配则登录失败,否则登录成功
7 x+ `, G g- A* j2 t( w* D( ] B Y% Q0 jiii. 登录失败:添加登录失败信息;返回登录页面:login.jsp: F: U; U) h5 x- Q' x" P
iv. 登录成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp
0 \. P4 _6 h2 U) }! |" IB. 博客管理模块
5 F ]0 t( K( ]$ [ k% N% C1. 浏览日志业务流程/ C. |+ f) P6 g" ^
a) 开发浏览日志Action:HomePageAction.java# K h# {) Q1 H; G- J" C
i. 得到当前登陆用户的信息5 c! x" S |6 I+ I% n
ii. 根据登录用户信息得到User持久化对象8 v8 C& X& Z' [( U$ @9 k4 f& P3 ?
iii. 返回到博客管理主页面) K: {6 o0 F" q7 U
b) 开发博客管理主页面:homepage.jsp
9 n4 ^9 c c F9 h$ Li. 根据用户持久化对象获取用户日志迭代输出
4 R8 M# u3 n: ^, r* ?) Eii. 根据每条日志对象获取日志评论迭代输出
( ?3 S7 {- H8 s! g2. 发表日志业务流程3 _! p n5 O1 H2 w: Y( c
a) 配置发表日志跳转Action:messageAddInput.action! k4 i" }" p0 W$ h2 J) t
b) 开发发表日志页面:message_add.jsp1 p- j8 F6 l# e, w2 `1 \# N& m
c) 开发发表日志Action:MessageAdd.java/ MessageAdd校验文件
( R' k4 Z/ J& R, m# X0 Pi. 保存日志信息0 M7 i6 n$ w# }4 t: W, Y, }9 h! G2 ?
ii. 设置提示信息
# e( d; v7 W/ ?& Niii. 返回到博客管理主页面
L2 x% a0 x5 ~& Z, C Y4 _3. 修改日志业务流程
Y+ j; i, g6 ]" Ra) 开发修改日志跳转Action:MessageUpdateInputAction.java
5 r6 |% F9 X7 Z2 g; l0 Ei. 根据日志ID获取日志对象1 v1 e% b9 J' j# a( q v( ~
ii. 返回修改日志页面message_update.jsp
# G3 Z5 h4 e( J: V `8 P+ e! J: Ub) 开发修改日志页面:message_update.jsp
4 H$ z1 q1 m( _- H" a8 ti. 根据日志持久化对象获取并展示被修改的日志信息
/ v$ n5 c1 l9 `& T% R& nc) 开发修改日志Action:MessageUpdateAction.java/ MessageUpdateAction校验文件
4 T5 f; v% E, C/ u# Li. 根据ID得到Message对象/ @2 C0 ?- h* S- q9 ]; m
ii. 更新数据
! [2 g$ Q( f- c+ e) Aiii. 返回博客管理主页面, }3 O% D1 q- R4 j# c
4. 删除日志业务流程# E- f: }, c/ O4 l; g% G
a) 开发删除日志Action:MessageDeleteAction.java
/ A1 k8 X$ ~' S7 p* t) V* e2 e6 Mi. 获取当前用户ID" s% }; G8 N f4 U& k
ii. 根据用户ID和日志ID删除日志
) ~ D. ~0 I T7 t9 P+ w8 fiii. 添加提示信息
6 ]5 ?4 H3 E, r3 Tiv. 返回博客管理主页面
) g' b& Z; A8 w5. 删除评论业务流程, F; \" I# K, c4 `- f; O: l+ T# A
a) 删除评论Action:ReplyDeleteAction.java, e( j o/ z d" a2 d
i. 获取当前用户ID
n, C/ ~0 T9 D( l% ?* uii. 根据用户ID和评论ID删除日志/ x+ Q7 ~' k |
iii. 添加提示信息
4 r" M/ c5 T$ d; [) V5 M# ~iv. 返回博客管理主页面
! v/ I: _$ \1 C: w' lC. 博客访问模块
% `+ G" a$ w' D8 W! v. |* d% r1. 博客浏览业务流程9 H% N; H7 e( W3 |
a) 开发博客浏览Action:BlogAction.java
: r6 C8 {5 G+ b& n8 @( r, fi. 根据用户名获取持久化User对象
* R% G0 f) j7 K5 G* `ii. 返回博客浏览主页面2 J/ ~( O( J# B
b) 开发博客浏览主页面:blog.jsp! X2 {. x, G! c+ V+ N
i. 根据用户持久化对象User获取用户日志迭代输出$ a# b7 y" I) @# T: @' e; A+ B
ii. 根据每条日志对象获取日志评论迭代输出
2 c) a: i3 u; ]! b5 q2. 发表评论业务流程1 k+ I5 r. X0 [$ d& l
a) 开发配置跳转Action:replyAddInput.action
4 v+ }2 T7 V. ], q6 Y! di. 根据日志ID获取被评论的日志对象message
, j2 _# |& y! R V" qii. 返回添加日志评论页面9 [6 G ?9 Q# d# R
b) 开发添加评论页面:reply.jsp
: H8 n) K6 t/ j* x+ `% ?i. 显示持久化的message信息(且使用隐藏表单域保存Message信息)* u$ N! i) t4 l9 H3 W1 q& D) F# S
ii. 显示评论的表单0 P, g# ^; U6 u. _/ q. n3 ~4 R
c) 开发添加评论Action:ReplyAddAction.java/ ReplyAddAction验证文件
9 t- v2 B# U8 z0 o7 bi. 获取并保持评论信息
* V$ V5 T1 P* B0 ]ii. 评论失败:返回添加评论页面reply.jsp(所以Action中应该保存被评论的日志信息)! X: F! A$ l. j& |0 l5 u8 ~1 ^# ~2 X1 \
iii. 评论成功:返回博客浏览主页面:blog.jsp n" w4 {9 {% S4 L3 \5 w
L5 s u' i0 y& Y$ f" S基于Struts +Hibernate开发的博客管理系统源代码+ Q) S" p6 J a# ^0 A. _
/ g7 C/ p1 |2 j
! w6 e* x( w) ]- O m0 |+ V
解压码:" s" H/ y1 K& t, {2 X# ~
0 I! E. w( m( a* S `5 y( a6 V
9 t7 V5 S1 Z9 L4 _" |+ }, I% Y( Z$ ~# S; e3 q8 X4 C8 [8 i
|
本帖被以下淘专辑推荐:
- · 项目源码|主题: 28, 订阅: 64
- · 网站|主题: 1, 订阅: 0
|