2023年11月28日发(作者:)

JSP网上书店系统(论文)

.................................................... 2

1 ............................................... 3

1.1 JSP简介和运行原理 ......................................................................................................... !未定义书签。

1.2 开发背景 .......................................................................................................................................................... 3

2 需求分析 ............................ !未定义书签。

2.1 系统组成: ....................................................................................................................... !未定义书签。

2.2 系统要求配置 ................................................................................................................... !未定义书签。

3 系统设计 ............................................. 6

3.1 数据库设计 ........................................................................................................................................................ 7

3.1.1 数据库需求分析................................................................... 7

3.1.2 数据库逻辑结构设计 ............................................................... 9

4 详细设计 ........................................... 11

4.1 系统概述 .......................................................................................................................................................... 11

411用户界面部分 ................................................................... 11

412 管理界面部分................................................................... 11

4.2 详细代码及说明 .............................................................................................................................................. 12

4.2.1实现 ................................................................ 12

4.2.2客户界面设计与实现 ................................................................ 19

5 系统测试 ............................................ 27

5.1 数据库连接 ...................................................................................................................................................... 27

5.2 检测网站运行速度 .......................................................................................................................................... 27

1

JSP网上书店系统(论文)

6 总结 ............................................... 30

参考文献 .................................................. 31

..................................................... 32

随着计算机、 网络 、通信技术的发展和日益融合,以及Internet的普及应用,包

