该用户从未签到
|
一、 分析需求
/ q+ g. M. F) r9 o* z/ ^1. 用户注册:任何访问者都可以注册为博客管理系统的合法用户. a' N' t/ N9 K8 |+ w
2. 用户登陆:登录的用户具有浏览日志,发表日志,修改日志,删除日志,删除日志评论的功能
7 t( w3 U5 G! L! J' w3 z5 l$ q; w3. 浏览日志:登录后的用户可以浏览自己的网络日志和评论
( C8 v% N. `2 i4. 发表日志:登录后的用户可以发表自己的网络日志
% ]0 m4 p8 E- H/ q- |5. 修改日志:登录后的用户可以修改自己的网络日志
+ r, I1 s+ x( ~; z4 {% \) R6. 删除日志:登录后的用户可以删除自己的网络日志
$ C* I: F3 c0 H& B9 X$ {! n7. 删除评论:登录后的用户可以删除针对本人的网络日志的评论% V* G6 |, j0 T. `7 U' p. X# v3 E' W
8. 博客浏览:任何访问者都可以浏览特定用户博客中的日志(按照博客用户的用户名浏览此用户)( B5 Z' F5 H# L1 b- G8 Q! m
9. 发布评论:任何访问者都可以针对别人的网络日志发表评论4 n6 L4 ], n% O* a6 N: r
+ |3 R% u# `4 I: B! T; a4 a5 J+ Y
2 [2 q3 E$ E; b6 n二、 分析建模
. L8 K8 a5 I: M- M$ z" |+ {1. 实体建模- L$ s- O1 O: S9 V
2. 关系模型
; {8 @( ?3 \2 r6 f: b1 I: u3. 构建域模型User/Message/Reply" K7 ~; T# f% ]+ E
9 t* |' N! \3 N. d# k, _+ k: n" x; Q4 N
三、 项目初始化! ^, `+ u9 V+ A- I$ i4 }
1. 添加struts支持9 r `( Y0 h* o' _5 G& Q$ W( l- ^
2. 添加hibernate支持# [1 @4 |. L; C
3. 添加log4j/dom4j/common-lang.jar/mysql相关类库/ J" c0 V- b! N+ E& B
4. 定义系统异常类; k" z- a) n) s$ W1 e- a' n
A. BlogException.java1 f5 L. d! U1 C# R" W8 `, m
B. BlogDAOException.java
) Q/ s3 r( M( X* t0 n
& P- |- Y1 O+ W, G5 H
" M1 z5 P5 G. m& W1 x四、 实现域模型(实体关系建模)
( S) M% Q* V+ T( o1. Java实现域模型
) d0 ?0 B6 O9 v% B: \0 u# u使用Java语言描述于模型:BaseModel.java/User.java/Message.java/Reply.java# h- z2 J( m2 u5 r4 H$ l. c4 _$ `
2. 数据库实现域模型
- ^0 V: `* B1 W0 n3 T- G \7 l* _使用数据库语言描述域模型:userinfo表/message表/reply表
* H c( r4 X' g0 v* T3. 定义映射文件
" F$ H& c& y# M- o" K
8 B8 x j* k5 @; ?) V8 Y- C1 S3 E7 i3 O$ k* y `0 t3 f
五、 基于Hibernate实现DAO; A; q) c) g9 c
1. HibernateUtil工具类:简化Hibernate操作
; O4 s* ^( u: @0 I2. HibernateFilter过滤器:事务处理
5 ~# D* A% _5 T3 y3. HibernateDao基础Dao:简化DAO操作
9 P6 P0 g6 Z/ P% f9 ^* i d: }4. 实现DAO
' b$ O( _) Z* D六、 基于dom4j实现DAO与表现层层解耦
W2 Z6 |4 F l: H: Z3 ]8 x6 P; w3 t+ O" O8 f
% o, L) L( m: c
七、 DAO单元测试, M. |1 R j: C* m% `
, P( \7 {3 A3 Y2 ~' a3 i. @6 a8 l# |9 Y# T! [( j* I/ ]$ |, b
八、 基于Struts实现表现层( d' `8 d6 i4 h. N+ q0 y V% C
A. 用户管理模块
8 |& x" }+ T6 p* `9 T9 ?1. 用户注册业务流程
% W$ T4 t+ p: y/ La) 配置注册页面跳转Action:registerInput.action( q2 V4 k# j. Z( X8 ~& U3 U
b) 开发注册页面:register.jsp, R( Z& a D: a4 K
c) 开发注册Action:RegisterAction.java/ RegisterAction校验文件
: p- c \5 i% I1 n: k& i& Oi. 获取并保存用户注册信息- j6 q( X* L" q& S
ii. 注册失败:添加注册失败提示信息;返回注册页面:register.jsp
/ B: T, M: j, T1 D& fiii. 注册成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp9 N. }$ I' W1 I0 q( i
2. 用户登陆业务流程' h% M; v3 v4 @
a) 开发登录页面:login.jsp
$ |2 Q5 p1 o7 [5 P8 m$ G( N1 e6 z; Zb) 开发登录Action:LoginAction.java/ LoginAction校验文件
6 d0 j1 s4 {( n9 |2 O" X& Z% yi. 根据用户名查询用户信息7 C5 p) `* h' b; \, i4 g+ u& S; W
ii. 如果用户不存在或者密码不匹配则登录失败,否则登录成功
: i) U9 r/ W+ P: w, g/ g: |8 Piii. 登录失败:添加登录失败信息;返回登录页面:login.jsp" A: h* r: ~: R( O' p' ^
iv. 登录成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp8 j; [& j' I: a0 V
B. 博客管理模块8 x% u% B3 x5 p
1. 浏览日志业务流程/ e# _. {. Y4 V \/ \1 s
a) 开发浏览日志Action:HomePageAction.java; c; F6 q" C# @
i. 得到当前登陆用户的信息
8 f, S# m' N) i0 f. Aii. 根据登录用户信息得到User持久化对象- Q' V, n( {$ J0 L& ~+ G& ^
iii. 返回到博客管理主页面
" A" K' b5 L, g& H% e2 c+ bb) 开发博客管理主页面:homepage.jsp
( p1 K; I' J& h& Q: Xi. 根据用户持久化对象获取用户日志迭代输出$ [1 j( G8 x5 ^( E1 Z- d8 f
ii. 根据每条日志对象获取日志评论迭代输出
" j, _0 B; y3 K" x! r2 H2. 发表日志业务流程
I8 e8 l% G2 `2 u, Q7 ~& [a) 配置发表日志跳转Action:messageAddInput.action0 t2 E+ }' P2 g; Y/ T5 x" R
b) 开发发表日志页面:message_add.jsp! f! o+ G% W4 j- \9 C! i
c) 开发发表日志Action:MessageAdd.java/ MessageAdd校验文件( n( U& {8 a7 p5 P& F
i. 保存日志信息
0 U; Y! w7 S6 G: C: Kii. 设置提示信息
9 ]# j. L7 G- w, Z4 ]iii. 返回到博客管理主页面
9 r X. N/ o/ e# Y7 y5 _3. 修改日志业务流程* D8 }0 `7 D0 Z* u3 X
a) 开发修改日志跳转Action:MessageUpdateInputAction.java
: r/ U! w ~+ `) ui. 根据日志ID获取日志对象4 Z8 G7 {4 I) S! G* E, ^- R0 p
ii. 返回修改日志页面message_update.jsp
# F4 N; p1 z1 S3 O6 D/ P5 X3 hb) 开发修改日志页面:message_update.jsp
% C+ |( A3 M8 Zi. 根据日志持久化对象获取并展示被修改的日志信息
7 R& F) ^6 `* G1 l! I) M) n7 _c) 开发修改日志Action:MessageUpdateAction.java/ MessageUpdateAction校验文件
; k, B) Q7 B, b& k0 ?* }i. 根据ID得到Message对象* V) E) K+ W; c, u. x2 a
ii. 更新数据
- ~( @% v! @" a* k7 W8 Diii. 返回博客管理主页面- I7 q. o( J+ I8 @/ r8 Z
4. 删除日志业务流程
$ u5 V+ S# \" oa) 开发删除日志Action:MessageDeleteAction.java
+ j. D' u+ R1 `/ Z: Q, S% }* yi. 获取当前用户ID! Z0 S# g* c- _
ii. 根据用户ID和日志ID删除日志. w# o `# {& v: j+ m
iii. 添加提示信息6 Q3 b. \6 N, I3 b" x! t+ |: o
iv. 返回博客管理主页面
! U! `! z: {2 f! d5. 删除评论业务流程
% D/ e' Z- K K: [* I" B# q- ?a) 删除评论Action:ReplyDeleteAction.java8 m! Z. H% O1 Z9 I5 K5 c2 q
i. 获取当前用户ID- g# X* B: z: R8 y$ b
ii. 根据用户ID和评论ID删除日志
; G; H2 ?4 B5 Y3 G! J7 Ziii. 添加提示信息, @, Q) R* Z: @8 B& r2 N
iv. 返回博客管理主页面8 j- O$ i. ?; @1 d) N- F# W
C. 博客访问模块
/ E. T* W; z7 ^/ }1 A6 \) w1. 博客浏览业务流程, i8 ]4 J4 S8 I w$ x3 k
a) 开发博客浏览Action:BlogAction.java
3 Q4 f# o. V* r1 F r1 Fi. 根据用户名获取持久化User对象
; ~6 n; b# N+ V* `, r+ Y8 cii. 返回博客浏览主页面 F0 i4 }8 A- x/ O4 m! @0 c
b) 开发博客浏览主页面:blog.jsp$ p3 b" Y. e/ k7 L( Z* W4 Q/ Z6 }6 S: X
i. 根据用户持久化对象User获取用户日志迭代输出6 T8 n6 \8 R3 X7 h" v
ii. 根据每条日志对象获取日志评论迭代输出: x6 ]7 @5 j( o* K7 }
2. 发表评论业务流程/ j" i0 W! c3 f1 e
a) 开发配置跳转Action:replyAddInput.action! b$ ^4 ~0 g, ?
i. 根据日志ID获取被评论的日志对象message
* Q$ U; ~* D/ e" O: V) Sii. 返回添加日志评论页面
2 i2 \, Q% f7 R7 w) ?" r/ q$ Ab) 开发添加评论页面:reply.jsp# i2 q8 ]+ ^0 y6 e* Z
i. 显示持久化的message信息(且使用隐藏表单域保存Message信息)
; x0 I2 C+ S7 A; `$ Aii. 显示评论的表单
5 b% ]4 @, u: v/ ac) 开发添加评论Action:ReplyAddAction.java/ ReplyAddAction验证文件
; O( f$ z/ E bi. 获取并保持评论信息* t( G0 N$ _( G
ii. 评论失败:返回添加评论页面reply.jsp(所以Action中应该保存被评论的日志信息). @6 r- L9 @+ Y
iii. 评论成功:返回博客浏览主页面:blog.jsp/ K' Z6 Q* M1 _, V+ ], [
; B* u$ {- w8 h' R% I& c6 i3 z9 N, n
基于Struts +Hibernate开发的博客管理系统源代码
2 `5 o4 ^$ G% R9 m' \7 g
4 A! c8 O# H9 H6 [& Q* e2 \+ p3 Q8 g
解压码:) V$ ^0 _7 d( T$ C% [! o: E$ x
/ K$ F0 @) s% [/ P" A- n/ N
& Q% C' q( M2 D+ t. Q2 F4 k y2 D
5 N! T+ U3 a" t& Z6 A+ ?, H+ { |
本帖被以下淘专辑推荐:
- · 项目源码|主题: 28, 订阅: 64
- · 网站|主题: 1, 订阅: 0
|