基于JSP网上书店系统的设计与实现.docx

上传人:b****5 文档编号:7714468 上传时间:2023-01-25 格式:DOCX 页数:29 大小:1.36MB
下载 相关 举报
基于JSP网上书店系统的设计与实现.docx_第1页
第1页 / 共29页
基于JSP网上书店系统的设计与实现.docx_第2页
第2页 / 共29页
基于JSP网上书店系统的设计与实现.docx_第3页
第3页 / 共29页
基于JSP网上书店系统的设计与实现.docx_第4页
第4页 / 共29页
基于JSP网上书店系统的设计与实现.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

基于JSP网上书店系统的设计与实现.docx

《基于JSP网上书店系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于JSP网上书店系统的设计与实现.docx(29页珍藏版)》请在冰豆网上搜索。

基于JSP网上书店系统的设计与实现.docx

基于JSP网上书店系统的设计与实现

摘要

JAVA语言是目前Internet上大型的WEB应用程序开发时使用得最热门的编程语言,本文描述了JAVA和JSP技术的特点以及在互联网上的使用情况,介绍这两种技术的重要编程方法和两者之关的联系,并完成一个基于这种技术的网上书店系统。

  【关键字】JAVA,JavaBeans,Servlet,JSP,网络编程,电子商务,网上书店

前言

随着计算机、网络、通信技术的发展和日益融合,以及Internet的普及应用,包括电子商务(EC)、视频会议、网上书店等在内的一些应用已开始引起社会的关注,并逐步走进人们的日常生活。

JSP是Sun公司推出的一种网站开发技术,Sun公司借助自己在Java上的不凡造诣,又把人们引进JSP时代,JSP即JavaServerPage,它可以在Servlet和JavaBean的支持下,完成功能强大的Web应用程序。

所以,在我的毕业设计中,我采用了JSP作为开发工具,构建了一个能实现简单的电子商务的小型动态商务网站——网上书店销售系统。

通过这次的毕业设计,我了解了目前流行的动态商务网站的构成和运作原理,掌握了用JSP构建动态网站的相关知识和技术原理,锻炼了自己的动手实践能力。

在这次毕业设计过程中,我得到了指导老师杜雪平老师的悉心指导。

在此,我对你表示衷心的感谢!

第1章概述

1-1JAVA语言简介

  Java是一种简单易用、完全面向对象、具有平台无关性且安全可靠的主要面向Internet的开发工具。

自从1995年正式问世以来,Java的快速发展已经让整个Web世界发生了翻天覆地的变化。

在早期,Java比较多的用在浏览器上,插入到网页中(即是JavaApplet程序),成为最灵活、最强大的网页多媒体的载体,但由于Java虚拟机相对于个人电脑而言,有占用资源大,安全性相对较差等缺点,Applet逐渐的被后起之秀Flash所替代,但随着JavaServlet的推出,Java在电子商务方面开始崭露头角,最新的JSP(JavaServerPage)技术的推出,更是让Java成为基于Web的应用程序的首选开发工具,目前的Java技术已成为所有大型电子商务项目的必然选择。

 

1-2开发背景

我国的网上书店虽然从数量上取得了一定的进展,但从售量而言却不尽人意,目前,国内尚无一家在网上零售领域形成绝对领先优势的网上书店。

发展比较好的寥寥无几,比较成功的有当当书店()。

伴随着电子商务技术的不断成熟,电子商务的功能也越来越强大,注册用户可以在网上搜索购买到自己想要的各种商品,初步让人们体会到了足不出户,便可随意购物的快感。

我的毕业设计也就正是一个电子商务系统的开发---网上商品销售系统。

第2章JAVA技术简介

2-1在Windows平台下配置JSP运行环境

  为了使系统能够正常运行JSP和相关程序,必须先配置好能够使用JSP的WEB服务器。

各种能使用Servlet技术的WEB服务器中,运用得最多的是Tomcat服务器,如果仅是为了用于测试程序,Tomcat的配置则显得太复杂了,本文推荐使用Resin服务器,Resin据称是最快的Servlet运行平台,不过限于单站点,对传统的一些网关支持不是很好,因此对于商业网站而言,不是最好的选择,不过如果仅是为了测试Servlet,这个Resin的安装可谓有点傻瓜化。

  Resin比较新的版本是3.x,但目前实际用的2.x版本的比较多,Resin可到官方站点下载:

如果你的电脑上已装好JDK,直接把下载的resin包解压到D:

盘根目录解压后即D:

\resin-2.1.13为服务器的目录,把本文的源程序jspweb文件夹也放在D:

