TA的每日心情 衰 2021-2-2 11:21
签到天数: 36 天
[LV.5]常住居民I
1.项目介绍
2 \6 E+ k( M) F, K' V* D 典型电子商务系统(在线购物平台)。模拟了当当系统部分功能。
! [2 P" r2 e& A7 h ^) m 2.功能需求, `$ N5 i) R9 m5 t- C/ C
1)用户管理模块(3天)user) w3 R9 U9 Q" p
实现登录、注册功能( I8 ^- B1 k$ E- ^: k6 C$ R5 @/ \
2)产品浏览模块(2天)main' w. E' z9 b. V" G4 W+ D6 q
实现主界面和类别浏览功能
" C" A; A* {; d m: K N- e7 d 3)购物车模块(1.5天)cart
% b, |* g% \/ W6 v$ z/ g {9 g$ d 实现购买、变更数量、删除等功能- _* R/ h6 i+ ]5 a
4)生成订单模块(1.5天)order
) p0 t' e6 L2 c 订单确认、填写送货地址、生成订单功能
: Z' G1 l* j! ^- Q7 V 3.技术应用
; w- Q$ i) J$ i7 E4 m, l 1)技术架构# h, `5 \ J# _% s, v* b. f( l- r
struts 2,JDBC(连接池),jQuery,Ajax
& F! M7 `) u+ f+ q: T3 `* v" j 2)设计思想' s- Q5 w- G) @) ?0 I3 v) U
MVC和分层设计思想
" o3 m% x( ?: \ a.显示层:JSP组件(jQuery,Ajax)- g! [5 S9 V: `
b.控制层:Struts2控制器组件、Action组件, b( _2 O1 o& K9 D
c.业务层:Bean组件
" n4 O# T3 G' c) f- ` i d.数据访问层:DAO组件(JDBC)
" O: J* {) Z, O$ Y# Z5 o2 j3 h
]; c6 F" c+ u7 \ 4.数据库设计
$ N& e m4 X X% T- {/ P* h9 d+ { 1)数据库导入
' [3 J7 ?% \ P# W6 A: n create database dangdang; //创建库- s( q ~+ s9 E: `& @* B
use dangdang; //进入dangdang库
0 [3 O1 p F- K8 I9 w1 V( T+ { set names utf8; //设置连接和发送SQL编码
" @8 Q) p$ u' L7 u source 路径/dangdang.sql; //导入sql文件1 z i& R- l3 [, T0 d
2)数据表功能
% v6 P, \9 z' B* M# D a.d_user(用户信息表)0 C- S, N# g3 _5 F5 d
存储了用户信息,涉及登录和注册功能
, z; A- V& c5 B b.d_receive_address(收货地址信息表)( ?) }* S4 |7 q \
存储了收货地址信息,涉及填写送货地址功能$ z9 N5 Z Z: s- r0 E. n1 |/ _
c.d_category(类别信息表)
3 h! h w* ?7 o# ` c5 k- G 存储了图书的类别信息,涉及主界面左侧类别菜单功能7 ~: O. L6 G) Y
d.d_book(图书信息表)
* [: n5 E1 d' o( [1 F1 E; J 存储了图书的特有信息,涉及产品浏览等功能1 p% @" N8 A1 E b* X, _' E7 G
e.d_product(产品信息表)
7 }6 r1 p9 F% R; s1 u( ] 存储了各类型产品的共通信息字段。; p- j9 [# z$ a5 f1 i* ~
f.d_category_product(类别和产品对应关系表)
- i" l) l. A# @' p 存储了类别和产品之间包含关系,涉及产品浏览功能
1 O* D1 T$ H; v/ o1 o3 l7 Y+ C! L g. d_order(订单信息表)
. ?- \1 Q0 _: W( _2 ^( o; T 存储了订单信息,涉及创建订单功能
$ H2 j$ f4 a: q$ ^0 p h. d_item(订单明细表)
0 j) I! D, b3 n/ [3 E& J6 K 存储了订单中所购买的商品信息,涉及创建订单功能。7 r- c) l: I7 V! R; D/ k5 q5 ^0 l
+ r$ d1 {5 m2 z& V3 _5 Q% A' O& h 5. 搭建工程结构
6 s1 n7 z# H) e- z 1)引入需要的开发包
3 f, W% B' m" e! r1 t* [0 B2 s struts2开发包, V. i. G$ y+ [1 H/ z
jdbc开发包2 f+ s: f. i. H, v7 K4 X! ]+ L7 ^
dbcp连接池开发包2 ^& L7 v& s( B) i# J
2)src文件结构, l8 c2 g3 U! x
org.tarena.dang.action :控制层
- b5 B3 C: \9 M. \- p org.tarena.dang.action.user :用户模块的action1 J; z3 q% f5 w" E$ O
org.tarena.dang.action.main :产品浏览的action
" `* s z" w7 Y* ?% K& c( G5 T org.tarena.dang.action.order :订单的action
" o% x# Z# H: ~# T: N( o1 h org.tarena.dang.action.cart :购物车的action( s- I: e6 T2 O* G/ e" v
org.tarena.dang.service :业务层! I3 R5 g6 |' m6 t1 O$ n5 f n
org.tarena.dang.dao :数据访问层
' _5 {; q, s+ I m$ \/ w. w org.tarena.dang.entity :实体类
% Y! @* K0 g- ~ org.tarena.dang.util :工具类
0 x. F( I" K; i org.tarena.dang.interceptor :拦截器" C. F7 L( q* E5 e5 t
3)struts配置文件结构
! D7 W! E( Q+ a) w: p" i& s* _ web.xml(配置Filter控制器)4 c0 ~9 H1 n; J: @- h
struts.xml (struts主配置文件)3 G5 k% L7 [5 b$ z
struts-user.xml(用户模块配置文件)
3 q3 d% H. S$ P0 t5 g struts-main.xml(浏览模块配置文件)
5 e* @' l, }+ H" S0 z7 m, O2 L3 { struts-order.xml(订单模块配置文件)$ P$ s3 A- T/ V
struts-cart.xml(购物车模块配置文件)
) B( O2 c7 u, n' v* I5 ^" f . p' t! |/ T8 x1 A9 {3 m' F0 F- N
4)WebRoot文件结构$ X1 o+ H. D+ w3 \- t, q5 p4 m
/user/* :用户管理的JSP
; G3 ~" e/ {- ^1 n- p% R, m /cart/* :购物车的JSP
1 M- s/ H7 }/ x! l /order/* :订单的JSP
8 @( K' `5 n7 {' c& H+ S /main/* :产品浏览的JSP' F9 h# }- ], i. Q) q
/common/* :页眉、页脚等共同JSP
! W% H N2 u: v /js/* : 放置js脚本文件* }0 m; G3 Z d" G9 \; ^ f0 `& A
/css/* :放置css样式文件
+ V# ^: O; [4 ~$ u: V /images/* :放置页面图片文件' N# e) E; }& J: g; ]
/productImages/* :放置产品图片/ E' G3 d. M2 Z7 {) |/ {
1 ^4 T4 P/ J" b- [" i; y' \ -----------------连接池的优点-----------------
4 w0 ^) M) O k7 {" I* x* j, k a.可以管理Connection对象,并且将Connection数量控制在一个安全范围内。提高数据库的访问安全性。
% C4 `" T( Z7 b: N9 n b.连接池中的Connection对象与数据库保持连接状态,避免频繁的建立和销毁连接。
& V+ |. P1 X) I5 r. G; z$ } ; s: o% [" ]/ F6 H/ s9 N; Y; [9 F
============用户管理模块==============
* e' t8 K6 k5 O" z0 N, Q6 H/ e# C 1.注册需求
/ n5 P8 T# L1 e4 v3 a& O2 O 1)表单验证(采用js+Ajax)* a z2 t5 [9 y) `, v% S' ?0 F
邮箱:非空、格式、唯一性(ajax)
' A' ]1 N6 j3 E) K( i g3 w+ p 昵称:非空、格式1 |% X& l( g/ S7 _
密码:非空、格式/ N' Y$ k$ c; b# a2 e7 q5 {3 R
确认密码:非空、与密码一致3 ]8 @7 C$ h$ s3 \2 E# @9 B
验证码:非空、正确性(ajax)
3 ?& @3 o$ r$ U, ]' G @
8 N! h6 A2 v& c6 t, o. K 2)将表单信息写入数据表d_user
8 G1 t8 K% b3 A* h 编写实体类、DAO、Action
( G# D; g" n$ {' {, v( W: Q 3)给用户邮箱发送验证码5 Z* g* G; n9 C5 [) `- ^
引入commons-email.jar,email.jar
! O* ]( q) a, n/ h3 R1 ] 参考EmailUtil工具类代码
" _3 O1 Q9 j; z. T 4)进入邮箱验证页面verify_form.jsp6 | ~1 I3 J; l! M5 w
) p0 V$ O2 z- c3 j4 V: {4 k( f
2.邮箱验证1 Z8 f5 F) @% r! C* F& g3 S
1)表单验证) ^1 M2 ~" k) e8 l" |9 V, u
验证码:非空、正确性(ajax)
1 P; I# j+ M. H* r Y, X9 I 正确后跳转到成功提示界面:window.location = "register_ok.jsp";, O# c- F6 C) v. g% M* C: q
2)Action逻辑
. K3 c* L" Q1 ^. Y$ L3 m. N- H B a.利用验证码去d_user检查
5 E. S/ a+ l/ h L2 ?& U" M b.如果正确,将d_user的is_email_verify字段更新成Y;不正确在verify_form.jsp提示“验证失败”. c; E% } R+ v/ R' Y6 ]
c.跳转到register_ok.jsp% y( S5 ^2 k5 R9 Q6 [5 {; g
3.用户登录 U& T% |7 D2 l
1)表单验证
+ c- z) D& `4 m* ?2 G4 p' a3 F% k 邮箱:非空、格式
4 ]( f+ g) f; w) c7 e6 x 密码:非空* _1 G2 u/ Y3 R2 V, G% _& I
2)Action逻辑
' m/ H$ Z) n+ t3 y4 O a.检测Email和密码是否正确,失败回到login_form.jsp提示
0 A6 y, `) w% z4 l& f! t4 R! f5 L b.检测is_email_verify邮箱是否通过验证,未通过进入verify_form.jsp
3 \' k, a7 X5 l; c3 A' @8 @+ s$ f c.更新最后一次登录时间last_login_time和IP地址last_login_ip。) x! [' D. N+ X3 ]7 s: M. J) h
d.将用户信息放入session。
/ X9 ?: [$ Q" j+ x: {5 a. Q e.都正确进入/main/main.jsp
1 C/ \' h# B* V- U" `3 ~ 4.main.jsp页面的页眉部分,显示用户是否登录的状态
8 X7 D. o+ G+ j 如果用户已登录,显示"欢迎XXX,【登出】"& e2 h5 C+ J# n! `0 q. ], U( e6 p: H4 ^
如果用户未登录,显示"【登录】【注册】"/ i7 s8 [" c5 \7 x5 n) c
- r5 X5 K. i; `! [$ T( i
数据库 模型 / m+ ]- l9 q% ]2 U3 O+ k
6 p4 i7 j6 `- j! e5 f
5 T$ R3 g; f( c8 a2 `" V4 B) q* q( S 效果演示图:
/ D) W9 n6 s4 K( f" L 首页演示图:' u; c) j( b6 t% }. \( h9 x
$ J4 f- Y& Q2 r; m3 a
* k( F) N Y# y" D/ n: I" V 注册页面:
: J# s U$ K8 r9 Y
5 B3 ? L4 e# [# X, P6 b1 s, |
邮箱验证页面:
0 S( o! p' F2 u9 ]. \
- X. V# H5 X- ~
验证成功:
# i7 p+ z* f6 ?/ m( d- R
- Z6 h3 L; M- X( ]. S2 l3 L( O% ^- e
用户在线状态:
! c; b6 h* H _' i; K
+ b: Z6 ]0 D. V" j6 K' K 用户可以购物了:
# w, w$ B$ G1 ^; @
! J6 g* u; K% V/ g7 A* Z/ y5 t
- {2 D4 G9 D( ]3 d o$ V( x _. p/ o 源码 下载地址:点击下载
0 c) [9 J2 N }# _. N; R # \ C W. V; V9 c0 `5 B
3 B" q1 U# W7 U) X. E! M* \ 数据库下载地址:点击下载
5 Q- F6 H1 G4 t. U& J
( [+ e( p- n6 W* y, j, Z
科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关2、本站所有主题由该帖子作者发表,该帖子作者与科帮网 享有帖子相关版权3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网 的同意4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意7、科帮网 管理员和版主有权不事先通知发贴者而删除本文
JAVA爱好者①群:
JAVA爱好者②群:
JAVA爱好者③ :