• 927.50 KB
  • 2022-04-22 13:50:28 发布

网上订餐JSP系统毕业论文.doc

  • 44页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'网上订餐JSP系统毕业论文目录第一章绪论11.1课题的背景及意义11.2课题分析21.3技术方案的选取21.3.1开发语言21.3.2开发模式选择31.3.3数据库4第二章系统概述52.1运行环境52.1.1软件运行环境52.2需求分析52.2.1管理者的需求52.2.2系统使用者需求52.2.3系统维护人员需求62.3总体设计原则62.4系统体系结构分析62.4.1C/S结构与B/S结构62.4.2B/S与C/S的优越性7第三章程序设计93.1系统数据库设计93.2程序模块设计113.3系统模块总图143.3分页显示算法143.4上传下载的实现163.4.1jspSmartUpload组件的特点163.4.2、jspSmartUpload组件相关类173.4.3 jspSmartUpload实例213.5程序界面设计22II 第四章系统实现主要技术254.1JavaServerPages(JSP)技术简介254.2JSP和其他类似或相关技术的一个简单比较264.3最佳JSP应用服务器Tomcat264.4javaBean组件技术274.5JSP中JavaBeans的应用304.5.1操作指令314.5.2JavaBeans的Scope属性314.7Tomcat配置334.7.1Server.xml文件配置334.8数据库编程354.8.1数据库编程基础及语法354.8.2本系统中的连接方式37第五章测试问题及解决385.1java汉字处理问题及解决395.2文件下载问题39结论40结束语41参考文献42附录43IIII网上订餐管理系统第一章绪论4 网上订餐管理系统第一章绪论第一章绪论1.1课题的背景及意义随着Internet的普及,越来越多的企业建立了自己的WWW网站,企业通过网站可以展示产品,发布最新动态信息,与用户进行交流和沟通,与合作伙伴建立联系,以及开展电子商务等。其中网上订餐系统是电子商务网站的一种,随着信息化时代的到来,人们对生活质量的追求不断提高,由于人们工作,学习的关系,常常无法正常吃饭,随着网络的普及,网上订餐业务在中国开始盛行,人们也通过网络订餐的方式获得自己需要的食物。这样既节省了时间,也可以为广大用户提供更多的口味。该系统使用JSP(Java语言)和SQLServer2000数据库开发,实现了网上订餐系统的动态管理,使得网上订餐的管理更加及时、高效,提高了工作效率。该管理系统具有一般网上订餐系统的功能,从大的方面来讲主要包括资讯管理,餐饮管理,预定管理,用户管理等几个大的功能模块。该系统是基于B/S(Browser/Server,浏览器/客户端)模式实现,基于Myeclipse平台架构开发设计,主要实现对网上订餐的使用、需求、以及用户订餐的动态管理等。随着Internet/Intranet技术的兴起,将原本在单机或本地局域网上运行的数据库系统移植到因特网中,即开发基于B/S模式的新一代MIS(ManagementInformationSystem,管理信息系统)系统,正成为技术发展的趋势。为了保证系统性能的高效性、可扩展性,以及达到数据共享和网络化管理的目的,本系统采用B/S体系结构进行设计开发。1.2课题分析该系统分为前台和后台两个部分,前台部分主要是用户进行资讯的浏览,以及订餐,订座管理等,主要是面向用户的。而后台主要是管理人员对前台数据的维护和设置,主要是面向管理人员的。网上订餐系统无论是在应用的深度还是广度都是一个逐步发展的过程。在开发一个局部系统时要充分考虑到局部系统和整个目标系统之间的相容性和完整性,以利于今后整个系统的建立。该系统从总体上把握系统的设计,在具体的设计实现上我们围绕着三个方面的需求展开,即管理者、系统使用者、系统维护者。4 网上订餐管理系统第一章绪论对于本系统的不同使用者,其功能与业务逻辑是不尽相同的。对于普通用户而言,系统主要像用户展示一个美观的界面,用户在可以浏览各类资讯,查询餐饮信息,订餐,订座等。而管理员则需要在后台维护这些数据。本系统的主要功能应是用户的订餐了,用户可以查询菜品信息,当发现自己满意的以后,可以将这些菜品添加到自己的购物车,此时用户虽然选择了要预定的商品,但是还不具备法律效用,当用户通过一定方式(此方式不属编程范围)得到预定许可后,管理员在后台可以审核是否批准该用户的订餐请求,当管理员同意了该用户的订餐请求,即可将该用户所预定的发送给客户,此时客户在客户端可以看到自己购物车的状态(此时是已经通过审核),如果管理员没有批准或没有处理等,该客户都可以在前台看见相关信息。4网上订餐管理系统第一章绪论4网上订餐管理系统第二章系统概述1.3技术方案的选取1.3.1开发语言随着互联网技术的不断发展,基于浏览器/服务器(Browser/Server简称B/S)体系结构的应用程序得到了空前广泛的应用。但是服务器之间的通讯,尤其是在不同平台上运行的服务器之间的通讯仍然不是一件容易的事情。因为大多数Internet应用程序都是以数据库为中心的,方便的访问多种数据源的能力也比以往任何时候都更加重要。JSP无疑可以轻松地实现这类功能,JSP技术是一种服务器端的HTML页面中嵌入JAVA代码的脚本语言,它比一般脚本语言的执行速度更快,由于JSP是基于JAVA语言的,所以它可以运行在UNIX/LINUX和WINDOWS平台上,是一种难得的动态网页开发语言。在动态内容的解决问题中,还存在其他的解决方法,但是开发人员要掌握这些技术很难。例如,JavaServlets这样的技术就可以使得用Java语言编写交互式的应用程序的服务器端的代码变得更加简单。JavaServlets就是一个基于Java技术的运行在服务器端的程序(与Applet不同,后者运行在浏览器端)。开发人员编写出Servlet程序,用来接收来自Web浏览器的HTTP请求,动态地生成响应,然后发送包含HTML或XML文档到浏览器。但是使用这种方法,整个网页必须都在JavaServlet中制作。如果开发人员或者Web管理人员想要调整页面的显示,就不得不从新编辑并编译JavaServlet程序。采用这种方法,编写带有动态内容的页面需要有很熟练的应用程序开发技巧和经验。很显然,一个简单的创建动态页面的解决方案要能解决以下的问题:1.能够在任何Web或应用程序服务器上运行2.将应用程序逻辑和页面显示分离3.能够快速地开发和测试4.简化开发基于Web的交互式应用程序的过程JavaServerPages(JSP)满足这些要求,它整合了存在的Java编程环境提供支持的技术和工具,产生了一种新的、开发基于Web应用程序的方法,这个方法给予使用基于组件应用的逻辑页面的设计者提供了强大的功能。44 网上订餐管理系统第二章系统概述1.3.2开发模式选择JSP有两中开发模式JSP+JavaBeans和JSP+Servlet+JavaBeans,在模式一中,JSP页面独自响应请求并将处理结果返回客户。所有的数据通过Bean来处理JSP实现页面的表现。模式一技术实现了页面的表现--和页面的商业逻辑相分离。大量使用模式一形式,常常会导致页面被嵌入大量的脚本语言或JAVA代码。当需要处理的商业逻辑很复杂时,这种情况会变得非常糟糕。大量的代码会使整个页面变得常复杂。对于前端界面设计人员来说,这简直不可想象。这种情况在大项目中最为常见,这也造成了代码的开发和维护出现困难,造成了不必要的资源浪费,在任何项目中,这样的模式总会导致多多少少的定义不清的响应和项目管理的困难。综上所诉,模式一不能满足大型项目的需要,但是可以较好的满足小型应用,在简单的应用中可以考虑模式一。模式二JSP+Servlet+JavaBeans中,Servlets技术是一种采用JAVA技术来实现CGI功能的一种术。Servlets技术是运行在WEB服务器上,用来生成WEB页面。Servlets技术非常实用于服务器端的处理和编程,并且Servlet会长期驻留在他们所处的位置。但是在实际的项目开发过程中,页面设计者可以方便地使用普通HTML工具来开发JSP页面,Servlet却更适合于后端开发者使用,开发Servlet需要的是JAVA集成开发环境,也就是说Servlet技术更需要编程人员。模式二技术结合了JSP和Servlet技术充分体现了两者的技术优点。在此模式中通过JSP来表现页面。通过Servlet来完成大量的事务处理。Servlet充当一个控制者的角色,并负责向客户发送请求。Servlet创建JSP所需要的Bean和对象,然后根据用户的请求行为,决定将哪个JSP页面发送给客户。从开发的观点,模式二具有更清晰的页面表现,清楚的开发者角色划分,可以充分利用开发小组的界面设计人员,这些优势在大型项目开发中表现的尤为突出,使用这一模式,可以充分发挥每个开发者各自的特长,界面设计人员可以充分发挥自己的表现力,设计出优美的界面表现形式,设计人员可以充分发挥自己的商务处理思维,来实现项目中的业务处理。在大型项目中,模式二更被采用。但是,本系统开发只是一个小型的JSP应用,同时由于Servlet难于掌握,所以在本课题中采用了模式一开发,既JSP+JavaBean。1.3.3数据库SQLServer2000是一个分布式的关系型数据库管理系统,具有客户/服务器体系结构。MircrosoftSQLServer2000是一个应用广泛的数据库管理系统,具有许多显著特点,例如,用户喜欢的易用性、适合分布式组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性能价格比等。SQLServer44 网上订餐管理系统第二章系统概述2000系统中,数据库的管理采取了先进的动态管理机制,数据库的大小可以随着数据量的变化而缩小或者扩大。另外,用户数据都是非常重要的和保密的,这些数据存储在MircrosoftSQLServer2000系统中有绝对的安全性保障,有完善的用户帐户策略和许可机制,只有经过授权的用户才能访问系统,并且执行相应的操作和访问允许访问的数据。未经授权的用户既不能执行相应的操作,也不能访问数据库中的相应数据。SQLServer2000系统具有强大的网上功能,可以在Internet上发布数据库中的数据。在MircrosoftSQLServer2000系统中,允许用户简单的使用一些向导和工具把数据库的数据发布到网络上,并且可以根据需要来调度修改已经发布的数据。44 网上订餐管理系统第二章系统概述第二章系统概述2.1运行环境2.1.1软件运行环境服务器端:操作系统:WindowsXP操作系统数据库:MicrosoftSQLServer2000网络通信协议:TCP/IP支持软件:tomcat,MyEclipse2.2需求分析网上订餐管理系统无论是在应用的深度还是广度都是一个逐步发展的过程。在开发一个局部系统时要充分考虑到局部系统和整个目标系统之间的相容性和完整性,以利于今后整个系统的建立。进货订单管理系统从总体上把握系统的设计,在具体的设计实现上我们围绕着三个方面的需求展开,即管理者、系统使用者、系统维护者。2.2.1性能需求分析该系统在性能功能上应达到如下需求:◆操作简单、界面友好:完全控件式的页面布局,使得菜品,资讯,座位等信息的录入工作更简便,许多选项包括餐厅信息,桌位,包房信息等只需要点击鼠标就可以完成;另外,跟踪出现的提示信息也让用户随时清楚自己的操作情况。对常见的类似网站的管理的各个方面:基本信息录入、浏览、删除、修改、搜索等方面都大体实现,顾客对菜品的预定及支付方式;◆即时可见:对客户预定餐饮信息的处理(包括录入、删除)将立即在主页的对应栏目显示出来,达到“即时发布、即时见效”的功能;◆系统运行应该快速、稳定、高效和可靠;◆在结构上应具有很好的可扩展性,便于将来的功能扩展和维护。2.2.2产品质量需求分析主要质量属性详细要求正确性按照需求正确执行任务,完成各个模块的相应要求。44 网上订餐管理系统第二章系统概述健壮性具有较高的容错能力和恢复能力。可靠性故障发生率每运行1000小时低于3次性能,效率软件的输出结果更新周期应该与系统的信息更新周期相同。在网络情况良好的情况下,3秒内可响应用户请求。易用性易理解性:软件研制过程中形成的所有文档语言简练、前后一致、易于理解以及语句无歧义。安全性防止软件受到意外或蓄意的存取、使用、修改、毁坏或泄密的软件属性其数据应能集中存放于总部的数据库服务器,客户端不保存任何业务数据和数据库连接信息,也不应进行什么数据同步.可扩展性能方便的进行二次开发,满足对功能的扩充或提高并能提高相应的安全控制。兼容性不易与其他软件起冲突。可移植性可方便移植到其他系统环境中正常运行。…2.2.3可行性分析随着经济的快速发展,B2C电子商务越来越受到人们的关注。网上订餐类网站,已经如雨后春笋般的出现在了个大城市。特别在公司,企业内部,团体订餐已经成为了趋势。同时,随着全国人民的精神、物质和文化生活高度的提高,人们已经不在仅仅停留在吃饱的程度,不但要吃饱,还要吃好,而且口味也越来越挑刺,正因为如此网络订餐业务的出现,正迎合了这些人的口味,他们不但省去了自己做饭的麻烦,而且也能寻找和发现新的菜品,品尝不同风格的菜品,网络订餐业务在中国有着极大的发展空间以及良好的背景。而当代大学生,白领工作人士作为社会中的重要群体,他们对饮食的要求都在不断提高,饮食在他们生活中起着重要作用。因此,面向大学生和都市白领人士的网络订餐网站的设计有着良好的现实意义。综合以上两点分析,此次毕业设计决定利用JSP和SQL技术设计网上订餐管理系统。JSP可以创建和运用动态、交互的WEB服务器应用程序。同时,JSP具有向跨平台跨服务器的优点。SQLServer2000是一个杰出的数据库平台,具有功能强大,安全可靠等特点,可用于大型联机事务处理、数据仓库及电子商务等。44 网上订餐管理系统第二章系统概述2.3总体设计原则1、开放性、可扩充性、可靠性原则开放系统是生产各种计算机产品普遍遵循的原则,遵循这种标准的产品都符合一些公共的、可以相互操作的标准,能够融洽的在一起工作。开放系统使得各种类型的网络和系统互连简单、标准统一,容易扩展升级。从而适应广大用户需求的多变性和产品的更新换代。2、良好的用户操作界面用户操作界面美观、方便、实用,使用户能在较短的时间内掌握其使用方法。3、实用性原则任何系统的设计都要考虑其实用性,系统开发的目的是为了实现业务处理自动化、规范化,提高工作效率,减轻工作人员的劳动强度,减少开支。4、工作平台设计原则能适应不同的操作平台,不同的网络。2.4系统体系结构分析2.4.1C/S结构与B/S结构客户/服务器(CLIENT/SERVER)结构,是将一个系统分解为前台的客户应用程序和后台的服务器部分,通过网络连接应用程序和服务器。这种结构的核心是客户应用程序向服务器发送服务请求,服务器完成后端处理。服务器是一台管理数据资源并执行数据库引擎功能(加数据存储、操作和保护)的计算机,处理结构由服务器发回客户应用程序,由客户应用程序对处理结构进行显示。这种结构的优点是只有处理后的数据在网络中传递,大大减轻了网络的负担,而且由于通过服务器端统一管理数据,易于保证数据的一致性。B/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3层结构。B/S结构利用不断成熟和普及的浏览器技术实现原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。这种结构更成为当今应用软件的首选体系结构,.net也是在这样一种背景下被提出来的架构,JAVA技术已经是很成熟的应用了。2.4.2B/S与C/S的优越性44 网上订餐管理系统第二章系统概述C/S(Client/Server,客户端/服务器)是建立在局域网的基础上的,B/S是建立在广域网的基础上的。传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件,没能提供用户真正期望的开放环境;B/S结构则不同,它的前端是以TCP/IP协议为基础的,企业内的WWW服务器可以接受安装有Web浏览程序的Internet终端的访问,作为最终用户,只要通过Web浏览器,各种处理任务都可以调用系统资源来完成,这样大大简化了客户端,减轻了系统维护与升级的成本和工作量,降低了用户的总体拥有成本。总的来说,两者有如下差别:1.硬件环境不同  C/S一般建立在专用的网络上,小范围里的网络环境,局域网之间再通过专门服务器提供连接和数据交换服务。B/S建立在广域网之上的,不必是专门的网络硬件环境,例如电话上网,租用设备,信息自己管理,有比C/S更强的适应范围,一般只要有操作系统和浏览器就行。2.对安全要求不同  C/S一般面向相对固定的用户群,对信息安全的控制能力很强。一般高度机密的信息系统采用C/S结构适宜,可以通过B/S发布部分可公开信息。B/S建立在广域网之上,对安全的控制能力相对弱,面向是不可知的用户群。3.对程序架构不同  C/S程序可以更加注重流程,可以对权限多层次校验,对系统运行速度可以较少考虑。B/S对安全以及访问速度的多重的考虑,建立在需要更加优化的基础之上。4.软件重用不同C/S程序可以不可避免的整体性考虑,构件的重用性不如在B/S要求下的构件的重用性好。B/S对的多重结构,要求构件相对独立的功能。能够相对较好的重用。就如买来的餐桌可以再利用,而不是做在墙上的石头桌子。5.系统维护不同  系统维护是软件生存周期中,开销大,相当重要C/S程序由于整体性,必须整体考察,处理出现的问题以及系统升级难,可能是再做一个全新的系统。B/S构件组成方面构件个别的更换,实现系统的无缝升级。系统维护开销减到最小,用户从网上自己下载安装就可以实现升级。6.处理问题不同  C/S程序可以处理用户面固定,并且在相同区域,安全要求高的需求,与操作系统相关,应该都是相同的系统。B/S建立在广域网上,面向不同的用户群,分散地域,这是C/S无法作到的,与操作系统平台关系最小。7.用户接口不同  C/S多是建立在Window平台上,表现方法有限,对程序员普遍要求较高。B/S建立在浏览器上,有更加丰富和生动的表现方式与用户交流,并且大部分难度减低,降低开发成本。44 网上订餐管理系统第二章系统概述8.信息流不同  C/S程序一般是典型的中央集权的机械式处理,交互性相对低。B/S信息流向可变化。9.成本降低,选择更多  软件系统的改进和升级越来越频繁,B/S架构的产品明显体现的更方便的特性。无论用户的规模有多大,有多少分支机构都不会增加任何维护升级的工作量,所有的操作只需要针对服务器进行,如果是异地只需要把服务器连接上网即可立即进行维护和升级,这对人力、时间、费用的节省是相当惊人的。传统的C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件,由于产品的更新换代十分快,这么高的代价和低效率已经越来越不适应了。在JAVA这样的跨平台语言出现之后B/S架构更是飞快地普及起来了。10.面向电子商务时代的技术  将来所有的应用系统几乎都在互联网上运行,企业发展电子商务也是不可避免的,而B/S架构的软件则代表了将来的技术,只要连上互联网或内部广域网就可以与全球的客户相连,与各地的分支机构相连。  综上所述,可以看出B/S结构的众多优点[5],比其他结构的先进性,无论是办公自动化管理系统,人力资源管理系统,客户关系管理系统,ERP等等,发展的趋势是不断融合,结合当今这些方面的发展,我们可以得出这样的结论:采用统一的B/S结构开发的产品无论是现在还是将来都是最好的选择,而在今后的实际工作开发中,则应该首选B/S结构。44网上订餐管理系统第四章系统实现主要技术44 网上订餐管理系统第四章系统实现主要技术第三章程序设计3.1系统流程分析3.1.1业务流程分析1、浏览与选择餐饮信息:顾客进入网站即刻自动提供购物车,不需身份确认就可以在网站上随意浏览,登录系统后则可挑选餐饮(可增加、删除、修改购物车上餐饮的类型),网站提供餐饮信息列表,最先添加的餐饮信息优先列表给顾客作为选购时的参考;  2、判断:顾客确定所购餐饮信息后,系统将判断该顾客是否注册,如果是,则可直接填写订单;否则,提示顾客登记注册;  3、提交订单:已选购的餐饮信息需填写订单细节。  4、注册:顾客可在公司的网站上注册后提交申请;5、确认:后台管理将实时得到顾客的注册信息,通过电话及其他方式确认,当确认后,系统管理员可对该顾客提交的预定信息进行审核。6、送货与付款:网上的每一份订单都将实时存入后台数据库,后台操作人员通过电话及其他方式确认,确认后将及时实施审核该订单:向顾客送货,货到付款,完成网上交易。顾客登录系统浏览菜品资讯获得购物车浏览餐饮信息选择餐饮信息管理员审核Y交易结束N44 网上订餐管理系统第四章系统实现主要技术3.1.1数据流程分析该系统数据流程比较简单,管理员可以添加餐厅信息(包括餐桌,包房等),餐饮信息(包括菜品名等信息),资讯信息等,然而这些信息顾客是可以浏览的,但是顾客没有权限对这些信息进行修改,这些信息对于顾客而言是单向的。对于预定信息,管理员可以查看及审核预定信息,顾客可以增删改预定信息,并将预定信息提交给管理员等待审核,因此预定信息对于顾客和管理员而言都是双向的。3.1.1.1数据流图数据流图简称DFD,是SA方法中用于表示系统逻辑模型的一种工具。它以图形的方式描述数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型。系统的数据流图如下所示:系统DFD图3.2系统数据库设计3.2.1数据库E-R图44 网上订餐管理系统第四章系统实现主要技术Users(用户表)用户名密码权限orders(订单表)订餐人时间备注电话应收款地址发布Seat(订座表)电话人数订餐人发布Shop(订单菜单表)菜名数量单价所属st(订座菜单表)类别名图片单价菜名数量单价菜名点菜category(类别表)Food(菜单表)44 网上订餐管理系统第四章系统实现主要技术3.2.2数据库表设计系统关键数据表如下:其关系见E-R图1.用户表(users):用户登录是需要用户名和密码,所以用户数据表中必须包含用户名(uname)、密码(upass)两个信息,还有些其他的用户信息,比如power指的是用户权限(管理员还是非管理员)。从功能上数据库表设计如表3.1。表3.1用户表列名数据类型长度uidint4unamevarchar50upassvarchar50powerint42.菜品信息表(food):菜品信息表主要描述菜品信息,如:菜品ID号(foodid),此ID号为系统自动生成;菜品名称(fname);菜品价格(price);所属分类ID(categoryId);图片信息(images)。商品信息表详细描述如表3.2表3.2菜品信息表列名数据类型长度foodIdint4pricemoney8categoryIdint4imagesvarchar503.订座菜单表(st):客户订餐的一些相关信息,如stId指的订餐ID号,此ID和是系统自动生成的;菜品名称(fname);订购数量(num);价格(price);座位编号(seatId)等,具体描述表3.3表3.3供应商表列名数据类型长度stIdint4fnamevarchar50numint4pricemoney8seatIdint4fIdint444 网上订餐管理系统第四章系统实现主要技术4.订单表(orders):订单表有一下描述信息。订单ID(ordersId),订购人姓名(name),地址(address),联系电话(tel),价格(price),备注信息(context)等,具体描述如表3.4所示:表3.4订单表列名数据类型长度ordersIdint4namevarchar50addressvarchar50telvarchar50pricenumeric9uidint4contexttext165.订单菜单表(Shop)具体描述如表3.5所示:表3.5订单菜单表列名数据类型长度fIdint4fnamevarchar50numint4priceMoney8uidint4sidint46.订座表(Seat)具体描述如表3.6所示:表3.6订座表列名数据类型长度seatIdint4uidint50telvarchar50riqivarchar50numint4namevarchar4xiaoshivarchar5044 网上订餐管理系统第四章系统实现主要技术3.3系统结构设计网上订餐系统的模型结构如下图所示:客户端浏览器客户端浏览器客户端浏览器Web层业务层数据访问层系统配置数据库从前面的需求分析中得知,可以将功能分为前台和后台两类,因此模块也分为两大类:前台模块和后台模块。下图为系统模块总图:网上订餐管理系统前台模块后台模块注册登录菜品查询订单查询用户权限管理菜品管理订餐管理订座管理用户订餐用户订座用户管理系统模块总图44 网上订餐管理系统第四章系统实现主要技术3.4核心算法实现——分页显示算法int i;一页显示的记录数 = 10;取得待显示页码PageSet:strPage = page;if(strPage==null)//page参数为空时,此时显示第一页数据{待显示页码 = 1;}else{待显示页码 = Integer.parseInt(strPage);//将字符串转换成整型if(待显示页码<1) 待显示页码 = 1;}执行SQL语句并获取结果集ResultSetrs = sqlStmt.executeQuery("SQL”);获取记录总数rs.last();记录总数 = rs.getRow();记算总页数总页数 = (记录总数+设置一页显示的记录数-1) / 一页显示的记录数;调整待显示的页码if(待显示页码>总页数) 待显示页码 = 总页数;// 分页情况分类  //选择向上翻if(待显示页码>1){选择向上翻一页传递参数pageda=待显示页码-1gotoPageSet;}//选择向下翻if(待显示页码<总页数){选择向下翻一页传递参数pageda=待显示页码+1gotoPageSet;}If(选择到尾页)44 网上订餐管理系统第四章系统实现主要技术{选择到尾页传递参数pageda=总页数gotoPageSet;}页次=待显示页码/总页数页 ;  if(总页数>0){将记录指针定位到结果集的第一条记录上((待显示页码-1) * 一页显示的记录数 + 1);i = 0;while(i<一页显示的记录数 && 数据库指针不在结果集尾部){输出要分页显示的数据库中的内容;将数据库指针移动到当前行的下一行;i++;}} 第四章系统实现主要技术4.1JavaServerPages(JSP)技术简介在开发JSP规范的过程中,Sun公司与许许多多主要的Web服务器、应用服务器和开发工具供应商,还有各种各样富有经验的开发团体进行合作。最后找到了一种平衡了应用和页面开发的具有可移植性和易用性的开发方法,JSP技术特征在多个方面加速了动态Web页面的开发:1)将内容的生成和显示进行分离使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识或者小脚本来生成页面上的动态内容,这些内容是根据请求来变化的,例如请求帐户信息或者特定的一瓶酒的价格。生成内容的逻辑部分被封装在JavaBeans组件中,并且捆绑在小脚本中,所有的脚本在服务器端运行。如果核心逻辑被封装在Beans中,那么其他人,如Web管理人员和页面设计者,在编辑和使用JSP页面的时候,将不会影响到内容的生成。在服务器端,JSP引擎解释JSP标识和小脚本,生成客户端请求的内容,例如,通过访问JavaBeans组件,使用JDBC技术访问数据库或者其他文件,并且将结果以HTML(或者XML)页面的形式发送回浏览器。这将有助于作者保护自己的代码,并且又保证任何基于HTML的Web浏览器的完全可用性。2)强调可重用的组件绝大多数JSP页面依赖于可重用的,跨平台的组件(JavaBeans或者Enterprise44 网上订餐管理系统第四章系统实现主要技术JavaBeansTM组件)来执行应用程序所要求的更为复杂的处理问题。开发人员能够共享和交换执行普通操作的组件,或者发布这些组件使更多的使用者或者客户团体能够使用。1)采用标识简化页面开发Web页面开发人员不会都是熟悉脚本语言的编程人员。JavaServerPage技术封装了许多功能,这些功能是容易使用的、同时与JSP相关的XML标识中进行动态内容的生成时需要的。通过开发定制化标识库,JSP技术是可扩展的。今后,第三方开发人员和其他人员可以将常用的功能创建到自己的标识库。这使得Web页面开发人员能够象使用熟悉的工具一样来使用标识来执行特定功能的构件来工作。JSP技术很容易整合到多种应用体系结构中,以便使用现存的工具和技巧,并且扩展到能够支持企业级的分布式应用中。作为采用Java技术家族的一部分,以及Java2(企业版体系结构)的一个组成部分,JSP技术能够支持高度复杂的基于Web的应用开发。由于JSP页面的内置脚本语言是基于Java编程语言的,并且所有的JSP页面都能被编译成为JavaServlet,JSP页面就具有Java技术的所有好处,包括健壮的存储管理和安全性。作为Java平台的一部分,JSP拥有Java编程语言“一次编写,各处运行”的特点。随着越来越多的厂家将对JSP的支持添加到他们的产品中,我们可以选择不同的服务器和工具,因为更改工具或服务器并不影响当前的应用。当与Java2平台,企业版(J2EE)[8]和EnterpriseJavaBean技术整合时,JSP页面提了供企业级的扩展性能,这对于在虚拟企业中部署基于Web的应用是必需的。4.2JSP和其他类似或相关技术的一个简单比较1)JSP和ActiveServerPages(ASP)相比Microsoft的ASP是一种和JSP类似的技术。JSP和ASP相比具有两方面的优点。首先,动态部分用Java编写,而不是VBScript或其他Microsoft语言,不仅功能更强大而且更易于使用。第二,JSP应用可以移植到其他操作系统和非Microsoft的Web服务器上。2)JSP和纯Servlet相比JSP并没有增加任何本质上不能用Servlet实现的功能。但是,在JSP中编写静态HTML更加方便,不必再用println语句来输出每一行HTML代码。更重要的是,借助内容和外观的分离,页面制作中不同性质的任务可以方便地分开:比如,由页面设计专家进行HTML设计,同时留出供Servlet程序员插入动态内容的空间。3)JSP和JavaScript相比44 网上订餐管理系统第四章系统实现主要技术JavaScript能够在客户端动态地生成HTML。虽然JavaScript很有用,但它只能处理以客户端环境为基础的动态信息。除了Cookie之外,HTTP状态和表单提交数据对JavaScript来说都是不可用的。另外,由于是在客户端运行,JavaScript不能访问服务器端资源,比如数据库、目录信息等等。4.3最佳JSP应用服务器Tomcat大多数人(大概29%)都喜欢将ApacheTomcat当作JSP应用服务器使用。有人可能会说,它之所以受欢迎是因为这个服务器是免费和开放源代码的,但是真正的原因远不止这些。ApacheTomcat能够受欢迎,不仅是工作性能非常好,还有没有初始的开发成本开销等有力的竞争因素,但这不是决定因素。Tomcat结构非常合理,更由于Tomcat是Apache组织的产品,这个组织有着雄厚的技术更新力量,并且Tomcat5.0很好的支持了JSP2.0规范,因此有着很好的发展前景。Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司以及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和Jsp规范总能在Tomcat中得到体现。Tomcat被JavaWorld杂志的编辑选为2001年度最具创新的java产品,可见其在业界内的地位。Tomcat不仅仅是一个Servlet容器,它也具有传统的Web服务器的功能:也处理Html页面,但是与Apache相比,它的处理静态Html的能力就不如Apache。JDK是SUN公司的JAVA应用程序和组件的开发环境,是编译、测试工具,也是提供JAVA程序的JAVA虚拟机平台,是调试和运行JSP所不可缺少的工具[9]。4.4javaBean组件技术1.什么是JavaBean软件开发的真正目的之一是利用在程序编码方面的投资,以便在同一公司或者不同公司的其他开发中重用程序编码,近年来,编程人员投入大量精力以便建立可重用的软件、可重用的软件组件,早期用在面向对象编程方面中的投资已经在Java、C#等编程语言的开发中充分实现,很多软件可以不用做很大的改变就可以运行在各种平台上。JavaBeans描述了Java的软件组件模型,这个模型被设计成使第三方厂家可以生成和销售能够集成到其他开发厂家或者其他开发人员开发的软件产品的Java组件。应用程序开发者可以从开发厂家购买现成的JavaBeans组件,拖放到集成开发环境的工具箱中,再将其应用于应用软件的开发,对于JavaBeans组件的属性、行为可以进行必要的修改、测试和修订而不必重新编写和编译程序。在JavaBeans模型中JavaBeans组件可以被修改或者与其他JavaBeans组件组合以生成新的JavaBeans组件或完整的Java应用程序。44 网上订餐管理系统第四章系统实现主要技术Java应用程序在运行时,最终用户也可以通过JavaBeans组件设计者或应用程序开发者所建立的属性存取方法setXXX方法和getXXX方法修改JavaBeans组件的属性。这些属性可能是颜色和形状等简单属性,也可能是影响JavaBeans组件总体行为的复杂属性。JavaBeans组件模型使得软件可以设计成便于修改和便于升级。每个JavaBeans组件都包含了一组属性、操作和事件处理器。将若干个JavaBeans组件组合起来就可以生成设计者、开发者所需要的特定运行行为,JavaBeans组件存放于容器或工具库中,供开发者开发应用程序。JavaBeans就是一个可以复用软件模型。JavaBeans在某个容器中运行提供具体的操作性能。JavaBeans是建立应用程序的建筑模块。大多数常用的JavaBeans通常是中小型控制程序,但我们也可以编写包装整个应用程序运行逻辑的JavaBeans组件,并将其嵌入到复合文档中,以便实现更为复杂的功能。一般来说JavaBeans可以表示为简单的GUI组件,可以是按钮组件、游标、菜单等等。这些简单的JavaBeans组件提供了告诉用户什么是JavaBeans的直观方法。但我们也可以编写一些不可见的JavaBeans,用于接受事件和在幕后工作,例如访问数据库执行查询操作的,JavaBeans它们在运行时刻不需要任何可视的界面。在JSP程序中所用的JavaBeans一般以不可见的组件为主。可见的JavaBeans一般用于编写Applet程序或者Java应用程序。2.JavaBeans属性JavaBeans的属性与一般Java程序中所指的属性,或者说与所有面向对象的程序设计语言中对象的属性是同一个概念,在程序中的具体体现就是类中的变量在。JavaBeans的设计中,按照属性的不同作用又细分为4类:Simple属性、Index属性、Bound属性与Constrained属性。1)Simple属性一个Simple类型的属性表示一个伴随有一对getXXX()、setXXX()方法的变量。属性的名称与和该属性相关的getXXX()、setXXX()方法相对应。例如:如果有setX()和getX()方法,则暗指有一个名为"X"的属性,如果有一个方法名为isX()则通常暗指"X"是一个布尔类型的属性。2)4Indexed属性一个Indexed类型的JavaBeans属性表示一个数组值。使用与该属性相对应的setXXX()方法和getXXX()方法可以存取数组中某个元素的数值。同时,我们也可以使用另两个同名方法一次设置或取得整个数组的值(即属性的值)。3)5Bound属性44 网上订餐管理系统第四章系统实现主要技术一个Bound类型的JavaBean组件的属性具有这样的特性:当该种属性的值发生变化时必须通知其它的JavaBeans组件对象。每次JavaBeans组件对象的属性值改变时,这种属性就引发一个PropertyChange事件(属性改变事件,在Java程序中,事件也被看作是一个对象)。这个事件中封装了发生属性改变事件的属性名、属性的原值、属性变化后的新值。这个事件将被传递到其它的JavaBeans组件中,至于接收事件的JavaBeans组件对象应该做什么动作由其自己定义。请看程序代码:importjava。beans。*;publicclassJavaBean3{StringourString="Hello";privatePropertyChangeSupportchanges=newPropertyChangeSupport(this);publicvoidsetString(StringnewString){StringoldString=ourString;ourString=newString;changes。firePropertyChange("ourString"oldStringnewString);}publicStringgetString(){returnourString;}publicvoidaddPropertyChangeListener(PropertyChangeListenerl){changes。addPropertyChangeListener(l);}publicvoidremovePropertyChangeListener(PropertyChangeListenerl){changes。removePropertyChangeListener(l);}}程序首先创建了PropertyChangeSupport类型的对象changes,这是最关键的一步操作,changes对象主要用于向监听者对象发送信息:当前的JavaBean对象已经发生了属性改变的事件。在JavaBean3.java程序中除了普通的存取JavaBeans属性值的setXXX()getXXX()等方法以,外还定义了如下的方法:publicvoidaddPropertyChangeListener(PropertyChangeListenerl);publicvoidremovePropertyChangeListener(PropertyChangeListenerl);第一个方法(addPropertyChangeListener()方法)其实是调用changes对象的addPropertyChangeListener()方法,使一个事件监听者对象和当前JavaBean对象绑定起来,并把它添加到监听者队列中去,充当当前JavaBean对象的事件监听者,如果当前JavaBean对象发生了属性值改变的事件,那么changes对象会依次通知监听者队列中的每一个对象,当然也通知了这个事件监听者对象,让它对这个事件做出反映。44 网上订餐管理系统第四章系统实现主要技术第二个方法(removePropertyChangeListener()方法)和前者的作用相反,该方法其实是调用changes对象的removePropertyChangeListener()方法,从监听者队列中移除某个特定的事件监听者对象,此事件监听者对象一旦从监听者队列中删除,那么changes对象将不会把属性值改变的事件通知它,它再也没有办法对属性值发生改变的事件作出响应了。getString()方法可以返回属性值setString()方法用于设定属性值setString()方法的代码如下所示:StringoldString=ourString;ourString=newString;changes.firePropertyChange("ourString"oldStringnewString);在上面的代码中,首先新定义一个字符串oldString,用于保存属性的原值然后把新值赋给属性值,这样会产生JavaBeans组件属性值改变的事件,最后调用changes对象的firePropertyChange()方法,通知监听者队列里的所有事件监听者对象,当前的JavaBean对象发生了属性值改变的事件,属性的名称、属性的新值、属性的原值,都被作为该方法的参数一并传给监听者对象,由它们根据这些信息,对此事件作出响应。Bound类型的属性就是这样使用的。1)Constrained属性JavaBeans组件的Constrained类型的属性具有这样的性质:当这个属性的值将要发生变化但是还没有发生变化的时候,与这个属性已经建立了某种监听关系的其它Java对象可以否决属性值的改变。此Constrained类型的属性的事件监听者对象将会通过抛出PropertyVetoException异常事件来阻止该属性值的改变[12]。4.5JSP中JavaBeans的应用JavaBeans被称为是Java组件技术的核心。JavaBeans的结构必须满足一定的命名约定。JavaBeans类似于Windows下的ActiveX控件:它们都能提供常用功能并且可以重复使用。JavaBeans可以在JSP程序中应用给我们带来了很大的方便,这使得开发人员可以把某些关键功能和核心算法提取出来,封装成为一个组件对象,增加了代码的重用率、系统的安全性。比如我们可以将访问数据库的功能、数据处理功能编写封装为JavaBeans组件,然后在某个JSP程序中加以调用。JavaBeans技术与ActiveX相比,有着很大的优越性,例如JavaBeans的与平台无关性,使得JavaBeans组件不但可以运行于Unix平台,还可以运行在Windows平台下面,而且JavaBeans从一个平台移植到另外的平台上代码不需要修改,甚至不需要重新编译。但是ActiveX就不同了,它只能够应用于Windows平台而且它的代码移植性很差,从Windows44 网上订餐管理系统第四章系统实现主要技术98平台移植到NT平台就需要重新编译代码,甚至要大幅度改写程。序另一方面JavaBeans比ActiveX要容易编写得多,用起来也方便得多。起码JavaBeans组件在使用以前不需要注册而,ActiveX控件在使用以前必须在操作系统中注册,否则在运行的时候系统将会报错。本节将介绍在JSP程序中如何使用,JavaBeans组件要想在JSP程序中使用JavaBeans,组件必须应用等JSP的操作指令。4.5.1操作指令操作指令用于在JSP页面中实例化一个JavaBean组件,这个实例化的JavaBean组件对象将可以在这个JSP程序的其它地方被调用。操作指令的基本语法形式如下所示:或者body语法参数描述:1)id属性用来设定JavaBeans的名称,利用id可以识别在同一个JSP程序中使用的不同的JavaBeans组件实例。2)class属性指定JSP引擎查找JavaBeans代码的路径,一般是这个JavaBean所对应的Java类名。3)scope属性用于指定JavaBeans实例对象的生命周期,亦即这个JavaBean的有效作用范围。scope的值可能是page、request、session以及application。4.5.2JavaBeans的Scope属性1)ApplicationScope:如果JavaBeans的Scope属性被指定为application。也就是说这个JavaBean组件具有ApplicationScope,这是什么意思呢?如果一个JavaBean组件具有ApplicationScope,那么它的生命周期和JSP的Application对象同步,作用范围也和Application对象一样。使用这种类型的JavaBeans组件,可以在多个用户之间共享全局信息。具体来说它的生命周期是这样子的:如果某个JSP程序使用操作指令创建了一个JavaBean对象,而且这个JavaBean组件具有ApplicationScope,那么这个JavaBean就一直在服务器的内存空间中待命,随时处理客户端的请求,直到服务器关闭,为止它所保存的信息才消失,它所占用的系统资源才会被释放。在此期间,如果有若干个用户请求的JSP程序中,需要用到这个JavaBean组件那么服务器在执行操作指令时,并不会创建新的JavaBean组件,而是创建源对象的一个同步拷贝,在任何一个拷贝对象上发生的改变都会影响到源对象,源对象也会做出同步的改变,不过这个状态的改变不会影响其他已经存在的拷贝对象。这种类型的JavaBeans组件的功能和JSP的Application对象十分类似,不过前者的功能要强大得多,而且可以自由扩展,用起来也方便得多。44 网上订餐管理系统第四章系统实现主要技术1)SessionScope如果一个JavaBean组件的Scope属性值为session,那么这个JavaBean组件的生命周期、作用范围就和JSP的Session对象的生命周期、作用范围一样。也就是说:这一类型的JavaBeans组件的生命周期就是某个会话过程所经历的时间。实际上会话过程是对于单个用户而言的,会话过程的开始以用户开始访问某个网站为标志,会话过程的结束以用户结束对该网站的访问为标志。不同的用户对应着不同的会话过程,不同的会话过程之间互不干涉,互不影响。假设用户A第一次访问了某个网站的某个JSP程序,而这个JSP程序用到了一个Scope属性为session的JavaBean组件,那么服务器会自动创建这个JavaBean组件的实例对象,并且当A用户继续访问同一网站其他的JSP程序,而其他的JSP程序又用到同一个JavaBean对象时,那么服务器不会创建新的JavaBean对象,而是使用已经存在的JavaBean对象实例,也就是说在第一个JS程序中创建的JavaBean组件对象在这个用户访问的同一网站的所有的JSP程序中都是可用的,而且这个JavaBean组件对象的状态保持唯一性。如果有另一个用户B,访问了用户A访问过的JSP程序,服务器将会为用户B创建只属于他的JavaBean组件对象。这个新创建的JavaBean组件对象在用户B访问的同一网站的所有JSP程序中都是直接可用的,而不需要创建一个新的组件。并且属于用户A的JavaBean组件对象和属于用户B的组件对象都是唯一的,它们之间互不干涉。2)RequestScope如果JavaBeans的Scope属性值被设为request,这种类型的JavaBeans组件对象的生命周期和作用范围和JSP的Request对象一样当一个JSP程序使用操作指令定向到另外一个JSP程序,或者是使用操作指令导入另外的JSP程序,那么第一个JSP程序会把Request对象传送到下一个JSP程序,而属于RequestScope的JavaBeans组件对象也将伴随着Request对象送出,被第二个JSP程序接收。因此,所有通过这两个操作指令连接在一起的JSP程序都可以共享一个Request对象,共享这种类型的JavaBeans组件对象,这种类型的JavaBeans组件对象使得JSP程序之间传递信息更为容易,不过美中不足的是这种JavaBeans不能够用于客户端与服务端之间传递信息,因为客户端是没有办法执行JSP程序,创建新的JavaBeans对象的。3)PageScope如果一个JavaBean的Scope属性被设为page,那么它的生命周期和作用范围在这四种类型的JavaBean组件中是最小的。PageScope类型的JavaBeans组件的生命周期为JSP程序的运行周期,当JSP程序运行结束,那么该JavaBean组件的生命周期也就结束了。Page44 网上订餐管理系统第四章系统实现主要技术Scope类型的JavaBeans组件程序的作用范围只限于当前的JSP程序中,它无法在别的JSP程序中起作用,对应于不同的客户端请求,服务器都会创建新的JavaBean组件对象而且一旦客户端的请求执行完毕,那么该JavaBean对象会马上注销,无法为别的客户端请求所使用。JavaBean是开发此系统的重要方式,在这次开发中采用了JavaBean+JSP+SQL模式,其中数据库的连接采用了JavaBean组件,将程序封装在Bean中不但修改方便,而且保密性高。44网上订餐管理系统第四章系统实现主要技术44网上订餐管理系统第四章系统实现主要技术4.6JDK配置JDK(Java Development Kit )是一切java应用程序的基础,可以说,所有的java应用程序是构建在这个之上的。它是一组API,也可以说是一些java Class。安装好JDK后,还需要在环境变量中进行对应的配置。主要进行一下配置:1、设置JAVA_HOME环境变量JAVA_HOME的值为JDK安装的目录,例如:C:j2sdk1。4。2_072、设置CLASSPATH环境变量CLASSPATH的值表示搜索Java类的路径,例如:.;C:j2sdk1.4.2_07bin;D:j2sdk1.4.2_07libdt.jar;D:j2sdk1.4.2_07libtools。jar3、更新PATH环境变量,PATH变量是系统搜索可执行程序的路径,例如:C:j2sdk1.4.2_07bin;4.7Tomcat配置4.7.1Server.xml文件配置1.一定要有msbase.jar,mssqlserver.jar,msutil.jar方件并且放到Tomcat/common/lib下。2.到Tomcat/conf里server.xml文件修改配置,设置Tomcawebapps的保存JSP文件的目录,目录名为Webmail,则在文件加入以下语句增加一个虚拟目录: 3.找到数据库配置语句.有3个属性name、auth、type.name项是JNDI的名称定义,程序通过JNDI才能找到此对象,这里取名jdbc/webmail;auth项即连接池管理权属性,这里取值Container,申明为容器管理;type项即对象的类型,这里取值javax.Sql.DataSource。4.数据库密码验证配置,找到username将其间的参数设置为数据库的用户名,例如sa。找到password间参数设置为数据库密码。本系统中数据库设置用户名为sa,密码为空。5.数据库url设置,找到url间参数设置为下面的格式:44 网上订餐管理系统第四章系统实现主要技术jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=Webmail;user=sa;password=;数据库名为Webmail,用户名为sa,密码为空,其中127.0.0.1为当前用户使用IP地址,端口为1433。下面是一个server.xml的配置实例:factoryorg.apache.commons.dbcp.BasicDataSourceFactorymaxActive100maxIdle30maxWait10000usernamesapassworddriverClassNamenet.Sourceforge.jtds.jdbc.Driver44 网上订餐管理系统第四章系统实现主要技术urljdbc:microsoft:sqlserver://localhost:1433;DatabaseName=webmail;user=sa;password=;4.8数据库编程4.8.1数据库编程基础及语法Java数据库连接(JDBC)是一个标准SQL(StructuredQueryLanguage,结构化查询语言)数据库访问接口,可以为多种关系数据库提供统一访问。JDBC(JavaDataBaseConnection,Java数据库连接)也提供一种基准,据此可以构建更高级的工具和接口。目前的JDK(JavaDevelopmentKit,Java开发工具包)软件捆绑包括JDBC和JDBC-ODBC(OpenDataBaseConnection,开放式数据库连接)桥。你可以从http://java。sun。com/products/JDK/CurrentRelease找到最新版。 1)安装驱动程序。装载驱动程序只需要非常简单的一行代码。例如,你想要使用JDBC-ODBC桥驱动程序,可以用下列代码装载它:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");如果是JDBCDriver装载:Class.forName("jdbc.driver_class_name");各种数据库驱动见附录。2)建立连接  第二步就是用适当的驱动程序类与DBMS建立一个连接。下列代码是一般的做法:3)Connectioncon=DriverManager.getConnection(url,"myLogin","myPassword");这个步骤也非常简单,最难的是怎么提供url。如果你正在使用JDBC-ODBC桥,JDBCURL将以jdbc:odbc开始:余下URL通常是你的数据源名字或数据库系统。因此,假设你正在使用ODBC存取一个叫"webmail"的ODBC数据源,你的JDBCURL是jdbc:odbc:webmail。把"sa"及空格替换为你登陆DBMS的用户名及口令。如果你登陆数据库系统的用户名为"webmail"口令为空,只需下面的2行代码就可以建立一个连接:Stringurl="jdbc:odbc:webmail";Connectioncon=DriverManager.getConnection(url,"webmail","");如果你使用的是第三方开发了的JDBC驱动程序,文档将告诉你该使用什么subprotocol,就是在JDBCURL中放在jdbc后面的部分。例如,44 网上订餐管理系统第四章系统实现主要技术如果驱动程序开发者注册了acme作为subprotocol,JDBCURL的第一和第二部分将是jdbc:acme。驱动程序文档也会告诉你余下JDBCURL的格式。JDBCURL最后一部分提供了定位数据库的信息。如果配置了连接池则要使用下面几行代码就可以建立一个连接:Contextctx;DataSourceds;ctx=newInitialContext();ds=(DataSource)ctx.lookup("java:comp/env/jdbc/webmail");connection接口是JSP数据库编程使用多的接口之一,在connection接口中经常使用到一个方法close();要注意在连接用完后必须关闭,否则连接会继续保持,直到超时。1)创建JDBCStatements对象Statement对象用于把SQL语句发送到数据库。你只须简单地创建一个Statement对象并且然后执行它,使用适当的方法执行你发送的SQL语句。对SELECT语句来说,可以使用executeQuery。要创建或修改表的语句,使用的方法是executeUpdate。  需要一个活跃的连接的来创建Statement对象的实例。在下面的例子中,使用的Connection对象con创建Statement对象stmt:Statementstmt=con.createStatement(intresultSetType,intresultSetConcurrency);ResultSetrs=Stmt.executeUpdate(SQL);SQL为数据库查询语句Con.createStatement()方法包含两参数:resultSetType和resultSetConcurrency1.resultSetType参数:用来设定ResultSet对象中的光标是否能够上下自由移动,它的值只能有3种,TYPE_FORWARD_ONLY、TYPE_SCROLL_SENSITIVE或TYPE_SCROLL_INSENSITEVE。若设为第一种,表示ResultSet对象中的光标能够随心所欲的上下移动,不过他们两者最大的差别在于:当ResultSet对象中的值有变时,TYPE_SCROLL_SENSITIVE能够取得改变后的值,而TYPE_SCROLL_INSENSITIVE不能。2.resultSetConcurrency参数:主要设定ResultSet对象是只读(read-only)还是可以改变的(updatable),他的值有两种,CONCUR_READ_ONLY和CONCUR_UPDATABLE。若设为CONCUR_READ_ONLY,则ResultSet对象和JDBC1.0的功能一样;若为CONCUR_UPDATABLE,那么表示ResultSet对象可以直接执行数据库的新增、修改和移除功能。在statement执行SQL语句是,有时会返回ResultSet44 网上订餐管理系统第四章系统实现主要技术结果集。该结果集往往包含的是查询的记录集。通过ResultSet.next()方法把当前的指针向下移动一位,随着每次调用next导致指针向下移动,按照从上到下的次序获取ResultSe行。Java.sql.ResultSet提供了检索不同的类型字段,其常用的的方法如下:getString():获得数据库里的varchar、char数据类型。getFloat():获得数据库里的Float数据类型。getDouble():获得数据库里的DoublePrecision数据类型。getBoolean():获得数据库里Boolean数据类型。getObject():该方法用于在SQL中无对应类型,可以获得系列化对象。getClob():获得数据库里的Clob(字符串大型对象)数据类型的对象。getBolb():获得数据库里的Blob(二进制大型对象)数据类型的对象。1)数据库SQL基本操作[14]语句:l集合查询Select语句SELECT<目标列表达式>,<目标列表达式>……FROM<表名>[WHERE<条件表达式>]l数据更新插入INSERTINTO<表名>[(<属性列1>][,<属性列2>…])]VALUES(<常量>[,<常量>]…);l删除数据DELETEFROM〈表名〉[WHERE〈条件〉];4.8.2本系统中的连接方式在本TOMCAT中配置了连接池,连接程序用JavaBean方法封装,放在WEB-INFclassse目录下。importjava.sql.*;importjavax.sql.*;importjavax.naming.*;publicclassDb{publicConnectioncon;publicStatementstmt;publicResultSetrs;publicPreparedStatementpstmt;publicstaticinterror=0;publicstaticsynchronizedConnectiongetCon()throwsException{44 网上订餐管理系统第四章系统实现主要技术Contextctx;DataSourceds;try{ctx=newInitialContext();ds=(DataSource)ctx.lookup("java:comp/env/jdbc/webmail");System.Err.println();System.err.println("数据连接+"+(++error));returnds.getConnection();}catch(SQLExceptione){System.out.print(e);throwe;}catch(NamingExceptione){System.out.print(e);throwe;}}publicStatementgetStmtread(){try{con=getCon();stmt=con.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVEjava.sql.ResultSet.CONCUR_READ_ONLY);}catch(Exceptione){System.out.println("getStmtread");System.out.println(e.getMessage());}returnstmt;}44网上订餐管理系统第四章系统实现主要技术44 网上订餐管理系统第六章问题解决第五章程序主要功能截图说明以下通过截图方式演示程序主要功能:普通用户登陆后主页登陆框44 网上订餐管理系统第六章问题解决菜单管理页面菜单类别菜单查询结果集44 网上订餐管理系统第六章问题解决菜单修改订餐和订座订座订单管理页面订座点菜菜单信息44 网上订餐管理系统第六章问题解决订座成功点菜订座成功页面订座点菜成功后购物车购物车44 网上订餐管理系统第六章问题解决订餐详细信息订餐信息购物车更新菜数量订餐处理后页面44 网上订餐管理系统第六章问题解决订餐处理后页面购物车页面订座输入信息44 网上订餐管理系统第六章问题解决点菜数量输入框管理员登录后主页管理员操作功能用户管理页面44 网上订餐管理系统第六章问题解决菜单类别管理类别修改第六章测试问题及解决6.1java汉字处理问题及解决在刚开始运行的程序中,很多汉字都是问号,不能正常显示,现有的大部分Java应用服务器都是在英语国家开发出来的,由于缺乏大字符集(中文、日文、韩文等)的应用环境,这些应用服务器在处理HTTP请求参数时都存在一些中文处理的问题.解决这一问题的传统做法是编写额外的代码来完成字符集的转换:publicStringgetStr(Stringstr){try{44 网上订餐管理系统第六章问题解决Stringtemp_p=str;byte[]temp_t=temp_p.getBytes("ISO8859-1");Stringtemp=newString(temp_t);returntemp;}catch(Exceptione){}return"null";}参数经过次方法转换后写入数据库就不在出现乱码问题,同时在网页中加入<%@pagecontentType="text/html;charset=gb2312"%>就可以解决中文问题。44网上订餐管理系统第六章问题解决44网上订餐管理系统结论44 网上订餐管理系统结论结论在这次毕业设计中,我独立开发了网上订餐管理系统。在这个系统中,采用的是开发语言是JSP技术.以前对JSP技术仅仅是很浅显的认识.通过这次毕业设计,使我对JSP技术有了深刻的认识,对其组件、功能、语法都有了较大的提高.从学习JAVA语言开始,学习JSP,还有JDBC技术以及JSP与数据库的连接技术等,经过这段时间的系统学习,在JSP技术方面有了很大的提高.由于没有MIS的开发经历,同时涉及到JSP方面的内容,又对TOMCAT服务器不了解。在筹建时,耗费很多时间深入广泛的调查现有的网上订餐系统流程,但是,由于用户管理,菜品管理,订餐及订座管理在功能实现上大同小异,因此设计上没有花费太多时间,最终把精力放在了解JSP技术中,重点解决乱码问题、数据库连接问题上.当调试出现问题是,先从细节上入手,看看自己在细节上有没有由于粗心而发生的错误,然后再进行整体上分析,有没有严重的语法错误。最终在自己的努力下,在老师和同学的帮助下解决了各种问题。这次毕业设计实验,积累了数据库编程和网站开发的基本经验和一些基本技巧。对大型系统开发有了实质性、操作性的认识,同时对运用JSP技术有了很大的提高,对以前学到的书本知识也是个很好的巩固,同时这次设计让我意识到自己的许多的不足,锻炼了自己独立发现问题,思考问题,解决问题的能力,也掌握了一些编程的思想和技巧,使自己的编程能力也有了很大的提高。44网上订餐管理系统结论44网上订餐管理系统结束语44 网上订餐管理系统结束语结束语随着信息产业的不断发展,各行各业信息化的建设都在以各种进行时的动作运行着。网上订餐管理系统的出现改变传统的企业、商店、大型超市管理方式。本文提出的网上订餐管理系统是在调研国内各大网上订餐管理软件和查阅资料了解国内外资料的基础上提出来的,同时查阅了大量相关文件做出系统分析,本文的系统分析和设计只是相对于一般的团体而言的。如果要运用到实际企业、商店、大型超市,要根据实际情况进行完善和改进。同时,本文着重介绍的是网上订餐管理系统的开发和JSP语言部分,又由于系统的特殊性——更多地考虑数据库和JSP语言的设计和实现。由于本人水平很有限,一定有非常多不完善的地方。经过指导老师的指导和几个月的努力,同时翻阅了大量的资料,终于完成了网上订餐管理系统的设计。首先,我要特别感谢我的指导老师,在这期间给予我大量的帮助和支持,让我得以顺利的完成本次设计,同时也要感谢所有曾经教导过我的老师和关心过我的同学,谢谢!44 网上订餐管理系统参考文献参考文献[1]中国电子政务发展研究现状.[EB/OL].http://www.gygov.cn/jumpnews/bg050401.htm,2005-05-21.[2]李春儒,守望互联网经济——电子商务发展现状与趋势.[EB/OL].http://www.chinacc.com/01/010208.htm,2005-05-21.[3]龚炳铮,我国电子商务的发展现状与趋势[EB/OL].http://www.ec.Org.cn./2004-05/08/content_4138744.htm,2004-05-08.[4]BruceEckel.Thinkinginjava(SecondEdition)[M].美国:PrenticeHall.41~48.[5]李飞,最新实用网络技术教程[M].西安:西安电子科技大学出版社.69~70,124~126.最新实[6]黄理,李积善,曹林有,张勇.用JSP轻松开发Web网站(第一版)[M].北京:北京希望电子出版社.2001.100~152.[7]史斌星,史佳.Java基础编程贯通教程[M].北京:清华大学出版社,2003.[8]马海军,杨继萍Java2实用教程[M].北京:清华大学出版社,2004.1~63[9]飞思科技产品研发.JSP应用开发详解(第二版)[M].北京:电子工业出版社,2004.23~28,259~316[10]肖金秀,冯沃辉,施鸿翔.JSP程序设计教程[M].北京:冶金工业出版社,2003,110~139.[11]徐强,常丽莉.java程序设计教程[M].北京:电子工业出版社,2003,333~371,386~387.[12]马红华,jsp高级编程.[M].北京:北京希望电子出版社,2001.5~10[13]陆正武,蒋武,刘军,石正贵.Java项目开发实践[M].北京:中国铁道出版社,2004.6~7,87~112.[14]萨师煊,王珊.数据库系统概论(第三版)[M].北京:高等教育出版社,2001.84~149.44网上订餐管理系统附录44网上订餐管理系统附录44'