盘根目录,即是D:

\jspweb为网站根目录,打开D:

\resin-2.1.13\conf\resin.conf(是一份XML形式的配置文件),找到doc这里改为D:

\jspweb,然后运行D:

\resin-2.1.13\bin\httpd.exe,在浏览器输入http:

//localhost:

8080/j1.jsp,看到了“我是JSP!

”的字样了吧,你的Servlet服务器就这样配置成功了,为了能编译Servlet类,还需要做的事情是:

把D:

\resin-2.1.13\lib加入到windows的CLASSPATH的环境变量中。

2-2JSP、ASP和PHP技术之比较

JSP与ASP、PHP技术都是目前网上最流行的在服务器端运行的脚本技术,JSP能用JavaBeans技术封装,达到商业逻辑的目的,ASP对应之的是COM组件,因此两者都能用于开发商业逻辑,PHP则更像于一个纯脚本,仅适合于普通的网站开发,而不能用作商业逻辑而被冠以“PersonHomePage”的名称,这是最贴切不过的了。

JSP与ASP相比,JSP具有跨平台、安全、强大的可伸缩性的特点,而果硬要挑一些毛病,JSP相对别的脚本更加难掌握,因为精通JSP必须精通Java语言,对于中小型项目,我们要考虑开发人员、开发速度、开发成本等问题,在这方面ASP和PHP会比JSP更容易胜出。

值得一提的是,ASP的最新版本ASP.NET与原来的ASP性质完全是不同的,它和JSP一样,都是一种编译性的脚本,本身完全与强大的Net框架结合,完美的支持Xml的各种应用,与昔日的ASP不可同日而语,但是无论是ASP还是ASP.NET,它都摆脱不了Windows平台本身,这是ASP一个致命的缺点。

2-3JSP语法基础

2-3-1嵌入了JAVA语言的HTML文件

把下面网页保存为:

j1.jsp

这就成了一个最简单的JSP页面了,其中

是声明输出的文件类型为text/html,字符编码是gb2312,在JSP中里的内容表示的是JSP编译时的一些选项或向客户端发送的头信息的JSP指令,里的内容就是Java语言,如果有必要,更改适当设定,还可以使用javascript作为脚本,不过实际应用中很少有人这样做。

2-3-2request、out&response--与访问者的交互

接收客户端的请求和向客户端返回信息是动态网页最常做的事情,在JSP中,主要通过request、response、out三大对象实现这些功能。

request对象的作用是接收用户通过URL或通过表单向发服务器发送请求信息和与用户计算机相关的一些信息。

response对象用于网页传回用户端的回应。

out用于传送回应的输出,即向客户端返回信息。

把上面的例子稍作修改:

  

保存为j2.jsp在浏览器上输入:

“http:

//localhost:

8080/j1.jps?

msg=我是JSP”看一下效果,这和j1.jsp的结果一样吧?

但它输出的是客户端返回的信息,这在意义上完全不同于前者。

2-3-3session--保持访问者的会话状态

会话状态维持是Web应用开发者必须面对的问题。

有多种方法可以用来解决这个问题,如使用Cookies、隐藏的表单输入域,或直接将状态信息附加到URL中。

JavaServlet提供了一个在多个请求之间持续有效的会话对象,该对象允许用户存储和提取会话状态信息,JSP也内置了这个对象。

Session最基本的用法是:

创建一个会话session.putValue("名称","值");

获得一个会话的值session.getValue("名称");

2-3-4JSP其它基本内置对象

JSP有九大内置对象,除了上述四种以外,还包括:

pageContext网页的属性是在这里管理

applicationServlet正在执行的内容

configServlet的构架部件

pageJSP网页本身

exception针对错误网页,未捕捉的例外

这些基本的内置对象是构成JSP页面的重要因子。

 

第3章系统设计

本系统采用三层架构设计,它的工作原理如图3-1所示。

图3-1三层架构模型

采用三层构架以后,用户界面层通过统一的接口向业务层发送请求,业务层按自己的逻辑规则将请求处理之后进行数据库操作,然后将数据库返回的数据封装成类的形式返回给用户界面层。

3.1数据库设计

数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率,以及实现的效果产生影响。

合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。

3.1.1数据库需求分析

针对一般在线书店的需求,得出如下需求信息。

▪用户分为游客和已注册用户。

▪订单分为单张详细订单和总订单。

▪一个用户可以购买多本图书。

▪一个用户对应一张订单。

▪一个列表对应多张订单。

针对本系统功能分析,总结出如下的需求信息。

▪用户,包括数据项:

