该用户从未签到
|
一、 分析需求
4 G5 }0 n. }1 O' C1 U' J( d# n1. 用户注册:任何访问者都可以注册为博客管理系统的合法用户
) m0 z# X- d& ]2. 用户登陆:登录的用户具有浏览日志,发表日志,修改日志,删除日志,删除日志评论的功能! ]9 z( G. B1 n* s3 R
3. 浏览日志:登录后的用户可以浏览自己的网络日志和评论
; D* j t5 r7 _4. 发表日志:登录后的用户可以发表自己的网络日志: c& W. T0 r7 C% q3 p6 b; Y7 P
5. 修改日志:登录后的用户可以修改自己的网络日志
5 Z8 k9 ~: e* M% j% G& ]+ ]6. 删除日志:登录后的用户可以删除自己的网络日志9 ]1 S4 \' {2 y; U
7. 删除评论:登录后的用户可以删除针对本人的网络日志的评论
$ N4 T" O1 U# D7 u8. 博客浏览:任何访问者都可以浏览特定用户博客中的日志(按照博客用户的用户名浏览此用户)
$ u% F: ^. i8 ], n7 H: e+ r9. 发布评论:任何访问者都可以针对别人的网络日志发表评论
& B% B1 o% _+ c5 X$ s s. e* Y# F% X1 ~0 g. [5 h
7 i. P- u: x+ l8 V7 K7 O: f
二、 分析建模& q1 u1 s/ [* V0 f$ D1 \% ]/ E
1. 实体建模4 q- _+ i, R! m% l
2. 关系模型
( F L2 }5 V7 \3 ~" v5 x3. 构建域模型User/Message/Reply9 [, }3 P) a2 \
2 e( R3 ~3 Q$ @ N8 T+ p1 l% {
- d( m* e4 y7 Y
三、 项目初始化: d/ P% A; l$ x& G
1. 添加struts支持
( H m. }2 N' N: v5 i$ e2. 添加hibernate支持
! {: h4 Q4 [4 z3. 添加log4j/dom4j/common-lang.jar/mysql相关类库2 S; L& v2 \& d+ B/ X
4. 定义系统异常类4 ^6 I/ b& f: D/ K
A. BlogException.java
7 C. w; o# |) ~& z' O! IB. BlogDAOException.java" Z' q( ~$ r& E5 k* ]- _& l9 w
1 ~6 F) R0 z. r. K7 K5 x
$ H: K, O" U; f# b* o! A9 U; e; K四、 实现域模型(实体关系建模)
" s5 ~. S/ U; E" V$ `! |9 Y7 k1. Java实现域模型
& k7 p1 o2 e+ u4 T1 }" C" S l; w |使用Java语言描述于模型:BaseModel.java/User.java/Message.java/Reply.java3 Q0 m, |& X& H" i9 W) w
2. 数据库实现域模型
" d1 C* s2 q5 f! O7 e. T使用数据库语言描述域模型:userinfo表/message表/reply表, [2 s# s/ f, W, ^- W
3. 定义映射文件
% Y3 e9 v8 O3 K/ c: n/ @. M$ k. V; o0 [( [, Y+ x- f
! P# @7 m5 ] S$ P7 v M9 v
五、 基于Hibernate实现DAO
& }" V# y- _+ k9 C% _; k$ J3 J% ^# |1. HibernateUtil工具类:简化Hibernate操作. `6 d9 ?" i. d u
2. HibernateFilter过滤器:事务处理
0 F8 v" Q7 w5 n% N/ X" W* k7 \! m3. HibernateDao基础Dao:简化DAO操作
, X% s8 I4 q8 z1 l& q1 I6 u4. 实现DAO
/ }+ q( G3 J; g六、 基于dom4j实现DAO与表现层层解耦
4 [4 U( Y0 I t! t7 Y1 k3 `" Z1 G- F; U5 n6 p- D! {1 N6 u+ Q
8 {2 y& q/ W7 n; c2 [
七、 DAO单元测试
* _, E; j( V# b
[5 ~* P1 N- E- C1 M5 y# c, U: f5 f, @1 q; p( w
八、 基于Struts实现表现层. T* z# t L ]% \/ I% \# W" x$ N
A. 用户管理模块
% g: d) n/ R9 H- y7 C1. 用户注册业务流程
- u% {. D$ @7 va) 配置注册页面跳转Action:registerInput.action- ?& _$ o2 k9 f0 F) |
b) 开发注册页面:register.jsp
. {5 }- R! Y5 `7 U$ ~) tc) 开发注册Action:RegisterAction.java/ RegisterAction校验文件
7 K& X( H. k7 V" k8 M; a- Ui. 获取并保存用户注册信息. q" ?, y& O! @( Q2 g
ii. 注册失败:添加注册失败提示信息;返回注册页面:register.jsp
! j0 g* |* U) [2 }3 U y$ h. Eiii. 注册成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp: P$ j" q% \- l% B( B5 h2 N' k4 v5 i
2. 用户登陆业务流程& @' r* A. T7 j3 e
a) 开发登录页面:login.jsp* c4 s$ L9 a- x/ D; U
b) 开发登录Action:LoginAction.java/ LoginAction校验文件- |# ?5 M. k7 |" K9 r
i. 根据用户名查询用户信息
4 @' |* G( `: o3 [+ jii. 如果用户不存在或者密码不匹配则登录失败,否则登录成功
+ E1 Q: k# c7 z. R* s' }iii. 登录失败:添加登录失败信息;返回登录页面:login.jsp- O$ A+ p0 r' S( v( H+ Y! c5 J
iv. 登录成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp0 U |% @ P0 M R9 r$ G% i7 J
B. 博客管理模块/ E* a7 z2 p6 c: \, _2 E3 E
1. 浏览日志业务流程2 X2 d3 G! Y0 Y/ \: u( y$ y+ \/ T
a) 开发浏览日志Action:HomePageAction.java
" C* h9 O9 X$ B( v0 N6 l# `i. 得到当前登陆用户的信息! Y: h) ~% }1 e" g: ]7 c9 n
ii. 根据登录用户信息得到User持久化对象* b0 j# V2 R0 \! P
iii. 返回到博客管理主页面 \" ]" O1 G2 l/ \% w# b" a, v
b) 开发博客管理主页面:homepage.jsp6 ` r4 t+ w% T0 H' P$ H- |
i. 根据用户持久化对象获取用户日志迭代输出
! S( c9 w, R7 I1 {7 Rii. 根据每条日志对象获取日志评论迭代输出" Q0 _$ g3 y7 ~! C( z
2. 发表日志业务流程6 I2 l- I/ J$ ]0 T& P
a) 配置发表日志跳转Action:messageAddInput.action* m1 w6 U& I* }3 S
b) 开发发表日志页面:message_add.jsp. Z- B! q$ P0 s' Q- e$ ^! V, `/ X
c) 开发发表日志Action:MessageAdd.java/ MessageAdd校验文件" g1 x, C6 f/ I$ n
i. 保存日志信息' ?: x" x. b7 y/ U- {+ Y
ii. 设置提示信息
/ k" x. O% s5 Y" X) ]& K9 Giii. 返回到博客管理主页面
1 A* A' h) `& l# C: J) Q! s' L- J/ R3. 修改日志业务流程
, F r. ` o# Y7 ?8 q0 ]. ua) 开发修改日志跳转Action:MessageUpdateInputAction.java5 c8 h/ v0 ^/ f% s$ @' M, g6 v
i. 根据日志ID获取日志对象1 s+ s+ }5 o4 c. h! L! h4 [
ii. 返回修改日志页面message_update.jsp" i& l1 U& G5 X
b) 开发修改日志页面:message_update.jsp5 g9 j4 b/ w# x2 f# ~
i. 根据日志持久化对象获取并展示被修改的日志信息4 _. x8 J/ m/ m2 t7 B9 n A7 T6 \
c) 开发修改日志Action:MessageUpdateAction.java/ MessageUpdateAction校验文件
( j4 Q) p; S2 M$ `i. 根据ID得到Message对象
5 m3 @, D* ]5 H8 Z4 yii. 更新数据( y. @0 e+ G) ?5 }* t/ C0 n0 @
iii. 返回博客管理主页面
+ b# A6 G9 M; F0 L4. 删除日志业务流程5 V8 H! l m" c# u
a) 开发删除日志Action:MessageDeleteAction.java
& Y- _, \( \2 zi. 获取当前用户ID
8 O* f" X* i# q+ Z+ O6 l. eii. 根据用户ID和日志ID删除日志
& T- `$ [5 H0 `4 j& e: m* f) H3 xiii. 添加提示信息+ q* J. n. W# x5 m& d& ?+ U
iv. 返回博客管理主页面$ X3 w# q4 |( n3 W1 z" j. Q
5. 删除评论业务流程
2 U. g$ e. V8 n. Ta) 删除评论Action:ReplyDeleteAction.java
( i( b) q' ~% i2 S* ]5 ui. 获取当前用户ID
8 p' b6 j6 }+ G0 x. uii. 根据用户ID和评论ID删除日志
7 f2 | `5 n& Y* L Kiii. 添加提示信息
! z# r f& Z$ U9 T: {! a) p" liv. 返回博客管理主页面: B- E: m% {4 p
C. 博客访问模块
, {0 Q! `1 y: t1. 博客浏览业务流程, I ?$ C7 m0 O
a) 开发博客浏览Action:BlogAction.java$ E3 K7 M! k+ V/ a1 K
i. 根据用户名获取持久化User对象
# v% I6 e7 X( A& n; `ii. 返回博客浏览主页面
' p6 \$ w5 \5 Q& Ub) 开发博客浏览主页面:blog.jsp% {+ ^0 {$ h2 p7 U1 z
i. 根据用户持久化对象User获取用户日志迭代输出
1 L3 I+ X, {4 ~# d7 iii. 根据每条日志对象获取日志评论迭代输出
6 z9 N) ^# O; C2 m, l }$ c; }! {- i2. 发表评论业务流程: h4 ?/ T' s" v5 x4 E
a) 开发配置跳转Action:replyAddInput.action
( ]7 m; e6 e$ c1 b( Ci. 根据日志ID获取被评论的日志对象message
2 k5 Z) Y, w* c" m. Gii. 返回添加日志评论页面$ H# @$ x: m7 \( s9 H* Z. f
b) 开发添加评论页面:reply.jsp, g! I& z- v' p
i. 显示持久化的message信息(且使用隐藏表单域保存Message信息)/ W& A! S/ ^5 F% @5 A: O
ii. 显示评论的表单
4 {6 T9 b) Z& |" c' N& J0 N; ?) sc) 开发添加评论Action:ReplyAddAction.java/ ReplyAddAction验证文件6 I* }( i, m% |
i. 获取并保持评论信息
`0 r1 b. Y4 \4 ]! N+ ?1 h# Yii. 评论失败:返回添加评论页面reply.jsp(所以Action中应该保存被评论的日志信息)- p& {9 R/ I# [3 ]9 H( d
iii. 评论成功:返回博客浏览主页面:blog.jsp. ^' F/ k1 c/ k% i
5 P! o- l8 j- P9 \% f% ?1 N( \基于Struts +Hibernate开发的博客管理系统源代码: K1 ^8 T4 S/ N2 e5 M: t
7 E: A1 p) z! h! U6 R5 k K) A; Q( A
解压码:4 { n x# d: o8 B% B& R) S
1 R) g# I. \. r- n
, T9 C& \- c2 k5 k4 d" o
( s X' C& p& x* p |
本帖被以下淘专辑推荐:
- · 项目源码|主题: 28, 订阅: 64
- · 网站|主题: 1, 订阅: 0
|