括电子商务(EC、视频会议、网上书店等在内的一些应用已开始引起社会的关注,并逐

步走进人们的日常生活。

JSPSun公司推出的一种网站开发技术,Sun公司借助自己在Java上的不凡造诣,

又把人们引进JSP时代,JSPJava Server Page,它可以在ServletJavaBean的支

持下,完成功能强大的Web应用程序。所以,在我的课程设计中,我采用了JSP作为开

发工具,构建了一个能实现简单的电子商务的小型动态商务网站——网上书店销售系统。

通过这次的课程设计,我了解了目前流行的动态商务网站的构成和运作原理,掌握了

JSP构建动态网站的相关知识和技术原理,锻炼了自己的动手实践能力。

在这次毕业设计过程中,我得到了指导老师江耘老师的悉心指导。在此,我对你表示

衷心的感谢!

2

JSP网上书店系统(论文)

1

1-1 JAVA语言简介

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

Internet的开发工具。自从1995年正式问世以来,Java的快速发展已经让整个Web

界发生了翻天覆地的变化。在早期,Java比较多的用在浏览器上,插入到网页中(即是

Java Applet程序),成为最灵活、最强大的网页多媒体的载体,但由于Java虚拟机相对

于个人电脑而言,有占用资源大,安全性相对较差等缺点,Applet逐渐的被后起之秀Flash

所替代,但随着Java Servlet的推出,Java在电子商务方面开始崭露头角,最新的

JSP(Java Server Page)技术的推出,更是让Java成为基于Web的应用程序的首选开发

工具,目前的Java技术已成为所有大型电子商务项目的必然选择。

1-2 开发背景

我国的网上书店虽然从数量上取得了一定的进展,但从售量而言却不尽人意,目前,

国内尚无一家在网上零售领域形成绝对领先优势的网上书店。发展比较好的寥寥无几,

比较成功的有当当书店(

伴随着电子商务技术的不断成熟,电子商务的功能也越来越强大,注册用户可以在网

上搜索购买到自己想要的各种商品,初步让人们体会到了足不出户,便可随意购物的快

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

3

JSP网上书店系统(论文)

2 JAVA技术简介

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

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

各种能使用Servlet技术的WEB服务器中,运用得最多的是Tomcat服务器,如果仅是为

了用于测试程序,Tomcat的配置则显得太复杂了,本文推荐使用Resin服务器,Resin

据称是最快的Servlet运行平台,不过限于单站点,对传统的一些网关支持不是很好,

因此对于商业网站而言,不是最好的选择,不过如果仅是为了测试Servlet,这个Resin

的安装可谓有点傻瓜化。

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

点下载:/download/本文使用的是2.1.13版本,文件位置:

/download/

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

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

即是D:jspweb为网站根目录,打开D:resin-2.1.13conf (是一份XML

),docD:jspweb

D:在浏览器输入localhost:8080/看到

“我是JSP的字样了吧,你的Servlet服务器就这样配置成功了,为了能编译Servlet

类,还需要做的事情是:把D:resin-2.1.13lib加入到windowsCLASSPATH的环境

变量中。

2-2 JSPASPPHP技术之比较

JSPASPPHP技术都是目前网上最流行的在服务器端运行的脚本技术,JSP能用

JavaBeans技术封装,达到商业逻辑的目的,ASP对应之的是COM组件,因此两者都能用

于开发商业逻辑,PHP则更像于一个纯脚本,仅适合于普通的网站开发,而不能用作商业

逻辑而被冠以“Person Home Page的名称,这是最贴切不过的了。

JSPASP相比,JSP具有跨平台、安全、强大的可伸缩性的特点,而果硬要挑一些

毛病,JSP相对别的脚本更加难掌握,因为精通JSP必须精通Java语言,对于中小型项

目,我们要考虑开发人员、开发速度、开发成本等问题,在这方面ASPPHP会比JSP

更容易胜出。

值得一提的是,ASP的最新版本与原来的ASP性质完全是不同的,它和JSP

一样,都是一种编译性的脚本,本身完全与强大的Net框架结合,完美的支持Xml的各

种应用,与昔日的ASP不可同日而语,但是无论是ASP还是它都摆脱不了Windows

平台本身,这是ASP一个致命的缺点。

4

JSP网上书店系统(论文)

2-3 JSP语法基础

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

把下面网页保存为:

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

是声明输出的文件类型为text/html,字符编码是gb2312,在JSP中里的内容表示

的是JSP编译时的一些选项或向客户端发送的头信息的JSP指令,里的内容就是Java

言,如果有必要,更改适当设定,还可以使用javascript作为脚本,不过实际应用中很

少有人这样做。

2-3-2 requestout & response--与访问者的交互

接收客户端的请求和向客户端返回信息是动态网页最常做的事情,在JSP中,主要

通过requestresponseout 三大对象实现这些功能。

request 对象的作用是接收用户通过URL或通过表单向发服务器发送请求信息和与

用户计算机相关的一些信息。

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

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

把上面的例子稍作修改:

保存为在浏览器上输入:localhost:8080/?msg=我是JSP

看一下效果,这和的结果一样吧?但它输出的是客户端返回的信息,这在意义上

完全不同于前者。

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

会话状态维持是 Web 应用开发者必须面对的问题。有多种方法可以用来解决这个问

题,如使用 Cookies 隐藏的表单输入域,或直接将状态信息附加到 URL 中。Java Servlet

提供了一个在多个请求之间持续有效的会话对象,该对象允许用户存储和提取会话状态

信息,JSP也内置了这个对象。

Session最基本的用法是:

创建一个会话 ue("名称","");

获得一个会话的值ue("名称");

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

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

5

JSP网上书店系统(论文)

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

application Servlet正在执行的内容

config Servlet的构架部件

page JSP网页本身

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

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

3 系统设计

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

3-1三层架构模型

采用三层构架以后,用户界面层通过统一的接口向业务层发送请求,业务层按自己

的逻辑规则将请求处理之后进行数据库操作,然后将数据库返回的数据封装成类的形式

6

JSP网上书店系统(论文)

返回给用户界面层。

3.1数据库设计

数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接

对应用系统的效率,以及实现的效果产生影响。合理的数据库结构设计可以提高数据存

储的效率,保证数据的完整和一致。

3.1.1 数据库需求分析

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

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

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

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

一个用户对应一张订单。

一个列表对应多张订单。

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

用户,包括数据项:用户ID、用户名、密码。

图书,包括数据项:图书编号、图书名、价格、图书介绍。

订单列表,包括数据项:订单编号、图书编号、购书数量。

订单,包括数据项:订单编号、用户编号、下单时间。

从本系统中规划出的实体有:用户实体、图书实体、订单实体、订单列表实体。

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

用户

1 1 N

订购

订单列表 订单

N

图书

3-5实体关系E-R

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

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

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

7

JSP网上书店系统(论文)

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

图书

图书编号封面

图书名称分类编号

3-6 图书实体E-R

用户

用户名E-mail

密码

用户编号

3-7 用户实体E-R

订单

订单编号订购数量

用户编号

图书编号

3-8 订单实体E-R

8

JSP网上书店系统(论文)

订单列表

订单号是否付款

用户编号图书编号

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

字段名 数据类型 长度 允许空 说明

9

JSP网上书店系统(论文)

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

书号

10

JSP网上书店系统(论文)

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 系统概述

411用户界面部分

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

购物车功能。

查看图书详细信息。

用户注册。

用户登录。

查看用户的订单信息。

修改用户个人信息。

412 管理界面部分

现有图书管理:修改,删除,查看。

用户管理:查看,修改,删除。

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

添加新图书。

添加图书分类。

11

JSP网上书店系统(论文)

4.2 详细代码及说明

4.2.1实现

1:

这是一个以客户为中心的交易平台,只有成为了系统的合法用户才能够使用这个

系统,因此需要检验每个用户的合法性,管理用户登录的正是要完成这

样的功能。

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

execute() getSql() 操作。

private属性分别是:

private String username; //登录用户名

private String passwd; //登录密码

private boolean isadmin; //是否管理员登录

private long userid=0; //用户ID

重要操作:主要介绍execute()

execute()操作

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

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

设计思路:获得数据库连接对象Connection 对象,ResultSet对象和

Statement对象 ――》调用getSql()方法获得sql语句――》执行sql

句。

程序主干部分代码:

public boolean execute() throws Exception {

………

try{

con=nection();

stmt=Statement();

rs = eQuery(getSql());

}catch(Exception e){

tackTrace();

}

while (()){

12

JSP网上书店系统(论文)

if (!isadmin)

{

userid = g("id");

}

flag = true;

}

………}

2:op_

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

op_book类有以下属性:

private book abooks = new book();

//新的图书类

private rvletRequest request; //

建立页面请求

private boolean sqlflag = true ; //对接收到的数据

是否正确

private Vector booklist; //显示图书列表向量数

private int page = 1; //显示的页码

private int pageSize=5; //每页显示的图书数

//页面总数 private int pageCount =0;

//查询的记录 private long recordCount =0;

总数

public String sqlStr="";

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

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

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

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

详细信息”

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

to_String();把字符串以“ISO 8859-1”编码形式输出,使页面正

常显示。

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

13

JSP网上书店系统(论文)

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

abooks对象中。

重要操作:主要介绍getRequest()

getRequest()方法

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

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

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

设计思想:获取页面传递的Request对象—》分解

Request对象—》获取表单参数值—》把参数值设置成图书对象

abooks相对应的属性值。

程序主干代码:

public boolean

getRequest(rvletRequest

newrequest) {

………

request = newrequest;

String BookName =

kName(to_String(BookName));

String author =

ameter("author");

hor(to_String(author));

String publish =

ameter("publish");;

lish(to_String(publish));

String bookclass =

ameter("bookclass");

kClass(bc);

String bookno =

ameter("bookno");

ameter("BookName");

14

JSP网上书店系统(论文)

kNo(to_String(bookno));

String picture =

ameter("picture");

ture(to_String(picture));

price =new

Float(ameter("price")).floatValue();

ce(price);

amount = new

Integer(ameter("amount")).intValue();

unt(amount);

String Content =

ameter("Content");

tent(to_String(Content));

……..

}

3:op_:

为了使用上的方便,我们把对用户的管理,包括用户的添加,删除,修改,查询

等集合成一个管理类。

该类具有以下属性:

private user user = new user(); //

用户对象

private rvletRequest request; //建立页面

请求

private Vector userlist; //显示用户列表向量数组

private int page = 1; //显示的页码

private int pageSize=8; //每页显示的图书数

//页面总数 private int pageCount =0;

//查询的记录总数 private long recordCount =0;

//出错信息提示 private String message = "";

//注册后返回的用户名 private String username = "";

15

JSP网上书店系统(论文)

private long userid = 0; //注册后返回的用户ID

add():负责用户的添加。

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

delete():负责删除指定ID的用户。

get_alluser():取出书店所有用户的信息。

getGbk():返回指定字符串的GBK编码。

getUserinfo():负责取得用户的详细信息。

update():负责修改用户资料。

getRequest():获取表单数据,并分解存储。

4:op_

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

该类具有以下属性:

private rvletRequest request; //建立页面请求

private HttpSession session; //页面的session;

private boolean sqlflag = true; //对接收到的数据是否正确

private Vector purchaselist; //显示图书列表向量数组

private Vector allorder; //订购单列表

private Vector order_list; //订单清单列表

private int booknumber = 0; //购书总数量

private float all_price = 0; //购书总价钱

private boolean isEmpty = false; //库中的书数量是否够购买的数

private int leaveBook = 0; //库存数量

private String orderId = ""; //用户订单号

private boolean isLogin = true; //用户是否登录!

private int page = 1; //显示的页码

private int pageSize = 15; //每页显示的订单数

private int pageCount = 0; //页面总数

private long recordCount = 0; //查询的记录总数

该类的主要操作(省去了属性相关的getX()/setX()操作)

addnew():负责向购物车中添加新购买的图书。

delete():负责从数据库中删除指定ID的订单。

modiShoper():负责修改购物车中已选的图书。

delShoper():负责删除购物车中的物品。

16

JSP网上书店系统(论文)

getAllorder():负责从数据库中的订单列表中查询指定用户的订单列表。

getGbk():获得指定字符串的GBK编码。

getOrder():获得单个订单对象。

payout():提交购物车,把订单插入到数据库中。

update():该方法负责当用户付款后,把数据中对应订单的是否付款标记修改成已付

状态。

重要操作:主要介绍addnew()

addnew()方法

功能:负责向购物车中添加一条新记录。

参数设计:页面传递的request对象。

返回值:boolean类型,成功返回true,否则返回false

设计思路:从页面获得表单数据(request对象中)---》获得图书编号等参数值—》

判断购买数量是否合法—》如果是可以操作,否则不能操作—》判断是否第一次购买—》

如果是第一次购买,按第一次购买操作—》否则查询购买列表,找是否有相应项,有则

直接修改数量—》否则添加新记录。

函数代码:

public boolean addnew(HttpServletRequest newrequest) throws Exception{

…………

request = newrequest;

String ID = ameter("bookid");

String Amount = ameter("amount");

long bookid = 0;

int amount = 0;

try {

bookid = ong(ID);

amount = nt(Amount);

}

catch (Exception e) {

return false;

}

if (amount < 1)

return false;

session = sion(false);

17

JSP网上书店系统(论文)

if (session == null) {

return false;

}

purchaselist = (Vector) ribute("shopcar");

String sqlStr = "select leav_number from book where id=" + bookid;

try { con=nection();

stmt=Statement();

rs = eQuery(sqlStr);

if (()) {

if (amount > (1)) {

leaveBook = (1);

JSP网上书店系统(论文)

if (kNo() == kNo()) {

unt(unt() + unt());

mentAt(itList, i);

match = true;

break;

} //if name matches结束

} // for循环结束

if (!match)

ment(iList);

}

ribute("shopcar", purchaselist);

return true;

}

4.2.2客户界面设计与实现

1:界面头和界面尾设计。

为了提高代码的重用性,把客户界面部分相同的头和尾作成两个独立的块,分别

命名为 。这两个文件是单纯的html代码,jsp页面中只要通过

<%@include

file=’’/bookshop/inc/%>

< %@include file=’’/bookshop/inc/%>

他们的效果如下图4-1

4-1界面头和尾部分显示效果

用户登录界面代码如下:

19

JSP网上书店系统(论文)

<%@page contentType="text/html;charset=gb2312"%>

<%@ page session="true" %>

<% String mesg = "";

if( ameter("username")!=null

String username =ameter("username");

String passwd = ameter("passwd");

username = new String(es("ISO8859-1"));

passwd = new String(es("ISO8859-1"));

rname(username);

swd(passwd);

//(username+passwd);

if (e()){

ribute("username",username);

String userid = ng(rid());

ribute("userid",userid);

direct("");%>

mesg = "登录出错!" ;

}

&& !ameter("username").equals("")){

<% }else {

JSP网上书店系统(论文)

4-2用户登录界面

3.在线购书功能模块设计。

在该模块用户可以看见书店现有的样子,用户可以查找书通过分类,关键字查找。

户可以购买图书,页可以查看图书的详细资料,还可以跳转到其他的模块,例如查看

购物车,查看订单信息等。在这个模块中我们要用到JavaBean

_book_bookclass三个JavaBean。对于他们的介

绍我已经在前面介绍了这里就不在一一罗列了。详情见4.24.3

其中我把导航条抽出来单独作为一个模块: 左边的查找框也单独设计成一

个模块:两个纯粹的html代码部分,在jsp页面中直接调用。效果如下图

4-3所示:

21

JSP网上书店系统(论文)

4-3在线购书模块效果显示

在线购书页面模块代码如下:

<%@page contentType="text/html;charset=gb2312"%>

<%@ page import=".*" %>

<%@ page import="ass" %>

<%@ page session="true" %>

<%@ page import=""%>

<% int pages=1;

String mesg = "";

if (ameter("page")!=null

&& !ameter("page").equals("")) {

String requestpage = ameter("page");

try {

pages = nt(requestpage);

mesg = "你要找的页码错误!";

}

book_e(pages);

}%>

4:购物车模块页面设计。

在购物车这个模块当中用户可以修改购买数量,可以删除已选图书,可以提交购物车,

也可以清空购物车,同时也可以继续购书。在这个模块中我们用到了_book

_bookclass_buy三个JavaBean.关于他们的介绍在前面已

经罗列出来了这里就不在一一说明了。该模块运行时效果如图4-4所示:

} catch(Exception e) {

22

JSP网上书店系统(论文)

4-4购物车模块显示效果

页面核心代码如下

<%@page contentType="text/html;charset=gb2312"%>

<%@ page import=".*" %>

<%@ page session="true" %>

<%@ page import=".*"%>

<%@ page import="_book" %>

<%@ page import="_buy" %>

JSP网上书店系统(论文)

if (modi!=null && !("")) {

if ( !oper(request) ){

if (mpty())

mesg = "你要的修改购买的图书数量不足你的购买数量!";

else

mesg = "修改购买数量出错!";

mesg = "修改成功";

}

}else if ( del != null && !("") ) {

if ( !per(request) ) {

mesg = "删除清单中的图书时出错!" ;

}

}else if (payoutCar != null && !("") ) {

if ((request) ) {

mesg = "你的购物车中的物品已提交给本店,你的订单号为 "+

Attribute("shopcar");

if(!ogin())

mesg = "你还没有登录,请先登录后再提交";

else

erId() + "
请及时付款,以便我们发货!";

} else {

} else {

mesg = "对不起,提交出错,请稍后重试, 出错!";

}

} else if (clearCar != null && ! ("") ) {

Attribute("shopcar");

mesg = "购物车中的物品清单已清空";

}%>

5.其他页面显示效果图。

24

JSP网上书店系统(论文)

4-5订单页面显示效果

订单页面我们可以看到自己已经提交的所有订单,可以查看订单的状态和详细情况。并色

环境以弹出窗口的形式显示订单信息。这种功能主要是通过javascript脚本语言实现的。如:

26

JSP网上书店系统(论文)

5 系统测试

5.1 数据库连接

在系统的整个开发工程中,我们最容易碰到的难题是数据库连接这个模块。在

JavaBean中连接数据库注意的一些事项有:

1 首先要下载Microsoft SQL Server 2000 Driver for JDBC 这个包,并安装。

2Microsoft SQL Server 2000 Driver for JDBC lib

,, Tomcat

commen/lib文件夹下。

3 ,, 三个文件的路径添加到CLASSPATH

中。

4 如果使用的操作系统是Windows xp 在安装 SQL Server2000 后必须下载SP3

丁并安装,否则打不开1433端口号。

在数据库连接中出现问题将会出现异常提示信息:

Exception

e(JspServletWrappe

eJspFile(:

292)

e(:236)

e(:802)

:372)

root cause

interException

e(:83)

_005flogin_jsp._jspService(adm_005f

e(:94)

e(:802)

e(JspServletWrappe

login_:72)

:324)

27

JSP网上书店系统(论文)

eJspFile(:

292)

e(:236)

e(:802)

如图5-1所示:

5-1数据库连接异常

这个时候可能出现的问题是数据库服务器没有开启,或者是没有安装Microsoft SQL

Server 2000 Driver for JDBC 这个包。

5.2检测网站运行速度

一、用Ajax提高用户体验

由于我的网站上链接字体的大小是根据点击次数决定,所以每次点击都要提交到服务

器端并记录次数,再在客户端打开网站链接。这在localhost测试的时候没有发现问题,

但是部署到服务器上,会感到明显的等待。解决办法就是用Ajax。用户点击网站链接后

就直接打开,再通过Ajax将点击的事件提交到服务器端记录。这样用户感觉不到任何延

时。

二、将逻辑移到客户端的javascript

28

JSP网上书店系统(论文)

在开始的时候,“网站标签高亮”和“手气不错”的功能都是提交到服务器端操作,

然后返回结果的。后来,我发现其实很多逻辑是可以移到客户端, javascript来实现

的。Javascript非常强大,可以完成很多复杂的逻辑。将逻辑移到客户端的javascript

中,可以很有效的减少和服务器通讯的次数,获得更好的访问速度。

三、解决进程的

由于采用的是fastCGI的方式,我配置了。可是,我发现系统进程中,

有大量的进程被标记为 < defunct>(失去功能)。这些进程会导致服务器有

时无法正常访问。我开始尝试用命令来kill掉这些进程,但是很快发现这无法从根本上

解决问题。后来,我看到一个老外在blog上提到一个解决方案,将改名为

。原来,是一个dreamhost的系统进程,它的健壮性是可

以得到保障的。果然,我将改名为 后,的现象再没有出现。

四、优化SQL语句

SQL语句的执行通常也是一个很花费时间的操作。经过检查,我发现我的一条SQL

句,是一个嵌套三层的子表查询。而这条SQL还必须是一个Raw SQL即不能采用django

OR Maping。这意味着不能被cache缓存,每次都是真刀真枪的执行。更失败的是,经

过我的分析,这条SQL完全可以不执行。这是一次设计上的失误,标准的over design(

渡设计)。当时,我是想通过数据库得到一个最精确的统计值。后来发现,这个值完全可

以用一个近似的常量代替。优化SQL尤其是避免不必要的SQL执行,带来的效果是非常

明显的。

29

JSP网上书店系统(论文)

6 总结

本文论述了一个基于WEB的网上商品销售系统,基本上体现了电子商务各方面的优

点。我所设计的网上书店,主要是熟悉和掌握JSP的技术以及对电子商务进行初步的探

讨和设计。

在软件开发编码阶段我才用原型法,先设计出个一个实现简单功能的系统在更具需

求一步步完善系统的功能。由于是才采用面向对象的设计所以系统中由很多类和方法,

我将他们归类将经常使用的方法放在单独的类文件中,在以后的编码中只要通过对名称

空间的引用就能调用他们。本系统在实现传统的网上书店功能基础上对增强系统的安全

性进行了初步的尝试,但是由于这方面研究的不深所以实现的与需求还有一定的差距。

在设计和制作网上书店这一个整体项目的过程中,也培养了自己的综合能力和从全局

考虑的思想。将复杂的问题简单化,作为电子商务应用的一个缩影,我所涉及的模块项

目完成了其后台具有的基本功能,使自己对于电子商务的了解更加深入和明了。

当然,其中也遗留下了一些待解决的问题,但出于自己水平有限,作为一个网上书店

系统,该项目上有一些不完善和函待改进之处,特别是在网站信息的安全性上需要进一

步加强。

30

JSP网上书店系统(论文)

参考文献

[1]汪孝宜主编.JSP数据库开发实例精粹[M.电子工业出版社,200527-36

[2]林上杰,林康司编著.JSP2.0技术手册[M.电子工业出版社,2004401-422

[3]万峰科技编著.JSP网站开发四“酷”全书[M.电子工业出版社,2006263-266

[4] Bruce Eckel著,陈昊鹏 饶若楠等译.JAVA编程思想[M.机械工业出版社,20051-43

[5]耿祥义编著.JSP基础编程[M.清华大学出版社,2004165-166

[6]Dejan sunderic 等著.SQL server 2000高级编程技术[M.清华大学出版社,200250-127

[7]四维科技主编.JSP网络编程与实例[M.人民邮电出版社,20053-17192-199

[8]施伯乐,丁宝康,汪卫编著.数据库系统教程[M.高等教育出版社,200342-127

[9]张海潘编著.软件工程导论[M.清华大学出版社,2003165-166

[10]张端金,高曙,杨苹等编著.计算机专业英语[M.武汉理工大学出版社,2003165-166

[11]徐建波,周新莲.Web设计原理于编程技术[M.中南大学出版社,2005172-238

[12]张文建,魏茂军等编著.JSP案例开发[M.中国水利水电出版社,200556-110

[13]Martin Bond等著,周辉 付煜等译.21天学通J2EEM.人民邮电出版社,200556-70

[14]廖疆星等著.中文Dreamweaver网页设计教程[M.冶金工业出版社,200314-128

[15]杜兆将等著.SQL Server 数据库管理与开发教程[M.北京大学出版社,200637-63

31

JSP网上书店系统(论文)

经过两个多星期的课程设计,在指导老师江耘的指导下基本开发完成了网上书店。

系统功能还不是十分的完善,但基本上能完成用户在网上购买书籍。其主要功能有用户

登录,书籍查询,购物车,以及订单处理等功能。

通过课程设计学到了很多新知识,个人能力与了很大的提高。在设计中经常遇到种种

困难与挫折,几次陷入停顿状态。在这种情况下,指导老师不但给予我的很多的鼓励,

而且在设计上提出了很多正确的建议和善意的批评。

在这里,顺利完成毕业设计我首先要感谢指导老师江耘的细心指导,他帮助解决了我

设计中的疑难和困惑,为我完成设计提供了极大的帮助。我们的这次设计顺利完成离不

开杜雪平老师的帮助,在此向他表示衷心的感谢!