|
该用户从未签到
|
一、 分析需求/ o; Z% u2 J1 o m. o# R$ V" d
1. 用户注册:任何访问者都可以注册为博客管理系统的合法用户) q: y$ L6 w0 G3 m( h6 M3 S8 N. a5 l
2. 用户登陆:登录的用户具有浏览日志,发表日志,修改日志,删除日志,删除日志评论的功能
' A8 L& {" E) P3 Z1 z7 [3. 浏览日志:登录后的用户可以浏览自己的网络日志和评论
9 z0 @+ B# a Y( w/ |4. 发表日志:登录后的用户可以发表自己的网络日志: P; Z- J- g( S" `: v, j3 |0 M
5. 修改日志:登录后的用户可以修改自己的网络日志
7 |8 u& g2 I7 h3 g6 x1 m7 y6. 删除日志:登录后的用户可以删除自己的网络日志- H: L7 C P: O' h" l
7. 删除评论:登录后的用户可以删除针对本人的网络日志的评论
1 F' X( C2 \: k& C* e( c1 Q8. 博客浏览:任何访问者都可以浏览特定用户博客中的日志(按照博客用户的用户名浏览此用户)$ s2 Y; b1 g" {7 v9 ^, n: R3 z2 ~ E
9. 发布评论:任何访问者都可以针对别人的网络日志发表评论. f9 l9 O- s" a9 e
' m" G, l$ d: D0 Y7 |7 ~; Y
+ t. Q; J g' ^二、 分析建模
8 Z) P* M8 S. T- E4 R9 S1. 实体建模7 x3 R: T" O* S
2. 关系模型
5 h v' a4 M0 K% v" |3. 构建域模型User/Message/Reply
r# X5 g9 g4 J" @
8 j, I8 R0 G$ H8 Q; ~2 l. k& T- S( b) J$ A4 j
三、 项目初始化
5 {# |6 Y/ A6 c/ M3 o7 i1. 添加struts支持# N1 ?* A0 g" G# m w# @
2. 添加hibernate支持! L6 U& V/ q% C0 @6 Q8 E( ]6 R& \
3. 添加log4j/dom4j/common-lang.jar/mysql相关类库0 S% `8 f" W, U f
4. 定义系统异常类
% \+ J3 [' M2 k) Y! cA. BlogException.java
0 C0 N2 I, Q9 {$ |: i6 xB. BlogDAOException.java* t; q9 Q/ ^* e7 E4 r3 A
, Z3 W$ o% Y& K
! x' g6 T- Q: d/ |% Y5 [5 V" |; ]四、 实现域模型(实体关系建模)
3 n9 u% U9 P# V$ W1. Java实现域模型
. K6 i, W( A2 W- O; L使用Java语言描述于模型:BaseModel.java/User.java/Message.java/Reply.java/ H1 z6 `7 M* [7 X" y+ s0 [# k
2. 数据库实现域模型7 x f, A. T2 X
使用数据库语言描述域模型:userinfo表/message表/reply表
& A8 T# z; G3 O5 w3. 定义映射文件
6 a& ^- @" T& V7 W/ ~3 D/ O- r- S- f- ~2 I
% K1 S T, I% \, A! ^1 L五、 基于Hibernate实现DAO
. p6 N' K" G' |' E. m9 T1. HibernateUtil工具类:简化Hibernate操作
3 A# L+ p5 K7 ^2 F% ^2. HibernateFilter过滤器:事务处理- v! T' f/ g8 S! N6 {
3. HibernateDao基础Dao:简化DAO操作* F& u% ]! B8 T" B
4. 实现DAO2 `6 o$ q* {5 P
六、 基于dom4j实现DAO与表现层层解耦
. F! Q- X( Y5 Y
5 ]3 A9 V$ j9 `. l+ i! l3 h# Y. Z# t0 c
七、 DAO单元测试( G* W( L I' E* F- `- c( S
7 l; e; l1 _! T; P0 R; R$ j3 }
: g( R' O$ Q4 K# E% B8 C* F八、 基于Struts实现表现层
" E/ J o5 E9 f& W! E0 QA. 用户管理模块* q' |0 s8 M5 s% ]4 I. A
1. 用户注册业务流程# o9 h8 r0 W7 J
a) 配置注册页面跳转Action:registerInput.action, ^; H2 ]" `' [7 ~ M
b) 开发注册页面:register.jsp
; @. S+ L; s. z# j1 Sc) 开发注册Action:RegisterAction.java/ RegisterAction校验文件
/ D1 Z! x q2 p/ A8 _i. 获取并保存用户注册信息
, D: _" V" O5 l. Fii. 注册失败:添加注册失败提示信息;返回注册页面:register.jsp% h$ }; S' K* C: Z% B, g
iii. 注册成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp
$ R# a9 I8 y, o& A( l* b2. 用户登陆业务流程
8 [: u* Y/ w h- F& r' v* Da) 开发登录页面:login.jsp
, L y- t& J# V, zb) 开发登录Action:LoginAction.java/ LoginAction校验文件. u" I! C% h) k" H3 h% B
i. 根据用户名查询用户信息, p* B0 |- {5 Z. G( H
ii. 如果用户不存在或者密码不匹配则登录失败,否则登录成功- [+ Y. K4 d4 x& M f% t
iii. 登录失败:添加登录失败信息;返回登录页面:login.jsp: c$ W, r5 j. b1 F& V- A+ B v! D
iv. 登录成功:在Session中添加登录用户信息;返回博客管理主页面:homepage.jsp
' L7 @9 A/ L2 i. V2 _- j) }- |B. 博客管理模块
" g3 b" |, u' k1. 浏览日志业务流程
" o3 f+ T9 M. A, U5 L# Ba) 开发浏览日志Action:HomePageAction.java
0 \# w( l& o" p! Z) Pi. 得到当前登陆用户的信息; ]$ V+ s6 A! W( _) a1 T
ii. 根据登录用户信息得到User持久化对象/ b( J8 r4 V7 z# ]8 |( a0 e L
iii. 返回到博客管理主页面4 B( A( l: A6 v4 E" f" ~5 R" |& |& Z
b) 开发博客管理主页面:homepage.jsp7 U4 e6 [1 g3 _6 I- r4 g! W- ~
i. 根据用户持久化对象获取用户日志迭代输出
E4 _6 R& z) u+ t5 v' G* z# Mii. 根据每条日志对象获取日志评论迭代输出
$ @0 s" [! L1 S. n9 u6 s. T+ ?0 w2. 发表日志业务流程/ J0 X0 `: X: X: @8 @+ A
a) 配置发表日志跳转Action:messageAddInput.action
+ d0 k* B6 z( g( J) j; [& }' \b) 开发发表日志页面:message_add.jsp
) _1 K! v3 b' }( ^) f8 bc) 开发发表日志Action:MessageAdd.java/ MessageAdd校验文件
w9 ]: w5 f* H3 T: }9 ^( ji. 保存日志信息: Y% L N, t6 H/ v0 ]" T
ii. 设置提示信息 d3 i: H4 y) D* \, U
iii. 返回到博客管理主页面
: \2 A3 N' T3 H4 v- T, C/ `3. 修改日志业务流程
( D2 D" H; f& ]. P; N9 g0 l! B2 ]' M8 sa) 开发修改日志跳转Action:MessageUpdateInputAction.java
- _4 `1 P/ q1 Q% ^. C" M# Bi. 根据日志ID获取日志对象
" J5 {' _( l! c7 n- Z1 |+ F$ ^ii. 返回修改日志页面message_update.jsp
1 H* m) @% F8 l. i0 F( B R0 o7 Ub) 开发修改日志页面:message_update.jsp$ Y! D( y" U8 I' h! Z
i. 根据日志持久化对象获取并展示被修改的日志信息
$ F& Z. w( G$ s7 r0 rc) 开发修改日志Action:MessageUpdateAction.java/ MessageUpdateAction校验文件
7 D: h! L( E( j: s" C5 p4 A/ L9 }i. 根据ID得到Message对象
/ I; ], \; w$ x' y9 C1 U( ^ii. 更新数据
' N+ I* a+ j9 |8 }6 t0 uiii. 返回博客管理主页面
& y$ f ~7 E% y* c- I7 J4. 删除日志业务流程
8 C, E4 U4 z3 U0 l4 O' Y5 Va) 开发删除日志Action:MessageDeleteAction.java0 T- K' U7 z. q! v: z9 [
i. 获取当前用户ID. f# r8 k0 Y7 g. A; h* k3 h
ii. 根据用户ID和日志ID删除日志
" }% s5 v$ U7 kiii. 添加提示信息
/ @ G C2 X$ m c7 D( t. d8 riv. 返回博客管理主页面
- h& h; r3 S5 {. C5. 删除评论业务流程
5 B( p! d+ p; f7 ]6 Ma) 删除评论Action:ReplyDeleteAction.java/ _, _& C* E x0 r, I5 C, H
i. 获取当前用户ID9 r+ E! D6 b0 ]3 V6 j! v
ii. 根据用户ID和评论ID删除日志: W* e( l7 F4 Z0 z I
iii. 添加提示信息4 Y( H$ X* S" k9 ?' h/ T) A0 {
iv. 返回博客管理主页面2 d' m! `: b5 V* H7 h4 |
C. 博客访问模块
" {4 K0 W' y- `- D C1. 博客浏览业务流程
4 J }8 e# L- [# fa) 开发博客浏览Action:BlogAction.java
$ j* S2 Q8 U' ^" @/ c* ~, Ai. 根据用户名获取持久化User对象; C* u$ f# @. `4 Z9 G! x
ii. 返回博客浏览主页面4 Z; X+ |7 S( n3 {
b) 开发博客浏览主页面:blog.jsp) k" U! Y& V4 p6 N* O. e& a
i. 根据用户持久化对象User获取用户日志迭代输出
3 G/ U; M3 W: t9 Q1 uii. 根据每条日志对象获取日志评论迭代输出
: X( h( d1 e' F, a1 O6 r+ Q$ p2. 发表评论业务流程/ {8 x) \+ \3 o- @8 b6 X n4 R7 a/ V
a) 开发配置跳转Action:replyAddInput.action" _# C% T$ {% c* c+ K
i. 根据日志ID获取被评论的日志对象message
6 v2 q& t6 I0 I. G( p/ x1 xii. 返回添加日志评论页面" j5 B* A4 X% K
b) 开发添加评论页面:reply.jsp
) }% M$ e) }1 B5 Z5 n; Xi. 显示持久化的message信息(且使用隐藏表单域保存Message信息)# P! o4 |: _, b3 |4 t
ii. 显示评论的表单
) r2 V4 ]! G& q1 K. w ?9 _c) 开发添加评论Action:ReplyAddAction.java/ ReplyAddAction验证文件
' Q& o& k/ M. e9 s$ ]/ Si. 获取并保持评论信息
9 O6 V$ g: ^4 U3 Yii. 评论失败:返回添加评论页面reply.jsp(所以Action中应该保存被评论的日志信息). v& e0 O/ ^* c( N
iii. 评论成功:返回博客浏览主页面:blog.jsp
9 o" q u* Z/ P9 o; `! x0 Q
- }: S, |2 x8 o$ ?8 x, E基于Struts +Hibernate开发的博客管理系统源代码
/ `% w, h' `+ \! u2 {
! N! C; u$ s: H! M; u7 m. ?6 e# G: B9 f' X" i K
解压码:
! o( B/ n) C ]) A! K6 w- Z1 D1 N- u- ]: o# f6 ~7 L
E: l" M Q: ]- F: C/ U
4 b- X- s. X( B, x% D+ ~ |
本帖被以下淘专辑推荐:
- · 项目源码|主题: 28, 订阅: 64
- · 网站|主题: 1, 订阅: 0
|