The Development Example of Web Site Pilot Based on Software Engineering
With Java
---The design of “Campus Ebookstore” based on JSP technology
摘要
本文以“网上书店”的制作过程为例,以设计为主,介绍了网上书店的整体开发技术的考虑和选择、网上书店的框架设计、原型开发及其具体设计、网站的部分代码开发等内容;以及开发过程中开发工具的使用心得、编码心得。
附录则详细介绍了网站运行所需要的工具和使用方法,以及一些辅助工具的使用。
关键字:软件工程、Java、JSP、E-R图、原型。
Abstract
This article introduce how to select the developing technology, the bookstore’s frame design, prototype’s developing and particularly design and the developing of code; besides, including how to use developing tools’ and what have I learned during the course of develop. In a word , primary on design.
Key Words: Software Engineering, Java server pages, Java, Prototype
前言
网络的发展速度是非常惊人的,自70年代网络的出现至今,仅仅过了30年左右的时间,而联网的主机数量、网络的规模、信息交换的数量和速度都已经有了长足的进步。今天的人们,无论身在何方,只要他们连入了互联网,利用各种网络中的传输技术(电子邮件、图文传输),便将他们联系在一起。尽管他们实际上是天涯海角。网络技术使这个世界变得小了,增进了人们之间的联系。
网络的发展,刺激了新技术的诞生。其中JAVA技术是比较突出的,它一出现便立刻引起了人们的关注。JAVA语言的各种特点:简单的语法、完全的面向对象的机制、跨平台、完善的技术体系等等使得它在企业应用、网络的应用程序的开发等诸多领域都占据了主导的地位。因此,JAVA是一项非常具有吸引力的先进的技术。
设计主要采用JSP(Java server pages)技术,并综合相关的Java技术,数据库技术和软件工程的理论。在整个开发的过程中,需要充分的发挥自己的能力,包括学习能力、成员间的协作能力和个人独立解决问题的能力。因此,我们觉得这个项目无论是对我们自己还是作为以后的参考资料,都十分的有意义。
在4个多月的毕业设计中,经过不断的学习、探索和指导教师的帮助,我们已经初步完成了当初的设计构想,实现了该范例的大部分功能。不仅仅学习到了最新的网站开发技术,而且还在实际的设计中锻炼了自己的各个方面的能力,全面的提高了自己的综合素质。
目 录
第一章 序 言
1.1本次毕业设计的意义……………………………………………………5
1.1.1学习和掌握电子商务网站的整体运作过程………………………5
1.1.2“软件工程试验”项目的重要意义………………………………5
1.2我在开发过程负责的工作………………………………………………7
第二章 网上书店开发技术的考虑和选择
2.1设计方案的确定…………………………………………………………8
2.1.1目前流行的开发技术的比较………………………………………8
2.1.2为什么要选择JSP技术……………………………………………8
2.2开发的软、硬件环境……………………………………………………9
2.2.1开发使用的技术……………………………………………………10
2.2.2开发的软件环境……………………………………………………10
2.2.3开发的硬件环境……………………………………………………10
2.3本次开发的约束条件……………………………………………………10
第三章 设计目标及网上书店原型的确定
3.1设计目标的确定…………………………………………………………12
3.2原型的需求分析…………………………………………………………12
3.2.1相关网站的功能构架的考察………………………………………12
3.2.2原型的功能划分……………………………………………………15
3.4基于原型的设想功能的介绍……………………………………………16
第四章 网上书店的框架设计
4.1原型的业务流程的确定…………………………………………………17
4.2网上书店原型构架的详细介绍…………………………………………17
4.2.1原型中主要模块的构成……………………………………………17
4.2.2原型模块的DFD图…………………………………………………18
第五章 原型开发及其具体设计
5.1模块的调用关系及各模块中包含文件…………………………………21
5.1.1模块的调用关系……………………………………………………21
5.1.2模块中包含的文件…………………………………………………21
5.2原型的数据库的设计,E-R图…………………………………………23
5.3设计和实现的过程中所用表达工具……………………………………23
5.3.1VISIO…………………………………………………………………23
5.3.2文本编辑工具………………………………………………………23
5.4部分代码的编写…………………………………………………………25
第六章 网上书店项目开发过程中的问题小议
6.1开发过程中遇到的困难和解决…………………………………………26
6.1.1服务器的选择………………………………………………………26
6.1.2中文问题的解决……………………………………………………26
6.2如何在机器上安装服务器并使用………………………………………27
6.3 使用JavaBean和使用jsp的不同及其转换…………………………29
第七章 结束语…………………………………………………………………33
致谢…………………………………………………………………………………34
参考文献…………………………………………………………………………34
附录
第一章 序 言
___________________________________________________
1.1该项目的意义
1.1.1学习和掌握电子商务网站的整体运作过程
Internet的发展,为改变传统的商业运作模式提供了一种技术上的可行性的方案:利用Internet的技术和协议,建立各种企业内部网(Intranet),企业外部网(Extranet),通过廉价的通讯手段,将买家与卖家、厂商和合作伙伴紧密结合在了一起,消除时间与空间带来的障碍,从而大大的节约了交易成本,扩大了交易范围。而在实际的生活中,这种方案已经被广泛的运用到了实际的商业活动中了,人们将这种交易模式称为:电子商务。
当今比较流行的网上书店国外有“亚马逊(www.amzon.com)”,国内有“当当(www.dangdang.com)”。它们都是相当优秀的电子商务网站,对其他的网站提供了良好的典范。设计中可以学习参考他们的思想,了解和熟悉整个网站的开发流程及完整的电子商务网站应有的功能和注意事项。
设计和完成一个电子商务网站的,将会牵涉到许多技术上的问题,如:动态网页制作技术的,后台数据库的设计和管理,通过实际的制作个网站,可以避免纸上谈兵,在实践中掌握上述技术的使用。
1.1.2“软件工程试验项目”的重要意义
1.相对其它项目来说是综合的
其它的项目一般仅仅研究一个课题,而这个项目集合了多个方面的内容,如数据库、电子商务、动态网页开发等,综合性较强。
2.规模较大,可以弥补教学和实践的距离
整个项目以开发一个完整的网站为目标,虽然只有基础的功能,但是规模已经不小,这就需要同学有更强的动手能力,把以往纯理论的教学和实践结合起来
3.作为以软件工程为指导的项目开发的参考
软件工程在当今的软件开发中扮演着相当重要的角色。
1.历史形势
当前的软件行业已经相当的发达,软件的“体积”也达到了空前庞大的水平,越来越大的软件就要求越来越完善的设计和管理方案来支持。制作软件就像建造一座摩天大楼,地基打得越牢,以后的建设就越容易,要是地基没有打好,以后就容易倒塌。因此,软件在开发前必须做好设计工作,为以后的开发打下基础,以免开始时的错误导致最后整个软件的崩溃和报废,从而造成很大的经济损失。
以下是一个软件从设计、开发、使用到“死亡”等各阶段的时间周期数据:
需求分析 2% 规格说明 4%
计划 1% 设计 6%
模块编码 5% 模块测试 7%
集成 8% 维护 67%
表1-1
从以上的资料可以看出,软件工程在软件开发中的地位相当的重要,要是少了他,软件的开发就充满了风险。本次毕业设计采用了软件工程的方法作为开发指导;所以可以把本次网站的模型作为软件工程的参考,了解软件工程的各个阶段是怎样具体实施的,指出应该注意的地方,不足和诸多其它毛病。
4.学习新技术,培养自学和探索能力
目前流行的技术有JSP、ASP、PHP等,结合HTML都能够快速的开发网站,要完成毕业设计就要在其中选择一种最合适的技术来进行开发,无论选择某一种技术,都能够学习到最新的开发技术。此外开发的时候一定会遇到疑难问题,这就需要自己寻找资料和开动脑筋。
5.发挥团队精神
这个项目规模较大,而同学又是首次开发,因此必须多人合作才能完成,其间同一个小组的同学必须有团队合作精神,才能将各人所完成的任务和其他人进行交流、探讨。
6.符合教学改革趋势
作为“21世纪的通行证”,计算机正受到越来越多人的关注。而且计算机教育已走出学校的大门,逐渐成为每个人终身学习的内容。事实上,现在IT教育不仅在学校中,在社会上也日益受到重视。许多有识之士认为,信息技术不单是应用广泛的高新技术,且已成为其他许多学科的基础,并构成人类文化的组成部分,渗透于现代生活的各个方面。
CC2001(Computing Curricula2001)草案要求:非计算机专业大学生应在毕业前“了解计算机文化的发展与特点,具有计算机相关法律和道德意识;掌握多媒体技术和网络技术的软、硬件基础知识和基本操作;了解早期与现代程序设计方法的区别,具备能使用某种语言编写和调试简单程序的能力;了解单机和网络操作环境,具有在人机交互环境中运用常用软件处理日常事务的能力;具有结合专业需要开发计算机应用系统的初步能力和较强的自学能力。”
而实际上国内的情况和CC2001的要求还差的很远,所以,国内IT教育正在进行改革,争取在十年之内能够普及IT教育。
这个项目完全符合国内教学改革趋势。
7.因材施教
对不同层次的同学提供不同程度的示范作用,这一点将在第三章中有明确体现。
1.2我在开发过程中负责的工作
在此次开发中,我主要负责整个项目的设计部分(包括功能模块的确定、网站的构架、业务流程、数据库等)和部分代码的开发测试工作。
第二章 网上书店开发技术的考虑和选择
___________________________________________________
2.1设计方案的确定
2.1.1目前流行的开发技术的比较
合理的选择开发技术,对于网站开发的完成情况有着非常重要的影响。要开发一个网站,首先要选择一个动态网页开发技术。当前比较流行的动态网页开发技术有JSP、ASP、PHP。它们的特性比较如下:
技术名称 ASP JSP PHP
对数据库的支持 好 好 好
开发难易度 容易 容易 较难
使用平台 Windows9X/NT Windows/UNIX UNIX
安全性 不好 好 不好
对组件的支持 支持 支持 不支持
执行方式 解释执行 编译之后执行 解释执行
跨平台 不好 好 好
表2-1
2.1.2为什么要选择JSP技术
这三种都是在传统的HTML代码中,利用HTML标签的扩展,构成页面。不难看出,JSP的综合实力是最强的,尤其是在安全性和跨平台性两个方面,比其他的两种技术都要好。
此外,JSP技术是基于Java的,要想对他了解更多,就必须了解Java语言的特性。
Java是1990年由Sun公司开发用来适应于消费类电子产品的软件,但是由于商业上的种种原因,这些电子产品没有能够推向市场,Java也差点夭折。1994年,经过Java开发小组的认真研究,决定把改进后的Java用于Internet的WWW开发中,1995年,Sun公司举行了隆重的Java的发布会,并推出了测试版,此后,Netscape公司宣布将支持Java,同时,Sun公司又联合SGI公司和Macromedia公司联合制定了基于Java的开放式多媒体标准。不久,IBM, Microsoft, Oracle, Novell和Borland等著名公司也相继宣布支持Java。Java成为了当今最流行的网络编程语言。
Java之所以能够成为互联网上的宠儿,主要是和它的特点分不开的。Java的许多研究者根据Java的作者所著写的Java技术的“白皮书”中所解释的Java的设计初衷以及取得的成就,整理出Java十一项关键的特点。这十一项特点也是比较公认的。Java的初学者可以在很多Java的入门教材中找到相似或相近的观点。
这十一项特点主要有:
简单:Java的语言非常简单,省略了C++中许多极易混淆的语法特性。
可移植:Java所采用的虚拟机原理,使它脱离了硬件的束缚达到跨平
台应用。
面向对象:Java完全支持面向对象技术的编程结构。
解释型:Java的字节码机制说明了它是一种半编译和半解释性的语言。
分布式:Java提供了强大而易用的网络应用。
高性能:Java通过改进的解释器和特殊的CPU可以显著提高字节码的
执行效率。
健壮:Java取消了指针这种容易出错的结构,提高了程序的健壮性。
多线程:多线程的优点是具有了更好的交互性和实时行为。
安全:Java的安全机制是现今所有语言中最为成功的。
动态:Java可以不断向库内添加新方法以及新实例变量。
中性结构:Java生成的字节码是一种在各种不同的平台上保持独立的
格式。
相信接触过Java的人都对他的“一次编写,到处运行”特性映像很深,这句话恰如其分的反映了Java的可移植性。由于Java的面向对象特性使得他编写的程序可以没有平台的针对性,仅仅定义一个总体的结构和方法,在不同的平台上定义具体内容。在学习的过程中,我感觉到了这一点。比如说“鸟”,麻雀是鸟,喜鹊也是鸟,在Java中可以仅仅定义“鸟”这个概念,当你需要区别是什么鸟的时候,才需要具体定义各种你鸟的概念。所以,“鸟”这个总概念就可以拿到各个平台上使用,至于具体的定义,就由各个平台自己定义了。
当然Java其他的特点也相当的有用,但是我们也是第一次接触Java,还没有切身体会。但是它的面向对象的特性和易学性已经给了我们足够的选择理由。因此,最后我们选择基于Java的JSP技术作为动态网页的开发技术。
2.2开发的软、硬件环境
2.2.1开发使用的技术
动态网页开发技术:JSP技术(包含Java, Java Bean, Java Script, HTML等);
数据库:Microsoft Access;
2.2.2开发的软件环境
操作系统:Windows 2000 professional
所用软件:
JDK1.3(Java的编译环境,是所有Java开发工具的运行基础)Resin2.1(作为web服务器存在)
Dreamweaver4.0(网页制作工具,可以高效的开发HTML代码)Access(微软的数据库,简单易用)
辅助工具:Ultra Edit(好用的文本编辑器,用于编写代码)
2.2.3开发的硬件环境
PC微机:
CPU:Inter celeron566
内存:256M
硬盘:20G
推荐硬件环境:
PC微机:
CPU 主频300以上
内存 最少64M,推荐128M以上
硬盘 6.4G以上
2.3本次开发的约束条件
本次毕业设计,我们是初次接触这些技术,都不熟练,而时间又很短,所以对于开发出来的成品不可能十全完美,只能体现标题所反映的内容。
从技术上来说,JSP良好的跨平台性,使得开发出来的JSP程序可以跨平台的使用。(在WINDOWS平台上开发出来的程序不经修改或是很少的修改,便可以移植到LINUX或其它的支持JSP技术的平台)。但是由于时间比较紧迫,而且加上开发环境的限制(不易找到LINUX平台),使得跨平台的特性无法得到展示。
上述的时间和开发环境的限制,局限了此次的开发在较为常用的WINDOWS 2000平台上开展。
第三章 设计目标以及网上书店原型的确定
___________________________________________________
3.1设计目标的确定
开发的网站要求功能齐全,这样才有参考的价值,以后开发的同学就可以拥有全面的开发资料,可以理解的更加透彻,因此,我们初步决定要开发一个功能齐全的网上书店原型。经过讨论,我们觉得应该对不同能力的同学提供不同的资料。要是同学以前有一些这方面的经验,或者是接受能力较强,那么就应该更加进一步,这同时也符合国内的教育改革状况。所以,我们同时还提出了网上书店基本型和扩展型的概念,供能力较强的同学进一步考虑。
网站三个目标的具体规划如下:
网上书店系统 具有功能 面向对象
原型 网上书店应有的功能齐全,但是没有其他人性化的功能
所有的同学
基本型
拥有原型的所有特性,增加了一些人性化功能(如:打折、广告、缺书登记等)
能力较强的同学
扩展型 拥有基本型的所有特性,增加了更多的功能(如:论坛、文化宣传、积压书提示等)
表3-1
3.2原型的需求分析
3.2.1相关网站的功能构架的考察
考察的网站主要是国内有名的“当当”网上书店,它的主页如下:
图3-1
进入网站后不用急着登录,你可以随便看看,新的图书和软件介绍详细,可以看到除了图书外,还有影碟、游戏等多种商品,避免了网站销售的单一性。
当你需要购买的时候,就需要登录了:
图3-2
如果你没有注册过,就需要注册成为用户。
除了这些功能,比较人性化的功能还有
热门图书类别:
快速搜索:
图3-3
新品快递等。总之这些功能可以尽量满足用户的要求,让用户购买的时候觉得方便、实用。
当你选择了某本书或者某种商品,就可以加入购物车,准备购买:
图3-4
最后当你结账的时候,只要点击结账就可以了。这样整个购买过程就结束了。这些就是我们能够以用户的角度从“当当”得到的信息。
总的来说,“当当书店”提供了完整的电子商务活动。具体的包括:订购商品,如何付款,到货周期,商品退换。特别值得一提的是:在如何付款之中,还包括了:(海外用户)付款方式,账户余额,网上银行支付等功能。当当书店还提供比较完备的帮助系统,是用户可以和快的了解如何购书,以及付款方式。
其他的网上书店如:亚马逊、人民时空图书、计算机书店,也作了一定的考察,但不是很详细,因此没有采集图像资料,仅作了一份粗略的比较表,如下:
网站名 亚马逊 人民时空图书 当当书店 计算机书店
ASP 有 有 有 有
JSP 不确定 没有 没有 没有
面向的顾客群 所有的购物者 购书者 购书者和其他人 购买计算机图书
网页布局 简洁 复杂 简洁 简单
网页背景颜色 浅色 深色 浅色 深色
搜索图书 有 有 有 有
购买图书 有 有 有 有
留言 有 有 有 有
会员登记 有 有 有 有
帮助 有 有 有 有
商家登陆 不确定 没有 没有 没有
取消定购 不确定 不确定 有 不确定
书市动态 有 有 有 有
验证顾客身份 有 不确定 有 不确定
数据加密 不确定 不确定 不确定 不确定
表3-2
其中有一些功能由于没有作过详细的调查,所以不能确定,但是以上调查证明要想成为一个完整的电子商务网站,有一些功能如会员、购买等必须有,这就为本次设计提供了参考。
3.2.2原型的功能划分
根据上述的考察并且结合我们自身的情况,最终确定原型功能如下:
前台
1.用户注册和登录 2.图书的购买
3.图书浏览和查询 4.用户留言
后台
1.进书记录 2.库存查询
3.消息发布 4.用户管理
5.销售和账目管理
虽然功能不是很全面,但是已经拥有作为一个网上书店应有的全部基本功能。详细的功能划分将在第四章的DFD图中给出。
3.3基于原型的设想功能的介绍
上面是原型的功能,在此基础上,增加功能后又分出:
1.基本型
它包括原型中所有的功能
增加功能:
1.供书商信息 2.缺书信息提示
3.畅销书提示 4.缺书登记
5.打折服务 6.排行榜
7.Logo标志
2.扩展型
它包括基本型的全部功能
增加功能:
1.图书积压提示 2.可以随机转换的广告
3.论坛 4.其他项目(如软件销售)的增加
这两种形态供有能力的同学参考,他们增加的功能都是现在成功的网上书店必备的人性化功能。由于时间关系,我们并没有对此作进一步的开发工作。
第四章 网上书店的框架设计
___________________________________________________
4.1原型运行的流程情况
原型业务流程示意图
图4-1
注:现在的电子商务网站即使不是用户也可以随便挑选、查看商品,当你想购买物品时才需要进行成为用户的注册。这样方便你对各家网站进行比较,是一种招揽顾客的手段。因此,原型也按照这种思维方式进行设计。当然,图中发货的环节是不可能进行的,不过为了保持原型的完整性,它的流程和网站的功能中仍然存在这一环节,网站中的功能从订单状态中体现。
4.2网上书店原型构架的详细介绍
4.2.1原型中主要模块的构成
依据原型运行的流程情况,设想原型中的主要模块如下:
前台:
1.用户注册与登录 2.图书浏览与检索
3.购物车 4.客户留言
5.用户信息更新
后台:
1.库存管理 2.售书处理
*3.打折处理 4.账目处理
5.客户留言管理 6.会员信息管理
*7.广告处理 8.消息发布
其中有*号的为基本型或扩展性要求的模块。
从前后台模块的数量可以看出运行一个网站主要还是靠后台的管理和维护,用户接触的只是网站可视化的一小部分。
4.2.2原型模块的DFD图
DFD图是设计时不可缺少的网站设想功能模块示意图,有了它实际开发的时候才有依据。
首先是网站总体的情况图(第0层),该图反映了网站运行时涉及到的所有情况,网站的所需功能在一览无余:
图4-2
然后是第一层,它将网站的前后台进一步细化:
图4-3
然后就是网站的功能的层层细化工作,直到每个模块,下面是第二层的图:
图4-4
图4-5
以上就是网站功能细分到第2层的DFD图,当然还可以进一步往下,将每个功能划分的更加明确,不过出于简单的考虑,以后的DFD图将在附录中给出。
第五章 原型开发及其具体设计
___________________________________________________
5.1模块的调用关系及各模块中包含的文件
5.1.1模块的调用关系
图5-1
5.1.2各模块中包含的文件
前台
用户注册与登录 register.jsp 、register2.jsp、logon.jsp、 logout.jsp
图书浏览与查询 booklist.jsp、book_info.jsp、book_kind.jsp search.jsp、search2.jsp
购物车 addcart.jsp、shoppingcart.jsp、delbook.jsp
modifynum.jsp、order.jsp、submit_order.jsp
用户留言 leave_note.jsp、leave_note2.jsp、note_list.jsp
用户信息更新 user_info.jsp、user_info2.jsp、user_update.jsp
订单查询 bill_ask.jsp、bill_ask2.jsp
前台公用文件 data.jsp、user_login.jsp、bottom.jsp
表5-1
后台
管理员登录与注销 index.jsp、logon.jsp、logout.jsp
管理员信息修改 adm_info.jsp、adm_info2.jsp
库存信息 view_sum.jsp、view_sum2.jsp
用户管理 user_admin.jsp、user_del.jsp
图书管理 book_edit.jsp、book_edit2.jsp、book_update.jsp
订单管理 bill_admin.jsp、bill_not_pay.jsp、bill_not_pay1.jsp、bill_send_book.jsp、bill_send_book2.jsp、bill_solved.jsp
进货管理 inbook.jsp、inbook2.jsp、in_old_book.jsp、in_old_book2.jsp、in_new_book.jsp、in_new_book2.jsp、in_book_rst.jsp
消息管理 mess_admin.jsp、mess_edit.jsp、mess_edit2.jsp、mess_edit3.jsp、mess_add.jsp、mess_add2.jsp、mess_del.jsp
留言管理 note_reply.jsp、note_reply2.jsp、note_reply3.jsp
账目管理 account.jsp、account_date.jsp、account_date.jsp
后台公用文件 adm_login.jsp、data.jsp、error.jsp、total_error.jsp
表5-2
其他文件
JavaBean文件 dateTransfer.class、check.class、Buyercar.jsp
后台导向文件 admin.jsp
表5-3
5.2原型的数据库的设计,E-R图
图5-2
各个实体之间的关系如图所示,由于将实体的属性加入后太过复杂,因此图中没有画出。除了用户和店主这两个实体外,其他的实体实际上就是一个数据库中的二维表,在附录将会列出。
5.3设计和实现的过程中所用表达工具
5.3.1VISIO
在设计过程中用到的工具主要就是VISIO(微软的一个制图软件),用它能够实现最初阶段的各种设计方案的设想图,如DFD图和E-R图。由于所有你想要的图形都已经在该软件中准备妥当,所以你只要选择需要制作的图形种类,然后就可以用它所提供的现成的资料轻松的画出想要得图。
5.3.2文本编辑工具
JSP代码的开发工具可以有多种,最简单的就是NotePad(windows自带的记录本)。它简单,方便,快捷,但是没有高亮度显示Java合法字符的功能。
其次就是UltraEdit,它具有和NotePad一样的优点,而且有将各个部分(如关键字、注释、Java语句)进行不同颜色加亮的优点,非常的好用。而且对于新的语言,如JSP可以在它的一个文档中加入识别码,然后它就能够进行正确的加亮。
UltraEdit的实用性和诸多优点让我们选择他作为代码的开发编辑工具。
5.4部分代码的编写
在本次开发中我也涉及了一部分的代码编写工作,主要是购物车部分的 代码。购物车部分由主要分为加入购物车以及根据购物车中的商品创建订单并发送至服务器。
1.购物车的实现
购物车中的商品并没有加入到数据库,而是利用Cookie来保存用户所选定的商品信息,当用户选定某个商品时,就会为用户创建一个相应的Cookie数组,然后将信息存入,代码如下:
Cookie cookie=new Cookie("BID"+request.getParameter("bid"),"1");
cookie.setMaxAge(30*24*60*60); //设定Cookie有效期限30日
response.addCookie(cookie);
而用户察看购物车的时候,就从相应的Cookie中提出信息,用户就可浏览了。相应的,用户删除不要的图书时,即从Cookie中删除相应图书信息。
2.提交订单
当用户决定要购买的商品时,就从Cookie中提出相关图书信息,并根据用户的自身信息生成一份订单,并存入数据库,由于都是一些数据库的操作和读取相应值的操作,在这里就不加详述,具体代码在附录中。
第六章 网上书店项目开发中遇到的情况
___________________________________________________
6.1开发过程中遇到的困难和解决
6.1.1服务器的选择
要运行JSP程序除了需要有编译器外(设计中使用JDK1.3),还要有能够作为服务器的工具。我们从比较流行的,也比较简单的两种服务器中作选择。
Resin:
它是目前最快的JSP平台,表现成熟而且完全免费,从相关网站上下载后就可以直接使用。此外,它能够提供出色的出错提示,而且地点非常准确;安装完后内建Java类库,在遇到困难时可以求助。
Tomcat:
它的结构非常合理,操作界面是文字界面,不宜操作,而且提供的出错信息众多而无实用价值。
当然以上只是在开发前搜集的资料,仅作为参考。当我们进行开发后,对这两种服务器都进行了一段时间的使用。得出的结论就是,Resin的速度非常快,而且相比Tomcat,它提供的错误信息更为准确且简洁实用。
因此,我们最后选择Resin作为服务器。
6.1.2中文问题的解决
在JSP中,我们使用的是Resin服务器,所以中文问题遇到的不是太多,但是有一段时间在数据库中输入的中文还是不能在页面上正常显示,遇到有些字会出现乱码的现象。于是我们找了一些参考资料,寻求解决问题的方法。
1.得到验证的方法(这个方法我们用过,有明显的效果)
在JSP页面中用page指令制定文件的编码方式为gb2312,就是加入如下语句:
<%page contentType=”text/html:charst=gb2312”%>
这样乱码现象就好了许多,但是在某些页面下还是会出现,至今没有找到彻底的解决方法。
2.资料提供的方法(由于条件所限,没有验证过)
(1).安装JSP服务器时,安装一个英文系统;
(2).编译Servlet的时候指定编码方式;
(3).在JSP服务器的配置文件中加入编译参数。
6.2如何在机器上安装服务器并使用
Resin的安装对于初学者来说有些陌生,但是配置过一次后就会大致了解。
任何服务器的使用都必须建立在安装完JDK的前提下,因为JSP在执行的时候是先进行编译的,必须安装编译环境。安装完JDK后,需要进行环境变量的设置:
(1).在桌面上用右键单击“我的电脑”,在弹出的菜单中选择“属性”。
(2).选择弹出的“系统特性”面板中的高级选项,如图:
图6-1
(3).单击“环境变量”按钮,弹出环境变量的对话框:
图6-2
(4).在“系统变量”中选择“path”,单击“编辑”按钮:
图6-3
(5).在弹出的对话框中的“变量”中填入JDK的安装路径,我的为c:/jdk/bin。
(6).在“环境变量”面板中单击“新建”按钮,在弹出的对话框中加入变量名“CLASSPATH”,其值为“c:/jdk/lib/tool.jar”。
这样JDK就安装完成了。
接下来就安装Resin,由于是免费软件,Resin不用安装,只要将下载的压缩文件解压到想要得路径下即可。然后进入C:/resin/bin(我的解压目录),运行httpd.exe就可以运行了。
在安装过程中,遇到了一个难题,就是不知道第六步的添加是在“用户”还是在系统,经过实践和寻找其他的资料,最后确定是在用户中。(Resin的具体使用将在附录中阐述)
6.3 使用JavaBean和使用Jsp的不同及其转换
6.3.1为什么要使用JavaBean
JavaBean是类似COM组件的、用来描述Java的软件组件模型。通过JavaBean的组合可以快速地生成新的应用程序。他的最大优势在于:可以实现代码的重复利用,进而可以方便程序的维护,特别是对于构建大型的电子商务网站。多个JSP文件可以共用一个JavaBean文件,这样一旦需要修改网站功能,只要修改一个文件,而不需要修改多个JSP文件。所以,现在他已经得到了广泛的应用。
6.3.2我们使用JavaBean的情况
由于JavaBean是从JSP中抽象出来的公用功能的方法和类的集合,要想很好的掌握是需要时间和实践的。我们第一次接触它,所以没有用的太多,仅仅在“购物车”模块中使用。但是已经深刻体会到JavaBean就是抽象化的JSP公用方法这个概念。
1.使用JavaBean和使用JSP的不同
如果使用的是JSP,那么调用过程如下:
用户请求执行JSP文件(包含所有的方法)执行结果
如果使用的JavaBean,整个过程就会不同:
用户请求执行JSP文件(只有方法调用,没有方法实体)
调用JavaBean(方法实体载体)运行结果返回JSP
重复上述步骤直到所有调用完毕执行结果
虽然好像使用JavaBean后步骤多了,而且执行的结果一样,但是维护的时候确实很方便,JSP文件根本不需要修改,只要保留JavaBean中的方法名,改变方法体后仍然可以调用。
如:在JavaBean(Buyercar.java)中定义如下方法
public class Buyercar{ //定义Bean中的类
………………
private static String strDBDriver="sun.jdbc.odbc.JdbcOdbcDriver";
private static String strDBUrl="jdbc:odbc:ebookstore";
java.sql.Connection conn;
java.sql.Statement stmt;
java.sql.ResultSet Rst; //定义结果集
public Buyercar(){
//加载数据库驱动
try{
Class.forName(strDBDriver);
}
catch(java.lang.ClassNotFoundException e){
System.err.println("Buyercar():"+e.getMessage());
}
}
public ResultSet getBookList(){ //定义getBookList()方法
String strSql=null; //定义Sql查询变量
try{
//建立与数据库的连接
conn=DriverManager.getConnection(strDBUrl);
stmt=conn.createStatement();
strSql="select * from book_info";
Rst=stmt.executeQuery(strSql);
}
//捕获异常
catch(SQLException e){
System.err.println("Buyercar.getBookList();"+e.getMessage());
}
return Rst; //返回结果集
}
然后在JSP文件(booklist.jsp)中调用它:
<% ……………………
ResultSet Rst=buy.getBookList(); //调用方法
…………………… %>
在JavaBean中定义的是一段连接数据库的方法,在JSP文件中调用它后,就可以通过定义的结果集Rst来对从数据库book_info表中读出的数据进行操作。如果多个JSP文件都要用到book_info中的数据,就可以重复利用该JavaBean,非常方便。在本设计的“购物车”模块中基本上所有的JSP文件都对该Bean进行了调用。
2.JavaBean和JSP的转换
要想将JavaBean转换成独立的JSP,只要将Bean中抽象出来的方法赋予实际的变量,然后放到调用该方法的JSP文件中相应的位置。还用上面的例子来说,将Bean中的方法放到JSP文件中后结果如下:
<% ……………………
java.sql.Connection conn;
java.sql.Statement stmt;
java.sql.ResultSet Rst; //定义连接数据库所需变量
String strSql=null;
try{
//加载数据库驱动
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(java.lang.ClassNotFoundException e){
System.err.println("Buyercar():"+e.getMessage());
}
try{
//建立与数据库的连接
conn=DriverManager.getConnection("jdbc:odbc:ebookstore") stmt=conn.createStatement();
strSql="select * from book_info";
Rst=stmt.executeQuery(strSql);
}
//捕获异常
catch(SQLException e){
System.err.println("Buyercar.getBookList();"+e.getMessage());
}
显然这样一来该JSP文件就能独立进行读取数据库的操作,而不用调用方法了。但是这样的文件显得很冗长,不容易读,而且保密性不好。因为JavaBean的执行过程是不可见的,所以安全性较高,而JSP的安全性就不是很可靠。因此这样的转换在大型的电子商务网站中是不实用的。应该是将JSP的需要抽象成JavaBean才对,这就需要很好的设计和较强的经验。但是这能使我们更加明白JavaBean ,所以还是有意义的。我们在编码的时候经过实践,证明了这样是正确的。
第七章 结束语
___________________________________________________
7.1概述工作
这次毕业设计共有大约4个多月,在整个毕业设计过程中,学习了Java技术、JSP技术、一些数据库知识以及可视化开发工具,。在学习相关的技术的同时,一边摸索,一边进行毕业设计的题目的制作。在6月初,已经初步完成了预先所设计的“网上书店”的原型。通过这次实际开发的机会,掌握了初步的JSP技术和与此相关的JAVA(主要是操作数据库)技术。网站原型也基本上达到了所预期的效果。
7.2.体会与收获
JSP技术作为一项新的动态网页设计技术,确实有它的独特之处:1)它如同ASP技术一样容易入门,而且他的语法较为简单,如果你有相关的高级编程语言的基础的话,它的语法根本不是障碍。2)JSP实际上是SERVLET(服务器段小程序)的进一步的封装和抽象,使得开发人员可以集中精力关注核心的编程问题;大大的减轻了开发人员的负担。3)你可以用JAVA语言开发出JAVABEANS组件,封装相同的代码,进行相关的复杂的计算,从而在开发的时候可以减轻动态面的程序的编写量,同时还可以简化相关的逻辑处理。而且,JAVABEANS组件相比其他的组件技术要容易的多,而且,他不必再系统中注册,便可以使用。4)JSP实际上是SERVLET的一种抽象,如果能够在使用JSP的同时,灵活的使用相关的SERVLET技术,可以进一步的体会JSP技术的优势。
这次毕业设计中,我的主要工作是设计,同时也进行了前台部分的编写。这就更让我认识到了在软件开发过程中设计的重要性;设计一个好的软件结构(包括相关的模块组成和调用关系、考虑模块的相对独立性、数据库结构设计和实际的软件流程)对于最终的软件质量和中间的开发量来说是起着关键的作用。
毕业设计能够综合提高我们的能力。除了学习到了相关的技术之外,还学会了如何自学、如何独立的解决相关的问题以及如何与同学合作解决问题。一个软件的成功与否不仅和程序设计有关,还与自己的在各个方面的知识的掌握程度、与人合作的能力都有着密切的关系。
7.3不足
由于是首次进行这个方面的设计,所以许多方面都有不足,比如DFD图的设计有些地方不合理,E-R图的设想也不是很完善。网站的模块完成后也有许多功能不完善的地方,操作不当就会出现错误。
在这次毕业设计中,由于开发环境和时间的限制,没有能够学习使用SERVLET,这不能不说是一个巨大的遗憾。如果能够有时间的话,还可以进一步的修改其中的不足之处(如:交易模拟的修改、增加页面内容、更为完整的购书服务)等。
在中文问题上,特别是用JAVA编写的应用程序在向数据库中加入汉字的时候出现了乱码的问题,而且没有找到一个可以彻底解决方案。
7.4今后的发展方向
由于对于JSP技术是一个初步学习的过程,同时由于对于开发大的项目的经验不足,使得代码的重复较大;但是同时发现进行网站的设计和代码的编写和有意思。我准备以后进一步完善设计方案,同时自己重新编写整个网站的代码并增加网站功能。如果条件允许,还可以发挥Java易移植性,进行相关的跨平台的移植的探索
致谢
非常感谢我的指导教师:李昭智教授。感谢他在整个毕业设计的过程中的无私帮助,为我提示网站流程的思路,为我提供参考书籍,为我提供了许多有价值的参考意见和相关的技术资料。