java实现当当网.docx
《java实现当当网.docx》由会员分享,可在线阅读,更多相关《java实现当当网.docx(26页珍藏版)》请在冰豆网上搜索。
java实现当当网
JIANGSUTEACHERSUNIVERSITYOFTECHNOLOGY
企业专业综合实习实训手册
学院:
计算机工程学院
专业:
计算机科学与技术
学号:
10141228
学生姓名:
张燕
企业名称:
达内
校方指导教师:
白凤娥
企业指导教师:
徐铭
2013年7月
目录
当当网网站实现4
一、需求分析4
1.1课题背景及意义4
1.2技术原理4
二、模块功能说明(概要设计)4
三、详细设计5
3.1系统设计5
3.2功能实现8
3.3数据库的连接11
四、各功能模块的实现12
4.1登录注册模块:
12
4.2商品列表模块的实现:
15
4.3购物车模块的实现16
4.4订单模块的实现17
4.5后台数据库模块的实现18
五、测试结果19
六、设计小结19
七、环境配置20
7.1系统环境变量配置:
20
7.2Tomcat安装与环境变量的配置20
7.3MyEclipse6.0安装20
7.4MySQL安装21
八、参考文献21
附录程序源代码21
当当网网站实现
摘要:
本系统主要为用户提供了会员注册,商品搜索,购物车管理,订单结算等功能。
在设计方面,本系统使用JSP技术进行页面的设计,从系统的安全性和代码的可重用性方面考虑,运用JavaBean对程序的关键代码进行封装。
后台数据库选用MySQL数据库。
关键字:
java、当当网、购物车、JSP技术
一、需求分析
1.1课题背景及意义
自从人类社会进入21世纪,Internet的普及已经影响了传统的交流方式,成为了我们日常生活中的一个新的载体,电子商务这种新的商务模式也随之产生。
电子商务是一种依托现代化信息技术和网络技术,集金融电子化、管理信息化、商贸信息网络化为一体,旨在实现物流,资金流与信息流和谐统一的新贸易形势。
网上商店是近年来随着电子商务的发展而产生的一种新型的商店形势。
与传统的商店相比,网络购物不在受时间和地域的限制,在世界各地都可以达到随时随地、足不出户的够买商品,既可以大大减少物品销售中的营销成本,还节省了大量的人力、物力和时间,极大地提高了工作效率和人们获取新信息、新技术、新知识的速度。
1.2技术原理
本系统主要为用户提供了会员注册,商品搜索,购物车管理,订单结算等功能。
在设计方面,本系统使用JSP技术进行页面的设计,从系统的安全性和代码的可重用性方面考虑,运用JavaBean对程序的关键代码进行封装。
后台数据库选用MySQL数据库。
二、模块功能说明(概要设计)
在平台功能的分析基础上,得到本平台的主要功能模块图如下所示:
用户进入当当网平台,用户可以先进行注册,填写相关信息后,然后登录。
在主页面,用户可以通过左栏的分类商品进行查看,找到自己想要产品。
用户登录后,可以通过点击购买对商品进行购买,添加至购物车中。
也可以对购物车进行删除、更改数据,点击结算后生成订单,要求用户填写送货地址等信息,在订单生成页面进行友情链接至商品列表。
三、详细设计
3.1系统设计
前台购物流程如下图所示
用户在前台可以浏览商品,看到自己喜欢的商品可以选择商品,然后订购商品,这时需要进行判断,如果是没有登录的用户,则跳转到登录页面,已经登录的用户则跳转到购物车页面,然后生成订单、提交订单。
注册功能模块如下图所示
注册的具体实现为:
点击主页面的创建一个新用户选项后,会弹出一个注册信息页面,用户需要如实填写用户名,密码,E_mail,地址等各项信息,提交后,系统进行检测判断该用户名或者该邮箱是否已经注册过,如果已经存在则弹出新页面,提示用户该用户名或邮箱已经注册过,如果没有则进行下一步判断,用户输入的两次密码是否一致,然后依次往后判断用户所填写的各项信息是否符合要求,最后系统会给出一个验证码,用户输入验证码,若匹配则注册成功,并将用户数据存入数据库,若验证码错误,则仍旧停留在输入验证码的页面。
商品浏览模块如下图所示
商品的搜索功能使用户更加方便的进行自己所需要的商品的查询,节省时间,提高效率。
用户搜索时只要点击页面左侧的商品的关键字就能搜索到所有相关的商品。
并且能列出通过搜索得到的商品的详细信息。
用户模块如下图所示
用户登录,首先要有一个提供用户登录的表单。
用户登录的表单应该嵌入整体的结构当中。
首先,用户要有一个用户名和密码。
当当网是一个商务网站,因此需要很高的稳定性和安全性,用户名不允许使用恶意的代码作为用户名,用户名与验证邮箱不得重复,同时对密码也要求保密,将密码存入数据库。
购物车模块如下图所示
购物车具体的实现可采用这种形式:
定义一个购物车的类(Cart)和一个单独购物项的类(CartItem)。
1.列出商品的列表,使用户能够自由选择所需要的商品。
2.当用户在点击“购买”的链接时,执行如下功能:
检查用户购物车类是否存在。
如不存在,则建立,并注册这Session变量;在有用户购物车类存在的情况下,检查该类中是否有该商品。
如存在,则商品数量相应加1;如没有该商品,则添加一个购物项。
订单模块如下图所示
订单模块是我本人写的一个模块,因此比较清楚。
订单模块中主要是在.jsp的页面里进行遍历输出购物车中的数据,因为没有做下拉列表框,所以整个模块只有一个Servlet类,是当用户在页面输入数据时,从中取出参数进行三个关联表的存储。
如果想要再做一个下拉列表框,这需要添加一个.do,每次输入时都将用户填写的地址信息存入数据库,再在下拉列表框中从数据库内获取数据即可完成信息回填的过程。
3.2功能实现
能适应系统各项功能的调用,而不至于产生结构上的逻辑混乱,保证关键数据在意外情况下不会被破坏,可以说数据库是系统的重中之重。
数据库设计要遵循一些规则,一个好的数据库满足一些严格的约束和要求。
尽量分离各实体对应的表,一个实体对应一个表,搞清楚该实体有哪些属性,对应有些什么字段,以及各实体之间有何种联系。
实体、属性与联系是进行概念设计时要考虑的三个元素,也是一个好的数据库设计的核心。
从实际出发,经过仔细地设计,得到各表的设计,分别是:
d_category表、d_product表、d_book表、d_category_product表、d_item表、d_order表、d_receive_address表、d_user表。
d_category表
COULUMN_NAME
COLUMN_TYPE
IS_NULLABL
COLUMN_KEY
COLUMN_DEFAULT
EXTRA
id
int(12)
NO
PRI
auto_increment
turn
int(10)
NO
en_name
varchar(200)
NO
name
varchar(200)
NO
description
varchar(200)
YES
parent_id
int(10)
YES
d_product表
COULUMN_NAME
COLUMN_TYPE
IS_NULLABL
COLUMN_KEY
COLUMN_DEFAULT
EXTRA
id
int(12)
NO
PRI
auto_increment
product_name
varchar(100)
NO
description
varchar(100)
YES
add_time
bigint(20)
YES
fixed_price
double
NO
dang_price
double
NO
keywords
varchar(200)
YES
has_deleted
int
(1)
NO
0
product_pic
varchar(200)
YES
d_book表
COULUMN_NAME
COLUMN_TYPE
IS_NULLABL
COLUMN_KEY
COLUMN_DEFAULT
EXTRA
id
int(12)
NO
PRI
author
varchar(200)
NO
publishing
varchar(200)
NO
publish_time
bigint(20)
NO
word_number
varchar(15)
YES
which_edtion
varchar(15)
YES
total_page
varchar(15)
YES
print_time
int(20)
YES
print_number
varchar(15)
YES
isbn
varchar(15)
YES
author_summary
text
NO
catalogue
text
NO
d_item表
COULUMN_NAME
COLUMN_TYPE
IS_NULLABL
COLUMN_KEY
COLUMN_DEFAULT
EXTRA
id
int(12)
NO
PRI
auto_increment
order_id
int(10)
NO
product_id
int(10)
NO
product_name
varchar(100)
NO
dang_price
double
NO
product_num
int(10)
NO
amount
double
NO
d_order表
COULUMN_NAME
COLUMN_TYPE
IS_NULLABL
COLUMN_KEY
COLUMN_DEFAULT
EXTRA
id
int(10)
NO
PRI
user_id
int(10)
NO
status
int(10)
NO
order_time
bigint(20)
NO
order_desc
varchar(100)
YES
total_price
double
NO
receive_name
varchar(100)
YES
full_address
varchar(200)
YES
postal_code
varchar(8)
YES
mobile
varchar(20)
YES
phone
varchar(100)
YES
d_user表
COULUMN_NAME
COLUMN_TYPE
IS_NULLABL
COLUMN_KEY
COLUMN_DEFAULT
EXTRA
id
int(12)
NO
PRI
auto_increment
email
varchar(50)
NO
nickname
varchar(50)
YES
password
varchar(50)
NO
is_email_verify
char(3)
YES
email_verify_code
varchar(50)
YES
last_login_time
bigint(20)
YES
3.3数据库的连接
出于安全性的考虑,我们将与数据库的连接,还有关闭都单独写出来放在DBUtil里面并进行编译,也就是数据库连接的javabean文件,在Servlet类中只用直接调用改方法即可,在本系统中我们将其命名为为DBUtil.getConnection()、DBUtil.close()。
getConnection()代码如下:
Stringurl="jdbc:
mysql:
//localhost:
3306/dangdang";
Stringname="root";
Stringpwd="";
try{
Class.forName("com.mysql.jdbc.Driver");
Connectionconn=
DriverManager.getConnection(url,name,pwd);
returnconn;
}catch(Exceptione){
e.printStackTrace();
}
returnnull;
DBUtil.close()代码如下:
if(res!
=null){
try{
res.close();
}catch(SQLExceptione){
e.printStackTrace();
}
}
四、各功能模块的实现
4.1登录注册模块:
用户登陆模块是防止非法用户登陆的第一道防线,通过它可以保护后台数据库的安全性,当用户要进行购买时,首先要进入的就是身份验证界面,只有在密码正确的情况下才能进行以后的购物,如果输入的密码不正确,则不能进行购买。
如果用户以浏览者的身份进入网站,则只能进行一般的商品浏览和搜索,而不能进行选购,在点击添加购物车后,系统会判断该用户是否是登陆用户,如果不是则不跳转至购物车页面,因此用户必须先登陆才能定购商品,如果是第一次登陆,则先进行注册。
主页面的效果图如下图所示:
主页面示意图
如果用户还不是会员则提示用户进行注册,用户提交信息之后,系统开始判断用户的注册信息是否有效,首先是邮箱及用户名是否为空,是否重复使用过,用户输入的两次密码是否一致,然后依次往后判断用户所填写的各项信息是否符合要求,直到所有信息均正确无误,系统将该用户注册信息写入d_user表并提示用户注册成功,用户登陆后,就可以进行有效的购物了。
注册页面的效果图如下图所示:
注册页面示意图
系统对用户的注册信息的验证实现如下:
用户输入的各项信息分别对应字段
先获取用户输入的所有参数:
Stringemail=request.getParameter("email");
Stringnickname=request.getParameter("nickname");
Stringpassword=request.getParameter("password");
Stringrepassword=request.getParameter("repassword");、
再存入数据库中:
Useruser=newUser();
user.setEmail(email);
user.setNickname(nickname);
user.setPassword(password);
然后,判断用户名与邮箱是否已被注册过。
当所有条件都符合的时候,系统将数据写入数据表d_user,并返回邮箱验证的页面,显示用户所填写的邮箱信息及邮箱的验证码,判断用户输入的验证码是否正确。
if(code.equals(c)){
response.sendRedirect("register_ok.jsp");
}else{
request.setAttribute("err_msg","验证错误");
request.getRequestDispatcher("verify_form.jsp").forward(request,response);
}
邮箱验证示意图:
4.2商品列表模块的实现:
用户登陆成功以后,在商品列表的页面可以看到所有的图书,左侧为图书的分类,点击分类后,右侧会查询出所对应的书籍。
在主页面中分别有编辑推荐、热销图书、最新上架图书等功能模块,主页面如下所示:
其中,编辑推荐下的书籍为随机产生的数据显示在页面上。
热销图书部分是在购物车模块的基础上,算出销售量最大的账本图书显示的,最新上架的图书是根据日期比较,最晚的图书显示。
若点击近现代小说,则系统会查询出条件的数据并显示(分类号后面的数字表示数据库中的存量):
4.3购物车模块的实现
当用户找到了想要购买的书本后,在点击物品下方的购买以后,系统会停留在商品列表页面,以供用户继续购买商品,用户点击购物车后,系统会跳转至购物车页面,显示出刚刚用户所购买的商品列表,然后用户可以修改需要的数量甚至是删除购买的书籍。
购物车页面如下所示:
输入变更数量,点击变更后,商品数量会被改变,且商品金额总价也会随之而改变。
具体代码如下:
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
Stringid=request.getParameter("id");
Stringnum=request.getParameter("num");
HttpSessionsession=request.getSession();
Cartcar=(Cart)session.getAttribute("cart");
car.modify(Integer.parseInt(id),Integer.parseInt(num));//变更数据
response.sendRedirect("cart_list.jsp");
4.4订单模块的实现
订单模块中,我做的还是比较简单的,主要是在页面中遍历输出购物车中的所有数据,而在Servlet类中实现的是向三个表中插入用户所输入的数据。
并且生成订单,要求用户填写送货地址。
确认订单页面如下:
填写送货地址页面如下:
生成订单后,友情链接至继续浏览并选购商品。
4.5后台数据库模块的实现
网上购物系统除了能够让用户实现前台的浏览和购物等操作之外,这需要将这些信息都存入数据库中,且系统中的商品信息均是从数据库中拿出来的,因此对数据库的维护非常重要。
用户数据表如下:
id
email
nickname
password
is_email_verify
email_verify_code
last_login_time
1
11655777777@
zs
111111
2
1234356798@
zy
111111
3
1112111@
11
111111
4
111111@
22
111111
5
11111000@
33
111111
6
123@
dd
111111
7
1165577117@
ss
111111
五、测试结果
对于网上购物系统来说安全性无疑是最重要的,层层验证虽然保证了系统的安全性,但对于用户来说又是极不人性化的,如何在最简单的验证流程下,保证用户数据的安全,是在做网上购物系统中需要考虑的一个问题。
六、设计小结
我的设计论文具体论述了网上购物系统的主要功能及体系结构,重点讨论了系统数据准备、数据库的逻辑结构分析、各模块系统流程,各功能模块的关联和响应,JSP与后台数据库链接等关键技术。
这些技术的实现,满足了系统的需要,优化了系统的性能。
目前基于该模型的系统处于实验阶段,还存在许多问题与不足,如安全性能还不完善,缺少必要的数据加密系统等,这些功能与技术还需要加以提高和实现。
网上购物系统无论是在开发过程中,还是建成后的日常维护过程中,都需要进行严格的检测,以保证购物系统的服务质量。
随着网上购物系统技术的日趋成熟、网上购物的优势日趋明显,会有更多的人参与到网上购物的浪潮中来,人类最终将迎接电子商务时代的来到。
七、环境配置
7.1系统环境变量配置:
右键单击“我的电脑”,然后选择“属性”,在打开的对话框中,选择“高级”选项卡,然后单击下面的“环境变量”按钮,在弹出的环境变量对话框中,看下面的“系统变量”块,单击“新建”按钮,弹出“新建系统变量”对话框,然后创建变量名为“JAVA_HOME”的变量,变量值为“C:
\ProgramFiles\Java\jdk1.\”(即安装JDK时所选的安装JDK的根目录);然后再在系统环境变量中选择“Path”变量,单击“编辑”按钮,弹出编辑系统变量对话框,在“变量值”的后面添加“;%JAVA_HOME%bin”。
7.2Tomcat安装与环境变量的配置
使用Tomcat-5.0.28版本,解压“jakarta-tomcat-5.0.28.zip”文件,到指定目录即可。
当用户配置完环境变量后,就可以运行MyEclipse,在MyEclipse工具栏上点击“window”选择“showtime”选择“Serves”在serves里面把你的工程名称加载进去,在“Tomcat6.x”上单击右键,选择“Run”运行即可。
Tomcat的环境变量的配置:
右键单击“我的电脑”,然后选择“属性”,在打开的对话框中,选择“高级”选项卡,然后单击下面的“环境变量”按钮,在弹出的环境变量对话框中,看下面的“系统变量”块,单击“新建”按钮,弹出“新建系统变量”对话框,然后创建变量名为“TOMCAT_HOME”的变量,变量值为“C:
\ProgramFiles\ApacheSoftwareFoundation\Tomcat5.0.28\”(即解压Tomcat时所选的Tomcat的根目录);然后再在系统环境变量中选择“Path”变量,单击“编辑”按钮,弹出编辑系统变量对话框,在“变量值”的后面添加“;%TOMCAT_HOME%bin”。
7.3MyEclipse6.0安装
使用MyEclipse6.0版本.MyEclipse的安装:
首先安装ECLIPSE到“F:
\eclipse”路径下,按照默认的安装配置,点击“下一步”完成安装,之后安装MYECLIPSE,按照默认配置点击“下一步”,选择“F:
\eclipse”路径,点击“下一步”,按照默认配置点击“下一步”,完成MYECLI