用户ID、用户名、密码。

▪图书,包括数据项:

图书编号、图书名、价格、图书介绍。

▪订单列表,包括数据项:

订单编号、图书编号、购书数量。

▪订单,包括数据项:

订单编号、用户编号、下单时间。

从本系统中规划出的实体有:

用户实体、图书实体、订单实体、订单列表实体。

实体之间关系的E-R图如图3-5所示。

11N

 

N

图3-5实体关系E-R图

用户信息实体的E-R图如图3-6所示。

图书实体的E-R图如图3-7所示。

订单实体的E-R图如图3-8所示。

订单列表实体的E-R图如图3-9所示。

图3-6图书实体E-R图

图3-7用户实体E-R图

图3-8订单实体E-R图

图3-9订单列表实体E-R图

3.1.2数据库逻辑结构设计

在线书店数据库中各个表的设计结果如下面的标和所示。

表3.1为图书信息列表book。

表3.1图书信息表book

字段名

数据类型

长度

允许空

说明

ID

int

4

自动编号,主键

bookname

int

4

书名

bookclass

varchar

255

图书类别

author

varchar

100

yes

图书作者

publish

float

8

yes

出版社

bookNo

varchar

100

yes

书号

Content

text

16

yes

内容介绍

price

tinyint

1

yes

价格

Amount

int

4

yes

总数量

Leav_number

int

4

yes

库存量

picture

int

4

yes

封面

reg_time

datetime

8

yes

入库时间

表3.2为用户信息列表shop_user。

表3.2用户信息表shop_user

字段名

数据类型

长度

允许空

说明

ID

int

4

自动编号,会员编号

username

varchar

4

no

用户名

password

varchar

100

no

密码

Names

int

4

yes

会员级别

Sex

varchar

50

yes

名字

Addr

varchar

50

yes

地址

Phone

varchar

25

yes

电话

Post

varchar

25

yes

邮编

Email

varchar

25

yes

邮箱

Retime

datetime

8

yes

注册时间

RegIpAddr

varchar

20

yes

注册ip

表3.3为订单表,记录订单信息orders。

表3.3订单信息表orders

字段名

数据类型

长度

允许空

说明

ID

int

4

yes

自动编号,订单编号

order_id

int

4

yes

会员编号

user_id

int

4

yes

图书编号

quantity

int

4

yes

订购数量

submit_time

datetime

8

yes

提交订单时间

consignmentTime

datetime

8

yes

交货时间

totalprice

float

8

yes

总价

content

varchar

20

yes

备注

ipAddr

varchar

20

yes

用户ip

isPayoff

int

11

yes

是否付款

isSale

int

11

yes

是否发货

表3.4为订单列表,记录订单列表信息allorder。

表3.4订单列表allorder

字段名

数据类型

长度

允许空

说明

ID

int

4

自动编号,卡类型编号

orderID

int

11

yes

订单号

BookNo

int

11

yes

书号

Amount

int

11

yes

数量

表3.5书店管理员信息表,记录管理员信息bookadmin。

表3.5管理员信息表bookadmin

字段名

数据类型

长度

允许空

说明

AdminUser

varchar

20

管理员用户名

AdminPass

varchar

50

yes

管理员密码

表3.6图书分类信息表,记录图书分类信息bookclass。

表3.6图书分类表bookclass

字段名

数据类型

长度

允许空

说明

ID

int

4

自动编号,卡类型编号

Classname

varchar

30

yes

图书类别

第4章详细设计

4.1系统概述

4.1.1用户界面部分

图书选购(可按分类查找图书,或者通过关键字进行查询)。

购物车功能。

查看图书详细信息。

用户注册。

用户登录。

查看用户的订单信息。

修改用户个人信息。

4.1.2管理界面部分

现有图书管理:

修改,删除,查看。

用户管理:

查看,修改,删除。

订单管理:

查看订单清单,更新订单付款,出货状态,删除订单。

添加新图书。

添加图书分类。

4.2详细代码及说明

4.2.1实现bookshop.run包

1:

login.java

这是一个以客户为中心的交易平台,只有成为了系统的合法用户才能够使用这个系统,因此需要检验每个用户的合法性,管理用户登录的login.java正是要完成这样的功能。

类中定义了个private属性和他们对应的setX()/getX()方法和默认构造函数和execute()getSql()操作。

private属性分别是:

    privateStringusername;//登录用户名

privateStringpasswd;//登录密码

privatebooleanisadmin;//是否管理员登录

privatelonguserid=0;//用户ID号

 重要操作:

主要介绍execute()

execute()操作

功能:

从数据库中查询用户信息。

返回值:

boolean型,如果取值成功返回true,否则,返回false。

设计思路:

获得数据库连接对象Connection对象,ResultSet对象和Statement对象――》调用getSql()方法获得sql语句――》执行sql语句。

程序主干部分代码:

       publicbooleanexecute()throwsException{

………

try{

     con=DataBase.getConnection();

     stmt=con.createStatement();

     rs=stmt.executeQuery(getSql());

  }catch(Exceptione){

       e.printStackTrace();

    }

while(rs.next()){

if(!

isadmin)

{

userid=rs.getLong("id");

}

flag=true;

}

………}

2:

op_book.java

该类主要负责图书的管理,包括图书的修改,查询,删除和添加等。

op_book类有以下属性:

   privatebookabooks=newbook();//新的图书类

privatejavax.servlet.http.HttpServletRequestrequest;//建立页面请求

privatebooleansqlflag=true;//对接收到的数据是否正确

privateVectorbooklist;//显示图书列表向量数组

privateintpage=1;//显示的页码

privateintpageSize=5;//每页显示的图书数

privateintpageCount=0;//页面总数

privatelongrecordCount=0;//查询的记录总数

publicStringsqlStr="";

op_book类有以下方法(省去了属性对应的getX()/setX()方法):

    book_search();完成图书查询,包括分类,关键字查询。

delete();负责图书的删除。

getOnebook();主要完成图书的单本查询,用于支持页面的“查看详细信息”。

insert();负责图书的添加。

to_String();把字符串以“ISO8859-1”编码形式输出,使页面正常显示。

update();负责修改图书信息。

getRequest();负责接受页面传递过来的参数,分解并将参数存放到abooks对象中。

重要操作:

主要介绍getRequest()

getRequest()方法

   功能:

负责从页面接受表单数据并分解,设置abooks对象相应属性。

   参数设计:

页面传递的Request对象,其中包括表单数据。

返回值:

boolean型,true表示成功,否则返回false。

设计思想:

获取页面传递的Request对象—》分解Request对象—》获取表单参数值—》把参数值设置成图书对象abooks相对应的属性值。

程序主干代码:

publicbooleangetRequest(javax.servlet.http.HttpServletRequestnewrequest){

………

request=newrequest;

StringBookName=request.getParameter("BookName");

abooks.setBookName(to_String(BookName));

Stringauthor=request.getParameter("author");

abooks.setAuthor(to_String(author));

Stringpublish=request.getParameter("publish");;

abooks.setPublish(to_String(publish));

Stringbookclass=request.getParameter("bookclass");

abooks.setBookClass(bc);

Stringbookno=request.getParameter("bookno");

abooks.setBookNo(to_String(bookno));

Stringpicture=request.getParameter("picture");

abooks.setPicture(to_String(picture));

price=newFloat(request.getParameter("price")).floatValue();

abooks.setPrice(price);

amount=newInteger(request.getParameter("amount")).intValue();

abooks.setAmount(amount);

StringContent=request.getParameter("Content");

abooks.setContent(to_String(Content));

……..

}

3:

op_user.java:

为了使用上的方便,我们把对用户的管理,包括用户的添加,删除,修改,查询等集合成一个管理类。

该类具有以下属性:

privateuseruser=newuser();//新的用户对象

privatejavax.servlet.http.HttpServletRequestrequest;//建立页面请求

privateVectoruserlist;//显示用户列表向量数组

privateintpage=1;//显示的页码

privateintpageSize=8;//每页显示的图书数

privateintpageCount=0;//页面总数

privatelongrecordCount=0;//查询的记录总数

privateStringmessage="";//出错信息提示

privateStringusername="";//注册后返回的用户名

privatelonguserid=0;//注册后返回的用户ID

该类具有的主要方法(省去了属性相关的getX()/setX()操作):

add():

负责用户的添加。

delete():

负责删除指定ID的用户。

get_alluser():

取出书店所有用户的信息。

getGbk():

返回指定字符串的GBK编码。

getUserinfo():

负责取得用户的详细信息。

update():

负责修改用户资料。

getRequest():

获取表单数据,并分解存储。

4:

op_buy.java

我们把业务逻辑和对订单以及和订单列表的管理集成到了该类当中。

该类具有以下属性:

privatejavax.servlet.http.HttpServletRequestrequest;//建立页面请求

privateHttpSessionsession;//页面的session;

privatebooleansqlflag=true;//对接收到的数据是否正确

privateVectorpurchaselist;//显示图书列表向量数组

privateVectorallorde

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 判决书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1