基于JSP的健身俱乐部会员管理系统的设计与实现(论文+PPT+源码)

= 分类号_______________ 密级________________

UDC _______________ 学号_ ___

毕业设计(论文)

论文题目 基于JSP的健身俱乐部会员管理系统的设计与实现
Thesis Topic Design and Implementation of Fitness Club Membership Management System Based on JSP

毕业设计(论文)任务书

第1页

毕业设计(论文)题目:基于JSP的健身俱乐部会员管理系统的设计与实现毕业设计(论文)要求及原始数据(资料):1.综述国内外关于健身俱乐部会员管理平台的现状;2.深入了解俱乐部会员管理的基本流程与相关事务;3.熟练掌握jsp技术,JDBC技术,训练编写jsp的能力;4.设计并实现基于jsp的健身俱乐部会员管理系统;5.深入分析会员管理系统中的相关逻辑;6.训练检索文献资料和利用文献资料的能力;7.训练撰写技术文档与学位论文的能力。 毕业设计(论文)主要内容: 1.综述健身对提高当今人们生活质量的重要性; 2.了解jsp,JDBC,MVC相关技术; 3.熟悉会员管理系统的开发环境; 4.设计会员管理的相关逻辑,建立各个事物的关联; 5. 深入分析会员管理系统中功能的增加和删除的设计流程; 6.熟练掌握基于jsp的在线管理系统的编写; 7.设计与实现基于jsp的会员管理系统的程序。 学生应交出的设计文件(论文): 1.内容完整、层次清晰、叙述流畅、排版规范的毕业设计论文; 2.包括毕业设计论文、源程序等内容在内的毕业设计电子文档及其它相关材料。
主要参考文献(资料):BruceEckel. JAVA编程思想[M]. 机械工业出版社, 2003.1~78孙一林,彭波等. JSP数据库编程实例[M]. 清华大学出版社, 2002.1~465Brown等. JSP编程指南(第二版)[M]. 电子工业出版社, 2003,1~268孙涌. 现代软件工程[M]. 北京希望电子出版社,2003,1~246姜翠霞. 数据库系统基础[M]. 航空航天大学出版社, 2009.51~208Flangan. JAVA技术手册[M]. 中国电力出版社, 2002.23~294 LeeAnnePhilips. 巧学活用JSP[M]. 电子工业出版社, 2004.1~319萨师煊, 王珊. 数据库系统概论[M]. 高等教育出版社, 2002.3~460李曙光. JSP开发实例完全剖析[M]. 电子工业出版社, 2006.23~400[美]Walter Savitch. Absolute Java[M]. 电子工业出版社. 2005Kong Michael. An environment for secure SQL/Server computing [M].Oxford University Press Inc., 1993: 149 W.Clay,Richardson, Donald,Avondolio. The Java high class weaves a distance:JDK 5[J]. Scientific & Technology Book Review,No.3, 2006:17-18Sanden, Bo. SYSTEMS PROGRAMMING WITH JSP:EXAMPLE - A VDUCONTROLLER[C]. Communications of the ACM,Vol28,No10,1985:1059-1067Tsui,Frank F. JSP EM DASH A RESEARCH SIGNAL PROCESSOR IN JOSEPHSON TECHNOLOGY[C]. IBM Journal of Research and Development,Vol24, No2,1980:243-252专业班级学生要求设计(论文)工作起止日期指导教师签字日期教研室主任审查签字日期系主任批准签字日期

基于JSP的健身俱乐部会员管理系统的设计与实现

摘 要

目前我国虽然己经开发出了应用计算机操作的健身俱乐部管理系统,但管理软件,管理方法和管理思想三者往往相脱节。造成我国健身俱乐部信息管理系统极端化的缺陷。在国外健身俱乐部已经有了一整套涉猎了人力资源开发和管理,市场销售,广告制作投放计划到健身项目规划的管理系统,由此可见国外拥有了更加全面具体强大的俱乐部管理系统并已投入了使用并为其带来了巨大利益。

设计与实现信息管理系统要根据俱乐部对顾客及其员工管理的实际情况来设计。能更好的方便俱乐部对顾客、员工和健身设备进行集中的管理工作。本信息管理系统包括的功能为:修改登录密码、工作人员管理、会员卡类型管理、会员资料管理、健身器材管理、教练执教管理、安全退出系统。

本系统的发展适和了健身俱乐部的自动管理需求,经过对现实的需求探讨,本系统采用了JSP和MySQL数据库管理系统作为基础工具进行开发。运用了B/S的3层结构模式和瑞典MySQL AB公司开发的MySQL数据库,并在设计初期。首先,完成了数据库系统的搭建,在设计中录入了一些数据;其次,完成了数据库、开发环境软件和运行环境软件的衔接并最终实现了本系统的运行。JSP拥有Java语言“一次性编写,各处都能运行”的特点,用JSP为基础做成的这套俱乐部管理系统可以轻松移植到任何的平台进行运行。所以用JSP来开发是完全可行的。

关键词:健身中心,JSP,B/S结构

Design and Implementation of Fitness Club Membership Management System Based on JSP

Abstract

Although our country has developed a fitness club management system application of computer operations, but management software, management methods and ideas of the three phases are often disjointed. Cause of extreme fitness club information management system of the defects. Fitness club in a foreign country has been set forays into human resource development and management, marketing, advertising plans to launch a health project planning management system. Thus abroad have a more specific and comprehensive management system and powerful clubs have been put into use and its enormous benefits.

Design and implementation of information management systems to be designed according to the club management to customers and its employees actual situation. To better facilitate the club for customers, employees and fitness facilities for centralized management. The information management system includes functionality for: modify login password, member type management, staff management, member information management, fitness equipment management, coaching management, safe withdrawing.

The system is suitable for the development of automated management needs and fitness club, after the demand for the real discussion and MySQL database management system as a the system uses the fundamental tool development. The use Sweden MySQL AB of the B/S three-layer structure model and developed in MySQL database and the early stages of design. First, build a complete database system, input some data in the design; secondly, finished databases software development environment and run time environment software interface and ultimately the operation of the system. JSP has the Java language, "once written, everywhere can run" features, based on JSP made of this club management system, you can easily migrate to any platform for running

Key words: Fitness center, JSP, B/S structure

目 录

摘 要I

AbstractII

第一章 绪论1

1.1 课题背景1

1.2 课题研究的目的和意义2

1.3 课题发展前景及趋势3

1.4 课题内容简介4

1.5 开发工具4

1.5.1 MyEclipse5

1.5.2 Tomcat5

1.5.3 MySQL5

1.5.4 JSP6

1.5.5 JavaScript6

1.6 软硬件需求7

第二章 需求分析8

2.1 需求调研8

2.2 可行性分析8

2.2.1技术可行性8

2.2.1.1 JSP技术8

2.2.1.2 MyEclipse Enterprise Workbench 8.59

2.2.1.3 SQLServer20059

2.2.1.4 JDBC技术9

2.2.1.5 B/S模式12

2.2.2 操作可行性13

2.2.3 社会可行性14

2.2.4 可行性小结14

2.3 功能模块需求分析14

2.4 界面需求14

第三章 系统分析与设计15

3.1 数据库的分析与设计16

3.1.1数据库的概念结构设计16

3.1.2数据库的逻辑结构设计18

3.1.3 数据库的连接原理21

3.2中文乱码问题处理22

第四章 系统功能实现23

4.1系统登陆页面实现24

4.2 管理员功能模块26

4.2.1 工作人员管理26

4.2.2会员资料管理28

4.2.3健康器材管理30

4.2.4 教练执教管理33

4.2.6 修改密码35

4.2.7 退出系统36

第五章 系统测试36

5.1 测试的任务及目标37

5.1.1 测试的任务37

5.1.2 测试的目标37

5.2 测试方案37

5.3 测试过程37

5.4 测试用例38

5.4.1 主页面的登录模块测试38

5.4.2 游客注册测试38

5.5 其他错误41

5.6 小结41

结 论42

参考文献43

致 谢44

附录:英文技术资料翻译45

英文原文46

中文译文53

第一章 绪论

随着计算机科学与技术的迅速发展,微机技术己经涉及到了人们生活和工作中的每一个角落,与之而来的高性能、高效率的计算机软件给其他各行各业的技术更新和科技革命都起到了推动的作用。

健身一种体育项目,尤指包括徒手或用器械的体操,体操可以增强力量、柔韧性、增加耐力、提高协调、控制身体各部分的能力,从而使身体强健。如今社会,很多人都长期处于紧张的环境压力。例如,面临高考升学、商务应酬、企业经营、人际交往、职位竞争等社会活动。所以,没有过多的时间进行运动,而进入亚健康状态。而健身俱乐部的出现,可以使人们用少量的时间来系统的、专业的锻炼身体,使人们获得健康。健身俱乐部的发展适应人们需求,所以俱乐部也需要更好的信息管理系统来帮助俱乐部管理,俱乐部有了发展,人们就能更好的利用时间进行锻炼。

如今的欧美国家,健身己经不是追求时尚,而是获得健康的方式。它己经逐步走入人们的生活,成为生活必需品。越来越多的人也开始接受健身这种活动。而健身俱乐部发展的也越来越迅速。在我国,俱乐部的数量和质量都远远落后于欧美等国家。在经济快速发展的同时,人们的生活水平也在不断的提高,所以越来越多的人对通过健身来锻炼身体的意识也越来越强。花在这上面的费用和时间也越来越多。所以,中国的健身业己经蓬勃发展,在北京,就出现了很多的著名俱乐部。

开发该健身俱乐部信息管理系统的目的是使健身俱乐部的工作效率得到提高。只要根据俱乐部对顾客及其员工管理的实际情况来设计就能更好的方便俱乐部对顾客、员工和健身设备进行集中的管理工作。

课题背景

中国加入WTO之后,越来越多的世界级企业和集团进入中国市场,加速了我们的经济发展,同时也对本土的企业和集团公司带了很多挑战,相对陈旧的低效率的企业管理体制己经不能适宜新的市场竞争的需要,为了能够适应新的挑战,利用企业局域网对企业资源进行合理利用,使企业管理规范化、科学化己经成为一种必然的趋势。企业管理系统的迅速发展改变了传统的管理手段,随着我国经济不断的持续发展,人民生活水平的的提高,也提高了管理效率,健康也就成为了人们追求高质量生活中十分关心的问题。科学高效的健身项目越来越受到广大消费者的青睐和认可,各种专业的健身俱乐部会所的出现为追求科学高效的人们提供了有利条件。

经调查,我国当前健身俱乐部会所拥有超过数万家,规模有大也有小,相对比较出名有中体倍力和青鸟等健身俱乐部,他们拥有学习国外的先进健身俱乐部管理经验以及利用Internet网等先进计算机技术,使得自己的业务由单一的通过俱乐部平台面向广大客户上升到了客户足不出户就可以享受到专业新闻的指导和科学健身知识,方便了客户的利益也在同行业中成为了佼佼者,他们的成功不仅归功于科学管理还要归功于计算机网络带来的便利,这是利用计算机软件及网络技术扩大其业务成功的典范,但是国内健身俱乐部应用这种模式的运营的又有多少呢?其实并不多,大多健身俱乐部的管理模式和业务交流还停留在传统的,低效率的用人管理的阶段,现代管理的需求致使人工管理模式己经越来越不能满足,一方面是因为每天的客户量越来越多,手工处理的方式避免不了会在业务和财务等方面上出现短板,给客户和俱乐部带来了不必要的麻烦,于此同时也给俱乐部的经营和管理带来了很多弊端;另一方面经营者也经常会由于财务管理和会员的管理而感到“头痛”,随着俱乐部的经营规模的不断壮大,上面的问题会越来越明显,一定会成为俱乐部发展的绊脚石。无论规模大小,各个健身俱乐部为了更好的生存和发展就必须在管理模式上引进先进的管理软件系统,从而在会员管理,会员管理,产品管理,新闻管理,项目管理,及活动管理等方面提高和改善了手工方式所不能达到的效果和价值。

将计算机管理应用在健身俱乐部的管理中也是近年来随着计算机被广泛的应用于各行各业之中的一个典范。健身俱乐部管理此外,一个集成开发和管理公司在每个主要部分(自、项目产品,活动)代表更先进的管理理念和管理方法健身对现代化管理的重要工具,这房子我们健身房越来越广泛的应用。

目前健身俱乐部会所的计算机管理水平还是很低,我也曾实地走访过几家健身俱乐部,他们的计算机应用是处在刚刚起步时的使用阶段,但是俱乐部采用计算机软件管理业务、财务和活动记录等诸多问题即将成为健身俱乐部会所和其他相关企业发展的必然趋势和必不可少的工具。

课题研究的目的和意义

中国2008奥运会成功举办,全民健身的热浪一浪高过一浪,最近这些年,各种层次、类型的健身俱乐部在全国各地不断的发展起来。这象征着中国体育基制改革逐步向纵深的方向发展,基层的体育组织机构正在不断的发生改变,制度的创新不断出现。健身俱乐部的不断兴起受到全国各界人民的欢迎。随着社会不断的进步,人民的富足,城市化发展的加速,越来越多的占地被高楼大厦所取代,加之环境的恶化和工作节奏的加快,高效科学的健身俱乐部逐渐被广大消费者所认可,为向广大消费者提供专业的健身服务,实施专业化、科学化的管理是俱乐部共同追求的目标。作为经营者,应该培养市场意识,将工业与健身行业相结合,建立自己的管理系统,在硬件上达到一定的高度,在软件上要有自己的一套管理模式。只有具备了高效地管理、个性化的服务,才会使这个行业有更长远地发展。

在当今这个人民素质逐渐提高、社会经济不断发展的时代,网络技术己经进入高速的发展时期,信息化的时代变革给所有的领域不断带来新的机会。跟着电脑办公自动化的普及,公司的自动化管理、顾客的自动化管理出现了,这全都都归功于电脑发展的巨大奉献,网络的世界里蕴藏着无数的生机,这只有你想不到的事情,没有你做不到的。

计算机的办公自动化己经将管理从传统模式解放出来,但只是作为一个机器对它来说是一种巨大的浪费,由计算机联合所组成的互联网正在改变整个管理思路与体系。他可以实现单位管理最根本的需求:投入最少的资源做最有效率的工作。将计算机装备起来,然后根据自我的管理理念,顾客信息管理不但需要创造一个全新的客户数据管理与事业关系管理系统,而且还要将它放在最前面,换掉经营者的以前的大部分办公程序,将会更大程度的减轻管理者的工作任务,提高事业人员的管理效率,用一个更加优秀可靠的事业形象呈现在客户们的面前,并且在客户资料的收集、统计等方面更加的快速,更能迅速有效的予给管理者参考。这些都为我们开发这样的软件提供了良好的条件,使经营现代化、科学化成为可育昌。

随着北京奥运会申办成功,人们的健身意识不断增强。物质和意识的双重保障便注定了中国健身业的发展会越来越好,而这正是一个管理公司得以生存并发展的基础。现在中国健身行业的发展现状差不多和国外20年前一样,国内俱乐部的历史只有短短四五年,经营者在管理上没有丰富的经验。我们正好可以利用国外成熟的经营管理经验来为中国健身产业服务并促进其发展。管理公司虽然引进国外的管理系统,但由于国情的不同,所以经营模式和数据不能照搬,而是借鉴过来适应国内的具体需要。即使是一套管理标准,在不同的地方,不同的俱乐部,也要配合其具体情况而定。

目前,国内己研究开发了一些健身俱乐部的管理软件,比较突出的有贝尔健身俱乐部管理软件、飞跃健身俱乐部管理软件、飞扬健身俱乐部管理软件等,这些软件的功能较为全面,涉及了客户、经营者、会员等的多方面的管理,使俱乐部的经营管理更为科学化、技术化,方便化。现在国内较为出名的大型健身俱乐部例如中体倍力,青鸟都建立了较为完善的基于C/S模式的网络管理机智,是百姓可以足不出户就可以想享受到网络带来的方便快捷的专业的健身指导和服务。

另外,随着信息技术的日益成熟和普及,健身行业的不断发展和盛行,与国外的交流与合作将成为一个必然趋势。随之带来的问题就是要实现俱乐部管理的网络化。但就网上收集的资料来看,目前多数的软件都是PB, Delphi等开发完成的,这些只能用于俱乐部内部的经营和管理,却脱离了互联网这个大平台,客户本可以足不出户就可以了解自己的健身状况和健身俱乐部相关信息,这种开发己经与客户的需求背道而驰,为了能够使客户和健身俱乐部更好的联系和互动,采用C/S模式开发动态的网站,实现数据库的动态维护将是一个发展方向。我们可以借鉴己开发软件的优点,根据实际需求调查,在此基础上开发出功能较为完善的基于Web的网络管理系统,JSP是在ASP和PHP技术之后,一种新兴的动态网站开发技术,它不像ASP技术的安全性较差,也不像PHP技术扩展性较小,在继承了他们优点的基础之上,还能够支持XML技术,使得功能更加强大,逐渐成为新兴网站开发的首选技术,这次我们用JSP开发这一软件,正迎合了这一技术发展趋势,对我们来说也是一次挑战。

课题发展前景及趋势

本课题是采用JSP技术进行开发的基于WEB的健身俱乐部管理系统,随着近些年Internet的飞速发展,传统的提供静态网页的Web服务己经无法满足广大Internet用户的需求,动态网页技术随之诞生,如ASP, PHP, JSP等,其中JSP 由于具备“一次编写,随处运行(Write Once,Run Anywhere)”的特点,在WEB应用开发中得到了广泛的应用。应用JSP技术开发健身俱乐部管理系统能够使JSP在网络技术中的性能得到淋漓尽致的发挥,调查研究表明,大多数健身俱乐部管理软件的主要问题是受阻基于健身俱乐部会所内部的管理的,脱离了与广大客户的联系,它变的孤立而且功能受限,一个脱离了广大客户的管理系统,就必将在未来的市场中无用武之地。更与现今的常用的软件开发模式B/S, C/S模式背道而驰,加之这样JSP技术可以支持多种运行平台,运行速度快,难易程度低,扩展性安全性好,数据库支持多等特点,为设计者、使用者和维护者提供了方便。

核心问题之一在当前发展趋势的发展健身俱乐部管理系统和互联网结合引发需求为健身俱乐部管理互联网规模的健身俱乐部,因为根据越来越多的业务信息交换、健身俱乐部和俱乐部之间扩大管理进一步追求不同,更方便数据共享政策,没有燃烧我的摩托车这己经满足于一个简单的方法来共享文件和信息,但不再是吗?看看核心大人,数据库自己的健康,我将客户机器系统。互联网络系统结构转换的原因对服务器模型,虽然它总是根据俱乐部自身的进步,特别是大型健身俱乐部,国际发展工作我必须跨地区可能己经有一些客户,甚至国际体系和数据传输,信息共享和表示当互联网可以跨境区域,用户可以享受伟大的不可避免的俱乐部坚决持有许多客人突然,他占领的激烈的市场竞争能力,互联网网络之间的联系,更多的顾客和健身俱乐部与客户服务工作与客户提供的俱乐部信息管理系统网络通过一个良好的快速查询、分析,建立科学的管理手段,健康俱乐部的大规模数据管理和报告的一种多层次的总结,所以健身房网络管理迫切需要另一个互联网俱乐部管理提供各种服务管理如何结合管理支持系统和互联网网络技术提供有机网络,一组查询为什么时间管理俱乐部内部的一个综合管理系统,己经报告的基础,一个重大的挑战。

课题内容简介

本课题解决的问题是如何通过设计一个切实可行的软件系统来解决健身俱乐部管理目前存在的一系列问题。该课题是基于Windows的操作系统,后台数据库采用MySQL,前端使用JSP进行开发。

本课题所研究的健身俱乐部管理系统主要由六个模块组成,即人事资料模块、预约管理模块、器材管理模块、会员管理模块、系统管理模块。运行本系统先由登陆界面窗口进入用户权限认证窗口,通过用户名和口令验证的用户方可进入系统主窗口进行浏览与操作。

会员管理子系统:包括会员个人信息的修改、会员的增加和删除、会员信息查询以及会员卡的管理。

预约管理子系统:包括健身预约信息的录入、和删除。

人事资料管理子系统:包括人事资料的添加、删除、修改功能。

器材管理子系统:包括器材信息的录入、增加和删除、修改、产品信息查询。

考勤、工资管理子系统:包括考勤、工资信息的录入、增加和删除、修改。

系统维护子系统:包括修改密码、修改用户名、删除管理员和增加管理员四个功能模块。

用户管理模块:管理员添加、删除、查询用户基本信息和设置用户权限。

开发工具

此次设计主要采用MyEclipse加Tomcat后台服务器进行,设计过程中页面主要使用JSP技术完成,下面对MyEclipse、Tomcat和MySQL数据库进行简要介绍。

MyEclipse

MyEclipse,是一个十分优秀的用于开发Java, J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开元产品的支持十分不错。MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSP, CSS, Javascript, SQL, Hibernate。

Tomcat

Tomcat是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当运行Tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

MySQL

MySQL是最流行的开放源码SQL数据库管理系统,它是由MySQL AB公司开发、发布并支持的。MySQL AB是由多名MySQL开发人创办的一家商业公司。它是一家第二代开放源码公司,结合了开放源码价值取向、方法和成功的商业模型。

数据库是数据的结构化集合,计算机是处理大量数据的理想工具,因此,数据库管理系统在计算方面扮演着关键的中心角色,或是作为独立的实用工具,或是作为其他应用程序的组成部分。

MySQL服务器还有一套实用的特性集合,这些特性是通过与我们用户密切合作而开发的。在我们的基准测试主页上,给出了MySQL服务器和其他数据库管理器的比较结果。

MySQL服务器最初是为处理大型数据库而开发的,与已有的解决方案相比,它的速度更快,多年以来,它已成功用于众多要求很高的生产环境。尽管MySQL始终在不断发展,但目前MySQL服务器已能提供丰富和有用的功能。它具有良好的连通性、速度和安全性,这使得MySQL十分适用于访问Internet上的数据库。

每次发布的MySQL服务器均是可用的,权当用户尝试源自“灰色区域”的代码时才会出现问题。当然,新用户不了解“灰色区域”是什么。因此,在本节中,我们介绍了目前已知的这类区域。本节所做的介绍主要针对MySQL服务器5.5版和更高版本,在最新版本中,更正了所有已知和通报的缺陷,但“缺陷”一节所列的除外,这类缺陷与设计无关。

JSP

JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。

Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。JSP与Servlet一样,是在服务器端执行的,通常返回给客户端就是一个HTML文本,因此客户端只要有浏览器能浏览。JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。JSP技术的优点:

(1)一次编写,到处运行。除了系统之外,代码不用做任何更改。

(2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/.net的局限性是显而易见的。

(3)强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。

(4)多样化和功能强大的开发工具支持。Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下

(5)支持服务器端组件。Web应用需要强大的服务器端组件来支持,开发人员需要利用其他工具设计实现复杂功能的组件供Web页面调用,以增强系统性能。JSP可以使用成熟的JavaBeans 组件来实现复杂商务功能。

内部对象说明:request 客户端请求,此请求会包含来自GET/POST请求的参数; response 网页传回客户端的响应;pageContext 网页的属性是在这里管理; session 与请求有关的会话; application servlet正在执行的内容;out 用来传送响应的输出流; config 代码片段配置对象;page JSP网页本身; exception 针对错误网页,未捕捉的例外。

JavaScript

JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。JavaScript的一个重要功能就是面向对象的功能,通过基于对象的程序设计,可以用更直观、模块化和可重复使用的方式进行程序开发。在HTML基础上,使用JavaScript可以开发交互式Web网页。JavaScript的出现使得网页和用户之间实现了一种实时性的、动态的、交互性的关系,使网页包含更多活跃的元素和更加精彩的内容。在本系统中很多地方使用了JavaScript技术,比如说,检验用户输入数据的有效性,是否重复,是否为空等等。

软硬件需求

硬件需求:

CPU:Pentium以上计算机

内存: 512M以上

软件需求:

操作系统版本:Windows XP /vista/Win7

开发工具:MyEclipse

后台服务器:Apache Tomcat 7.0

开发语言:Java

浏览器:IE6.0


  1. 需求分析

2.1 需求调研

在项目的开始是需求调研,并且走访了健身会所,经过一系列的调查与谈话中发现,健身会所市场的管理和规范问题,是困扰我们多年的一个老问题,也是政府管理中的一个难点,健身的一个最基本的业务,表面上看,它只是健身会所业务的一个简单的部分,但是它涉及到管理与客户服务等多方面。

2.2 可行性分析

在项目的开发过程中,可行性分析是非常重要的一个环节,它是基于技术等进行分析之后得出的一个结论,这个结论说明了这个项目是否可以继续开展,本章从技术可行性、操作可行性、安全可行性、社会可行性等方面综合阐述了项目的可行性。

2.2.1技术可行性

技术上的可行性主要是根据系统分析得到的需要开发的软件,来分析利用现有技术是否能实现待开发的软件。本系统需要连接到互联网上,运用jsp+servlet技术开发,方便快捷,开发所需要的软件工具都是简单易操作的且开源,安全,可维护性强,本系统在MyEclipse的开发环境下采用java语言编写,Java语言具有较强的可移植性,安全性和稳定性,可以在不同的系统上运行,本系统采用的服务器是Apache-Tomcat-7.0版本,开发技术则采用的是jsp+servlet技术。下面介绍本系统使用的几种常见的技术:

2.2.1.1 JSP技术

JSP(Java Server Page服务器网页)是从1998年开始出现的新技术。由Sun公司倡导,基于JavaServlet以及整个Java体系的web开发技术,并且他是由许多公司参与一起建立的一种动态网页技术标准。在传统的网页HTML文件(*.htm,*.html)中加入脚本片段和JSP标记(Tag),构成JSP网页(*.jsp)。JSP技术为创建显示动态生成内容的web页面提供了简便的方法。JSP作为Java家族的一员,承袭了Java的特点,即跨平台的特性,也即一次编译,到处运行。

对于我们现在的使用,JSP无疑是一种非常方便的工具,可以精确的写出自己想要的界面效果,这也是我使用JSP技术的重要原因。

JSP网站开发标准给出了两种使用JSP的技术,可以归纳为模式一、模式二。

模式一:JSP+JavaBeans技术。在这种模式中,JSP页面独自响应请求并将处理结果返回给客户。Bean处理所有数据访问,JSP实现页面的表现,以实现内容生成与显示相分离。当处理复杂的大型应用时,页面被嵌入大量的脚本或Java代码段,当需要处理的商业逻辑复杂时,这种情况会变得非常糟糕,大量的内嵌代码使得页面程序变得复杂,对于前端界面设计人员,这是不可思议的事情。所以模式一可用于小型应用,不能够满足大型应用的需要。

模式二:JSP+Servlet+JavaBeans技术。Servlet技术是一种采用Java技术来实现CGI功能的一种技术,Servlet技术非常适于服务器端的处理和编程,并且Servlet会长期驻留在内存。

从开发的观点看,模式二具有更清晰的页面表现,清楚的开发者角色划分,在大规模项目开发中,模式二更被采用,模式二也更符合当前流行的MVC结构(Model/view/controller),其中Servlet对应controller,处于控制者的位置,处理HTTP请求,负责生成JSP中使用的Beans组件或对象,并判断应将请求传递给哪个JSP等,JSP对应view,负责生成最终的动态网页并返回给浏览器。而JavaBeans对应的是Model,实现各个具体的应用逻辑与功能。

2.2.1.2 MyEclipse Enterprise Workbench 8.5

MyEclipse企业级工作平台(My Eclipse Enterprise Workbench,简称MyEclipse)是对EclipseIDE的扩展,利用它可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSF,CSS,Javascript,SQL,Hibernate。

MyEclipse 是一个十分优秀的用于开发Java, J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。MyEclipse目前支持Java Servlet,AJAX, JSP, JSF, Struts,Spring, Hibernate,EJB3,JDBC数据库链接工具等多项功能。可以说MyEclipse几乎囊括了目前所有主流开源产品的专属Eclipse开发工具

2.2.1.3 SQLServer2005

SQLServer2005最初的开发者的意图是用SQLServer2005和他们自己的快速低级例程(ISAM)去连接表格。不管怎样,在经过一些测试后,开发者得出结论:SQLServer2005并没有他们需要的那么快和灵活。这导致了一个使用几乎和SQLServer2005一样的API接口的用于他们的数据库的新的SQL接口的产生,这样,这个API被设计成允许为用于SQLServer2005而写的第三方代码更容易移植到SQLServer2005。

Microsoft SQL Server 2005 是一个全面的数据库平台,使用集成商业智能 (BI)工具提供了企业级的数据管理。Microsoft SQL Server 2005数据库引擎为关系型数据和结构化数据提供了更安全可靠存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序

2.2.1.4 JDBC技术

JDBC技术是Java Data Base Connectivity的缩写,它是SUN公司提供的一种支持基本SQL功能的通用的应用程序接口(Application Programming Interface)。它是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,同时,JDBC也是个商标名。通过执行相应SQL语句,完成对不同数据库的访问。因此,开发人员使用JDBC API可以不必编写一个应用程序来访问Sybase数据库,又另外编写一个应用程序去访问Oracle数据库,再写一个应用程序访问Microsoft的SQL Server。不但如此,使用Java语言编写的应用程序可以在任何支持Java的平台上运行,不必在不同的平台上开发不同的应用程序。

简单地说,JDBC能完成下列三件事:

  1. 同一个数据库建立连接;
  2. 向数据库建立连接;
  3. 处理数据库返回的结果。

JDBC是一种通用低层的应用程序编程接口,它在不同的数据库功能模块的层次上提供一个统一的用户界面。说JDBC是一处低级的API,是指它直接调用SQL命令,它比其他的一些数据库连接API要容易使用些,但它有同样可以作为更高级的,用户版面更友好的API或开发工具基础。

浏览器端程序要访问数据库,首先通过中间件,然后由中间件对数据库操作权限进行认证,认证通过才能对数据库进行操作,数据库访问的三层结构如图2-1所示。

图2-1 数据库访问三层结构

用户对数据库的存取权限认证是中间件中完成,对数据库的查询、插入、更新和删除操作等都封装在中间件中,该中间件位于服务器端,中间件对数据库进行操作后,再将处理结果通过Web服务器返回到浏览器端用户。这样,在用户端输入的用户名和密码,可以通过加密算法进行加密后在网络上传输,在中间件中进行解密认证,然后再进行数据库的存取操作,数据库存取权限的用户名和密码出现在位于服务器端的中间件中,这样就更加安全。本系统采用的正是这样的三层结构的数据库访问模式。

在三层模型中,命令将被发送到服务的“中间层”,而“中间层”将SQL语句发送到数据库。数据库处理SQL语句并将结果返回“中间层”,然后“中间层”将它们返回用户。其模型如图2-2所示。

图2-2 JDBC的三层模型

因为“中间层”可以进行对访问的控制并协同数据库的更新,并且可以使用一个易用的高层API,这个API可以由“中间层”进行转换,转换成低层的调用。所以在许多种情况下,三层模型可以提供更好的性能,本系统中所采用的就是此种模型。

简单地说,JDBC 可以做三件事:与数据库建立连接,发送SQL语句并且获得数据,最后根据得到的数据进行处理。

数据库连接如图2-3所示:

图2-3 数据库的连接处理

在建立数据连接时,要判断连接是否建立成功了,如果没有建立成功,要进行异常的捕捉等的错误处理,如果连接建立起来了,那么就继续进行。得到数据库连接后,就要执行事先写好的SQL语句,通常可以用预编译命令,防止SQL注入,在执行时,如果SQL语句出现错误,也要进行异常的捕捉和处理,如果SQL语句正确,则成功之后就会返回ResultSet这个结果集,我们可以对其进行一些操作。

2.2.1.5 B/S模式

B/S模式是一种以Web技术为基础的新型的MIS系统平台模式。把传统C/S模式中的服务器部分分解为一个数据服务器与一个或多个应用服务器(Web服务器),从而构成一个三层结构的客户服务器体系。

第一层客户机是用户与整个系统的接口。客户的应用程序精简到一个通用的浏览器软件,如Netscape Navigator,微软公司的IE等。浏览器将HTML代码转化成图文并茂的网页。网页还具备一定的交互功能,允许用户在网页提供的申请表上输入信息提交给后台,并提出处理请求。这个后台就是第二层的Web服务器。

第二层Web服务器将启动相应的进程来响应这一请求,并动态生成一串HTML代码,其中嵌入处理的结果,返回给客户机的浏览器。如果客户机提交的请求包括数据的存取,Web服务器还需与数据库服务器协同完成这一处理工作。

第三层数据库服务器的任务类似于C/S模式,负责协调不同的Web服务器发出的SQL请求,管理数据库。

它无需像C/S模式那样在不同的客户机上安装不同的客户应用程序,而只需安装通用的浏览器软件。这样不但可以节省客户机的硬盘空间与内存,而且使安装过程更加简便、网络结构更加灵活。假设一个企业的决策层要开一个讨论库存问题的会议,他们只需从会议室的计算机上直接通过浏览器查询数据,然后显示给大家看就可以了。甚至与会者还可以把笔记本电脑联上会议室的网络插口,自己来查询相关的数据。其次,它简化了系统的开发和维护。系统的开发者无须再为不同级别的用户设计开发不同的客户应用程序了,只需把所有的功能都实现在Web服务器上,并就不同的功能为各个组别的用户设置权限就可以了。各个用户通过HTTP请求在权限范围内调用Web服务器上不同处理程序,从而完成对数据的查询或修改。现代企业面临着日新月异的竞争环境,对企业内部运作机制的更新与调整也变得逐渐频繁。相对于C/S,B/S的维护具有更大的灵活性。当形势变化时,它无须再为每一个现有的客户应用程序升级,而只需对Web服务器上的服务处理程序进行修订。这样不但可以提高公司的运作效率,还省去了维护时协调工作的不少麻烦。如果一个公司有上千台客户机,并且分布在不同的地点,那么便于维护将会显得更加重要。

再次,它使用户的操作变得更简单。对于C/S模式,客户应用程序有自己特定的规格,使用者需要接受专门培训。而采用B/S模式时,客户端只是一个简单易用的浏览器软件。无论是决策层还是操作层的人员都无需培训,就可以直接使用。B/S模式的这种特点,可以让MIS系统维护的限制因素变得更少。

最后,B/S特别适用于网上信息发布,使得传统的MIS的功能有所扩展。这是C/S所无法实现的。而这种新增的网上信息发布功能恰是现代企业所需的。这使得企业的大部分书面文件可以被电子文件取代,从而提高了企业的工作效率,使企业行政手续简化,节省人力物力。

现有的硬件和软件在功能上是可以满足系统开发的需求,开发所需要的软件工具也都是简单易操作的,开发人员的技术水平完全可以胜任系统的开发。所以该系统在技术上是可行的。

2.2.1.6 EL技术

EL全名为Expression Language,它原本是JSTL 1.0为方便存取数据所自定义的语言。

表达式这种语言的灵感来自于ECMAScript和XPath表达式语言,它的格式为${express},它提供了在 JSP 中简化表达式的方法。它是一种比较简单的语言,基于可用的命名空间(PageContext 属性)、嵌套属性和对集合、操作符(算术型、关系型和逻辑型)的访问符、映射到 Java 类中静态方法的可扩展函数以及一组隐式对象。
EL 提供了在 JSP 脚本编制元素范围外使用运行时表达式的功能。脚本编制元素是指页面中能够用于在 JSP 文件中嵌入 Java 代码的元素。它们通常用于对象操作以及执行那些影响所生成内容的计算。JSP 2.0 将 EL 表达式添加为一种脚本编制元素。

2.2.2 操作可行性

该系统具有易用性,B/S结构使得客户端不必安装任何软件,只要有浏览器并连接到Internet或企业内部的Intranet上即可使用,免除了非专业人员操作技术上的困难。服务器操作系统采用Windows 7,Web服务器为Apache-Tomcat7.0版本,数据库为MySQL。

该系统具有友好亲切的使用界面,功能丰富并且使用简单,一般用户无需培训即可使用,对运行的平台和机器配置要求不高,便于配置和应用。

2.2.3 社会可行性

随着社会的发展和计算机技术的进步,人类越来越依赖于信息化的管理系统,这种系统能更加方便的获得信息以及处理信息。人们都改变了过去的思维,开始走向了互联网的时代,在社会中成为了一种新的潮流。

2.2.4 可行性小结

本章在技术可行性上、操作可行性上以及社会可行性上进行了详细的介绍,在技术方面通过介绍JSP技术和EL技术等常见技术,说明了开发本系统的可行性,而在操作方面,也是利用了简单易于操作的平台和数据库,所以开发本系统是简单而快速的。经以上分析,说明该系统在开发上是可行的,在技术、操作和社会上都有可行性,可以进行开发。

2.3 功能模块需求分析

本系统最大的特点是使用操作简单、友好的提示信息。

会员制健身中心管理系统的设计与实现,主要是以提高健身会所形象、便捷客户服务与增强健身中心管理为主旨,主要有以下七大功能:

1、修改登录密码;

2、工作人员管理;

3、会员卡类型管理;

4、会员资料管理;

5、健身器材管理;

6、教练执教管理;

7、安全退出。

2.4 界面需求

界面设计目前已经成为评价软件质量的一条重要指标,一个好的用户界面可以增加用户使用系统的信心和兴趣,提高工作效率,JSP技术是用JAVA语言作为脚本语言的,JSP网页为整个服务器端的JAVA库单元提供了一个接口来服务于HTTP的应用程序。 创建动态页面非常方便。用户界面是指软件系统与用户交互的接口,通常包括输出、输入、人-机对话的界面格式等。

1.输出设计

输出是由计算机对输入的原始信息进行加工处理,形成高质量的有效信息,并使之具有一定的格式,提供管理者使用,这是输出设计的主要职责和目标。

系统设计的过程正好和实施过程相反,并不是从输入设计到输出设计,而是从输出设计到输入设计,这是因为输出表格直接与使用者相联系,设计的出发点应当是保证输出表格方便地为使用者服务,正确及时反映和组成用于各部门的有用信息。输出设计的原则是考虑既要全面反映不同管理层的各项需要,又要言简意赅,不要将用户需要和不需要的都提供给用户。

2.输入设计

输入数据的收集和录入是比较费事的,需要大量的人力和一定设备,并且容易出错。如果输入系统的数据有错误,则处理后的输出将扩大这些错误,因此输入数据的正确性对于整个系统质量的好坏是具有决定性意义的。

输入设计的原则如下:

输入量应保持在能满足处理要求的最低限度。设计中可采用设置字段初值,下拉式数据窗口等方式尽量减少用户键盘输入量。输入量越少,错误率就越少,数据准备时间也减少。


第三章 系统分析与设计

3.1 数据库的分析与设计

计算机信息系 统以数据库为核心,在数据库管理系统的支持下,进行信息的收集、整理、存储、检索、更新、加工、统计和传播等操作。数据库已经成为现在信息系统等计算机系统的基础与核心部分。数据库设计的好坏直接影响到整个系统的质量和效率。

数据库的设计一般经过规划。需求分析、概念设计、逻辑设计、物理设计5个步骤。

3.1.1数据库的概念结构设计

概念设计是指在数据分析的基础上自底向上的建立整个系统的数据库概念结构,从用户的角度进行视图设计,然后将视图集成,最后对集成的结构分析优化得到最后结果。

数据库的概念结构设计采用实体—联系(E-R)模型设计方法。E-R模型法的组成元素有:实体、属性、联系,E-R模型用E-R图表示,是提示用户工作环境中所涉及的事物,属性则是对实体特性的描述。

概念设计的目标是产生反映企业组织信息要求的数据库概念结构,即概念模式。概念模式是独立于数据库逻辑结构,独立于支持数据库的DBMS,不依赖于计算机系统的,根据以上对数据库的需求分析,并结合系统概念模型的特点及建立方法,建立E-R模型图。

实体间关系

属性

实体

图3-1 E-R图各元素

  1. 系统模块E-R图,如图3-2所示:

图3-2 系统模块E-R图

2)会员资料实体E-R图,如图3-3所示:

图3-3 会员资料实体E-R图

3.1.2数据库的逻辑结构设计

我们知道,数据库概念模型独立于任何特定的数据库管理系统,因此,需要根据具体使用的数据库管理系统的特点进行转换。即转化为按计算机观点处理的逻辑关系模型,E-R模型向关系数据库模型转换应遵循下列原则:

*每一个实体要转换成一个关系

*所有的主键必须定义非空(NOT NULL)

*对于二元联系应按照一对多、弱对实、一对一、多对多等联系来定义外键。

根据E-R模型,会员制健身中心管理系统建立了以下逻辑数据结构,下面是各数据表的详细说明。

本系统的数据库名:db_jianshen2017_g,一共有四个表,分别如下:

序号 列名 数据类型 长度 小数位 标识 主键 外键 允许空 默认值 说明
1 card_id int 11
2 card_leixiong varchar 50
3 card_guize text
4 card_youhuizhengce text
5 card_one1 varchar 50
6 card_one2 varchar 50
7 card_one3 varchar 50
8 card_one4 varchar 50
9 card_one5 int 11
10 card_one6 int 11
11 card_one7 datetime
12 card_one8 datetime

表3-1 会员卡信息表

序号 列名 数据类型 长度 小数位 标识 主键 外键 允许空 默认值 说明
1 qicai_id int 11
2 qicai_name varchar 50
3 qicai_goumairiqi varchar 50
4 qicai_beizhu text
5 qicai_one1 varchar 50
6 qicai_one2 varchar 50
7 qicai_one3 varchar 50
8 qicai_one4 varchar 50
9 qicai_one5 int 11
10 qicai_one6 int 11
11 qicai_one7 datetime
12 qicai_one8 datetime

表3-2 健身器材表

序号 列名 数据类型 长度 小数位 标识 主键 外键 允许空 默认值 说明
1 user_id int 11
2 user_name varchar 50
3 user_pw varchar 50
4 user_type int 11
5 user_realname varchar 50
6 user_address varchar 50
7 user_sex varchar 50
8 user_tel varchar 50
9 user_email varchar 50
10 user_qq varchar 50
11 user_man varchar 50
12 user_age varchar 50
13 user_birthday varchar 50
14 user_xueli varchar 50
15 user_one1 varchar 50
16 user_one2 varchar 50
17 user_one3 varchar 50
18 user_one4 varchar 50
19 user_one5 varchar 50
20 user_one6 int 11
21 user_one7 int 11
22 user_one8 int 11
23 user_one9 datetime
24 user_one10 datetime
25 user_one11 bigint 20
26 user_one12 bigint 20

表3-3 工作人员表

序号 列名 数据类型 长度 小数位 标识 主键 外键 允许空 默认值 说明
1 zhijiao_id int 11
2 zhijiao_jiaolian_id int 11
3 zhijiao_jiaolian_name varchar 50
4 zhijiao_kecheng varchar 50
5 zhijiao_huiyuan varchar 50
6 zhijiao_one1 varchar 50
7 zhijiao_one2 varchar 50
8 zhijiao_one3 varchar 50
9 zhijiao_one4 varchar 50
10 zhijiao_one5 int 11
11 zhijiao_one6 int 11
12 zhijiao_one7 datetime
13 zhijiao_one8 datetime

表3-4 教练执教表

3.1.3 数据库的连接原理

本系统采用Hibernate对数据库进行管理。Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了轻量级的对象封装,使 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。它不仅提供了从 Java 类到数据表之间的映射,也提供了数据查询和恢复机制。相对于使用 JDBC 和 SQL 来手工操作数据库,Hibernate 可以大大减少操作数据库的工作量。 另外 Hibernate 可以利用代理模式来简化载入类的过程,这将大大减少利用 Hibernate QL 从数据库提取数据的代码的编写量,从而节约开发时间和开发成本。 Hibernate 可以和多种Web 服务器或者应用服务器良好集成,如今已经支持几乎所有的流行的数据库服务器。

Hibernate 技术本质上是一个提供数据库服务的中间件。它的架构如图3-5所示:

图3-3 Hibernatre架构图

图3-3显示了 Hibernate 的工作原理,它是利用数据库以及其他一些配置文件如 Hibernate .properties ,XML Mapping 等来为应用程序提供数据持久化服务的。

Hibernate 具有很大的灵活性,但同时它的体系结构比较复杂,提供了好几种不同的运行方式。在轻型体系中,应用程序提供 JDBC 连接,并且自行管理事务,这种方式使用了 Hibernate 的一个最小子集;在全面解决体系中,对于应用程序来说,所有底层的 JDBC/JTA API 都被抽象了,Hibernate 会替你照管所有的细节。

3.2中文乱码问题处理

在程序中经常会遇到中文乱码的情况,如果手动的在servlet和jsp页面进行设置,相当麻烦。因此,在程序的开始就写了一个过滤器SetCharacterEncodingFilter。

在web.xml中配置:

<filter>

<filter-name>SetCharacterEncodingFilter</filter-name>

<filter-class>myweb.util.filter.SetCharacterEncodingFilter</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>gb2312</param-value>

</init-param></filter>

<filter-mapping>

<filter-name>SetCharacterEncodingFilter</filter-name>

<url-pattern>/*</url-pattern>//*表示工程下所有的页面都会有此过滤器的处理

</filter-mapping>

对应的SetCharacterEncodingFilter.java文件中的重要代码,在初始化init()方法中定义:

public void init(FilterConfig filterConfig) throws ServletException {

this.filterConfig = filterConfig;

this.encoding = filterConfig.getInitParameter("encoding");

String value = filterConfig.getInitParameter("ignore");

}

在工具包util包中同样定义了DataFormate类来处理字符转换:

public static String toUni(String gbStr){

String uniStr = ""; /*把字符串转换成uincode编码*/

if(gbStr == null){

gbStr = "";

}

try{

byte[] tempByte = gbStr.getBytes("GB2312");

uniStr = new String(tempByte,"ISO8859_1");

}catch(Exception ex){

}

return uniStr;

}

/* 把字符串转换成Utf8编码*/

public static String toUtf8String(String s) {

StringBuffer sb = new StringBuffer();

for (int i = 0; i < s.length(); i++) {

char c = s.charAt(i);

if (c >= 0 && c <= 255) {

sb.append(c);

}

else {

byte[] b;

try {

b = Character.toString(c).getBytes("utf-8");

}catch (Exception ex) {

System.out.println(ex);b = new byte[0];

}

for (int j = 0; j < b.length; j++) {

int k = b[j];

if (k < 0) {

k += 256;

}

sb.append("%" + Integer.toHexString(k).

toUpperCase()); } }

return sb.toString(); }


第四章 系统功能实现

在管理信息系统的生命周期中,经过了需求分析、系统设计等阶段之后,便开始了系统实施阶段。在系统分析和设计阶段,系统开发工作主要是集中在逻辑、功能和技术设计上,系统实施阶段要继承此前面各个阶段的工作成果,将技术设计转化为物理实现,因此系统实施的成果是系统分析和设计阶段的结晶。

4.1系统登陆页面实现

  1. 描述:为了保证系统的安全性,要先使用本系统必须先登陆到系统中,用户需要正确的账号和密码登录本系统。

2.会员登录的流程图,如图4-1所示:

图4-1 会员登录的流程图

3.程序运行效果图,如图4-2所示:

图4-2 系统登陆页面设计

4.在登陆页面输入用户名和密码以,点击提交按钮,跳转到登陆的service中,在该service中会对用户名,密码,验证码进行判断,验证通过进入对应的页面,loginservice关键代码:

public String login(String userName,String userPw,int userType)

{

String result="no";

String sql="from TAdmin where userName=? and userPw=?";

Object[] con={userName,userPw};

List adminList=adminDAO.getHibernateTemplate().find(sql,con);

if(adminList.size()==0)

{

result="no";

}

else

{

WebContext ctx = WebContextFactory.get();

HttpSession session=ctx.getSession();

TAdmin admin=(TAdmin)adminList.get(0);

session.setAttribute("userType", 0);

session.setAttribute("admin", admin);

result="yes";

}

return result;

}

4.2 管理员功能模块

1.描述:系统主页面:左方页面展示了管理员可操作的七大功能,进入相关的管理页面可以链接到子菜单,并且高亮显示,每个管理模块下面都有相应的子菜单。

2.程序运行效果图,如图4-3所示:

图4-3 管理员主页面

在每个jsp页面将会对相关用户进行拦截操作,这样可以提高安全性,防止用户不经过登陆页面而进入任何子菜单页面:

if(session.getAttribute("user")==null)

{

out.print("<script>alert('请先登录!');window.open('../index.jsp','_self')</script>");

}

4.2.1 工作人员管理

4.2.1.1查询工作人员信息

1.描述:管理员点击左侧的菜单“工作人员管理”,页面跳转到工作人员界面,调用后台的action类查询出所有的工作人员信息,并把这些信息封装到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出工作人员信息。

2.程序效果图,如图4-4所示:

图4-4工作人员信息

4.2.1.2添加工作人员添加

1.描述:输入要添加工作人员的信息以后,点击添加按钮添加工作人员。

2.程序效果图,如图4-5所示:

图4-5添加工作人员

4.2.2会员资料管理

4.2.2.1会员资料管理

1.描述:管理员点击左侧的菜单“会员资料管理”,页面跳转到会员资料管理界面,调用后台的action类查询出所有的会员资料,并把这些信息封装到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出会员资料。

2.程序效果图,如图4-6所示:

图4-6会员资料管理

4.2.2.2会员资料删除

1.描述:先是点击会员管理,页面跳转到会员管理界面,浏览所有的会员资料,点击要删除的会员资料,弹出的确定对话框,即可删除该会员资料。

2.程序效果图,如图4-7所示:

图4-7会员资料删除

4.2.3健身器材管理

4.2.3.1健身器材信息

1.描述:管理员点击左侧的菜单“健身器材管理”,页面跳转到健身器材信息管理界面,调用后台的action类查询出所有的健身器材信息,并把这些信息封装到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出健身器材信息。

2.程序效果图如图4-8所示:

图4-8查询健身器材信息

4.2.3.2添加健身器材信息

1.描述:管理员输入健身器材相关正确信息后点击录入按钮,如果是没有输入完整的健身器材信息,都会给出相应的错误提示,不能录入成功。输入数据都通过form表单中定义的方法οnsubmit="return checkForm()"来检查,checkForm()函数中是各种的校验输入数据的方式。

2.程序效果图,如图4-9所示:

图4-9添加健身器材信息

4.2.3.3删除健身器材信息

1.描述:先是点击健身器材信息管理,页面跳转到健身器材信息管理界面,浏览所有的健身器材信息,点击要删除的健身器材信息,弹出的确定对话框,即可删除该健身器材信息。

2.程序效果图,如图4-10所示:

图4-10删除健身器材信息

4.2.4 教练执教管理

4.2.4.1教练执教管理

1.描述:管理员点击左侧的菜单“教练执教管理”,页面跳转到教练执教管理界面,调用后台的action类查询出所有的教练执教,并把这些信息封装到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出教练执教情况。

2.程序效果图,如图4-11所示:

图4-11教练执教管理页面

4.2.5.2教练执教录入

1.描述:管理员输入教练相关正确信息后点击录入按钮,如果是没有输入完整的教练执教,都会给出相应的错误提示,不能录入成功。输入数据都通过form表单中定义的方法οnsubmit="return checkForm()"来检查,checkForm()函数中是各种的校验输入数据的方式。

2.程序效果图,如图4-12所示:

图4-12 教练执教录入

4.2.6 修改密码

1.描述:输入用户名和用户的原有密码,输入新密码以后点击修改按钮即可修改密码成功。

2.程序效果图,如图4-13所示:

图4-13 修改密码

4.2.7 退出系统

1.描述:点此按钮回到系统的主页面。

2.关键代码:主要是通过javascript语句来实现, item_word[8][4]="退出系统";

item_link[8][4]="javascript:window.open('../index.jsp','_self')";


第五章 系统测试

软件测试指的是一种用来鉴定软件是否正确、完整的过程。我们通过测试已经写好的程序来发现其中可能隐藏的问题,从而提高软件的质量,一般而言我们的做法是,在规定的条件下对程序进行操作,发现程序的错误,来衡量软件的质量。

5.1 测试的任务及目标

软件测试不仅是软件开发的一个组成部分,更是非常重要的一部分,在开发过程中,测试应该贯穿我们的整个开发,测试在软件开发中的地位是不言而喻的,它和软件开发缺一不可,所以我们要更加重视测试。

5.1.1 测试的任务

在软件开发中,我们不可避免的产生许多错误,这使得软件中隐藏着许多的问题,而这些问题在一定的条件下被触发,便会让你更软件的运行出现差错,导致或多或少的经济损失,所以测试是非常必要的。因此在软件投入生产性运行之前,尽可能多地发现软件中的错误。

5.1.2 测试的目标

(1)测试的目的是为了发现程序中的错误而执行程序的过程。

(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。

(3)成功的测试是发现了到今为止尚未发现的的错误的测试。

5.2 测试方案

测试有两种方法:黑盒测试和白盒测试。

黑盒测试是一种看不到程序内部结构的测试方法,它又被称为功能测试,在程序的借口进行测试,检查功能是否能够按照说明书进行正确的反应,程序员要做的就是输入数据,然后验证得到的结果是否正确,这样能够保持外部新的完整性。白盒测试又叫结构测试,完全了解程序的结构和处理过程,这种方法按照程序内部的逻辑测试程序,检验程序中每条通路是否都能按照预定要求正确工作。

5.3 测试过程

在测试之初,由于将数据库中的数据是随便输入,没有实用性,为了使系统更加完善,在系统测试的过程中,本系统将一开始编程随便输入的数据全部清理后,输入了一些有效的测试数据,这样可以更真实的反映系统的功能实现情况。

这样不断发现问题,经过反复的测试、调试,把问题一个个的解决,最终系统可以正常运行。

5.4 测试用例

测试是软件开发时期的最后一个阶段,也是软件质量保证中至关重要的一个环节,它的目的是发现程序的错误和不足之处。

本系统采用黑盒测试中的等价类法,对系统进行测试。检测失物招领系统有问题需要大量的输入数据,下面只列出一部分测试用例:

5.4.1 主页面的登录模块测试

测试流程: 1.打开系统首页,输入错误的登录信息

2.登录

3.输入正确的登录信息

4.登录

5.测试结果

模块名称 测试用例 预期结果 实际结果 是否通过
登录模块 用户名:null 密码:null 弹出错误提示,请输入用户名 登陆失败,提示请输入用户名 通过
登录模块 用户名:m1 密码:null 弹出错误提示,请输入密码 失败,提示输入密码 通过
登录模块 用户名:m1 密码:1 弹出错误提示,用户名或者密码错误 登陆失败,提示用户名或者密码错误 通过

表5-1 主页面登录模块测试


5.4.2 游客注册测试

建立有效等价类是游客输入的各个信息都正确,期望结果:注册成功!无效等价类如表5-2所示:

无效等价类 期望结果
用户名空缺 请输入用户名!
用户密码空缺确认密码空缺 请输入用户密码!请输入确认密码!
联系电话空缺 请输入联系电话!
QQ空缺 请输入QQ!
邮箱空缺 请输入邮箱地址!
来自空缺 请输入来自哪里!
名称空缺 用户名已存在!
密码错误 两次输入的密码不一致!
联系电话格式不正确 输入的联系电话格式不正确!
QQ格式不正确 输入的QQ格式不正确!
邮箱格式不正确 输入的邮箱格式不正确!

表5-2 游客注册无效等价类

测试用例:

第1组:用户名:bb 用户密码:aa

确认密码:aa 联系电话:18234086882

QQ:1104014730 E-mail:[email protected]

来自:山西

测试结果:提示注册成功!

第2组:用户名: 用户密码:aa

确认密码:aa 联系电话:18234086882

QQ:1104014730 E-mail:[email protected]

来自:山西

测试结果:请输入用户名!

第3组:用户名:bb 用户密码:

确认密码:aa 联系电话:18234086882

QQ:1104014730 E-mail:[email protected]

来自:山西

测试结果:请输入用户密码!

第4组:用户名:bb 用户密码:aa

确认密码: 联系电话:18234086882

QQ:1104014730 E-mail:[email protected]

来自:山西

测试结果:请输入确认密码!

第5组:用户名:bb 用户密码:aa

确认密码:aa 联系电话:18234086882

QQ: E-mail:[email protected]

来自:山西

测试结果:请输入QQ!

第6组:用户名:bb 用户密码:aa

确认密码:aa 联系电话:18234086882

QQ:1104014730 E-mail:

来自:山西

测试结果:请输入邮箱地址!

第7组:用户名:bb 用户密码:aa

确认密码:aa 联系电话:18234086882

QQ:1104014730 E-mail:[email protected]

来自:

测试结果:请输入来自哪里!

第8组:用户名:admin 用户密码:aa

确认密码:aa 联系电话:18234086882

QQ:1104014730 E-mail:[email protected]

来自:山西

测试结果:用户名已存在!

第9组:用户名:admin 用户密码:aa

确认密码:aaa 联系电话:18234086882

QQ:1104014730 E-mail:[email protected]

来自:山西

测试结果:两次输入的密码不一致!

第10组:用户名:admin 用户密码:aa

确认密码:aaa 联系电话:1

QQ:1104014730 E-mail:[email protected]

来自:山西

测试结果:输入的联系电话格式不正确!

第11组:用户名:admin 用户密码:aa

确认密码:aaa 联系电话:18234086882

QQ:aa E-mail:[email protected]

来自:山西

测试结果:输入的QQ格式不正确!

第12组:用户名:admin 用户密码:aa

确认密码:aaa 联系电话:18234086882

QQ:aa E-mail:1104014730

来自:山西

测试结果:输入的邮箱格式不正确!

5.5 其他错误

在程序设计实现的过程中不可避免的会产生各种难以预料的错误,如书写错误、传值类型不一致、参数传递问题等等。这些都需要通过细心的检测与不断的调试才能够排除。比如在servlet路径配置时因粗心错误导致运行导致所报错误,如图5-1所示:

图 5-1由于servlet路径配置错误,运行时的提示


5.6 小结

在本章中,通过对软件的测试验证了软件程序的质量,分别对登录部分进行了等价类测试,等价类测试不考虑内部的结构,将程序的输入分为若干个有代表性的部分,从每个部分选取数据进行测试,通过对这些模块的测试可以基本证明程序具有一定的健壮性和质量性。


结 论

本设计己经实现健身俱乐部信息管理系统的全部功能,而且健身俱乐部信息管理系统的实用功能全部能够正常运行,例如:修改登录密码、工作人员管理、会员卡类型管理、会员资料管理、健身器材管理、教练执教管理、安全退出七大模块。本设计运用B/S的3层结构模式和瑞典MySQL AB公司开发的MySQL数据库,并在设计初期,首先,完成了数据库系统的搭建,在设计中录入了一些数据;其次,完成了数据库、开发环境软件和运行环境软件的衔接并最终实现了本系统的运行。

我自己的毕业设计论文将告一段落的时候。选择运行,发现己经基本的达到了预期的想象的效果,成就感在没有人在时也总会出现。虽然实现了俱乐部的大部分功能,但是因为有限能力和时间的问题,总是感觉还有很多不如意的方面,例如:数据库管理系统的应用简单、软件的前期连接不畅、系统总体设计不够饱满、系统所实现功能简单。但是,这些不足出现是由于自身知识不够全面,所需技术没有完全掌握,软硬件方面的限制,外观的粗糙、功能的不全、代码的不合理等。但是,我又会自恋式的安慰一下自己:选择一条路,不用过于关注最后的结果,最可贵的是奋斗过程中的快乐和收获。用这些话语来安慰我还没有平复的心情。因此本系统的不足之处将于以后的学习生活中逐步完善与改进。

由于本设计己完成了健身俱乐部信息管理系统的整体构建,应该可以投入简单的使用,使用本设计能大大减少应用方的员工需求量,提高员工的工作效率。本设计将会对未来俱乐部行业的电子化、信息化、科技化起到决定性的作用。在未来本系统将发挥一套系统管理多家企业的巨大作用。个人的精力是有限的,尤其是作为学生对某项课题的研究所能取得的成果也只能达到一定程度,而不可能是顶点。本文的不足之处,请各位导师以及同学指正,对于健身俱乐部信息管理系统的研究就告一段落了,争取在以后的学习生活中继续对此进行研究。


参考文献

[1] BruceEckel. JAVA编程思想[M]. 机械工业出版社, 2003.1~78

[2] 孙一林,彭波等. JSP数据库编程实例[M]. 清华大学出版社, 2002.1~465

[3] Brown等. JSP编程指南(第二版)[M]. 电子工业出版社, 2003,1~268

[4] 孙涌. 现代软件工程[M]. 北京希望电子出版社,2003,1~246

[5] 姜翠霞. 数据库系统基础[M]. 航空航天大学出版社, 2009.51~208

[6] Flangan. JAVA技术手册[M]. 中国电力出版社, 2002.23~294

[7] LeeAnnePhilips. 巧学活用JSP[M]. 电子工业出版社, 2004.1~319

[8] 萨师煊, 王珊. 数据库系统概论[M]. 高等教育出版社, 2002.3~460

[9] 李曙光. JSP开发实例完全剖析[M]. 电子工业出版社, 2006.23~400

[10] [美]Walter Savitch. Absolute Java[M]. 电子工业出版社. 2005

[11] Kong Michael. An environment for secure SQL/Server computing [M].Oxford University Press Inc., 1993: 149 

[12] W.Clay,Richardson, Donald,Avondolio. The Java high class weaves a distance:JDK 5[J]. Scientific & Technology Book Review,No.3, 2006:17-18

[13] Sanden, Bo. SYSTEMS PROGRAMMING WITH JSP:EXAMPLE - A VDUCONTROLLER[C]. Communications of the ACM,Vol28,No10,1985:1059-1067

[14] Tsui,Frank F. JSP EM DASH A RESEARCH SIGNAL PROCESSOR IN JOSEPHSON TECHNOLOGY[C]. IBM Journal of Research and Development,Vol24, No2,1980:243-252

致 谢

毕业设计即将进入尾声,在此次设计的过程中,我与同学互相学习,向老师讨教,不仅让我学会了很多知识,巩固以前所学,还让我锻炼了动手能力和全面思考问题的能力,使我有勇气面对未来的挑战。

感谢所有燃烧自己,照亮别人的园丁们,我将带着你们的希望,以不同的方式,在祖国的现代化建设中奋斗。

在本次毕业设计过程中,得到了指导老师的指导与支持。在此特老师的大力帮助。指导老师在数据库的搭建以及整体项目的把握上提供了非常有用的帮助,让我能够较快的理解整个系统的意义,并且利用所学知识完成设计,虽然程序仍然有一些不是很完美的地方,但是仍然能让我学到很多东西,在各个方面对自己都有所提高。

另外我还要感谢我的母校——太原理工大学,以及在大学四年生活中给予我关心和帮助的老师和同学,是他们教会了我专业的知识和做人的道理。在此次毕业设计的设计过程中,遇到了很多困难,但是有很多同学和老师的热情帮助,使得我按计划完成了任务,在整个系统的把握上给予了我很多帮助,我一定会努力完善自己,为母校争光。

转眼间,我们即将毕业,踏入社会,回首过去的大学生活,过得很充实,有苦也有乐,收获了很多知识和友谊,感谢母校的各位老师传授给我们很多知识,也在为人处世上给予了非常多的帮助。正是在这几个月紧张而充实的毕业设计中,我感到自己的知识得到了一次升华,我相信:我的毕业设计会给我的四年大学画上一个圆满的句号。

附录:英文技术资料翻译

英文原文

An Overview of Servlet and JSP Technology

1.1 A Servlet's Job

Servlets are Java programs that run on Web or application servers, acting as a middle layer between requests coming from Web browsers or other HTTP clients and databases or applications on the HTTP server. Their job is to perform the following tasks, as illustrated in Figure 1-1.

Figure 1-1

1.Read the explicit data sent by the client.

The end user normally enters this data in an HTML form on a Web page. However, the data could also come from an applet or a custom HTTP client program.

2.Read the implicit HTTP request data sent by the browser.

Figure 1-1 shows a single arrow going from the client to the Web server (the layer where servlets and JSP execute), but there are really two varieties of data: the explicit data that the end user enters in a form and the behind-the-scenes HTTP information. Both varieties are critical. The HTTP information includes cookies, information about media types and compression schemes the browser understands, and so on.

3.Generate the results.

This process may require talking to a database, executing an RMI or EJB call, invoking a Web service, or computing the response directly. Your real data may be in a relational database. Fine. But your database probably doesn't speak HTTP or return results in HTML, so the Web browser can't talk directly to the database. Even if it could, for security reasons, you probably would not want it to. The same argument applies to most other applications. You need the Web middle layer to extract the incoming data from the HTTP stream, talk to the application, and embed the results inside a document.

4.Send the explicit data (i.e., the document) to the client.

This document can be sent in a variety of formats, including text (HTML or XML), binary (GIF images), or even a compressed format like gzip that is layered on top of some other underlying format. But, HTML is by far the most common format, so an important servlet/JSP task is to wrap the results inside of HTML.

5.Send the implicit HTTP response data.

Figure 1-1 shows a single arrow going from the Web middle layer (the servlet or JSP page) to the client. But, there are really two varieties of data sent: the document itself and the behind-the-scenes HTTP information. Again, both varieties are critical to effective development. Sending HTTP response data involves telling the browser or other client what type of document is being returned (e.g., HTML), setting cookies and caching parameters, and other such tasks.

1.2 Why Build Web Pages Dynamically?

Many client requests can be satisfied by prebuilt documents, and the server would handle these requests without invoking servlets. In many cases, however, a static result is not sufficient, and a page needs to be generated for each request. There are a number of reasons why Web pages need to be built on-the-fly:

1. The Web page is based on data sent by the client.

For instance, the results page from search engines and order-confirmation pages at online stores are specific to particular user requests. You don't know what to display until you read the data that the user submits. Just remember that the user submits two kinds of data: explicit (i.e., HTML form data) and implicit (i.e., HTTP request headers). Either kind of input can be used to build the output page. In particular, it is quite common to build a user-specific page based on a cookie value.

2.The Web page is derived from data that changes frequently.

If the page changes for every request, then you certainly need to build the response at request time. If it changes only periodically, however, you could do it two ways: you could periodically build a new Web page on the server (independently of client requests), or you could wait and only build the page when the user requests it. The right approach depends on the situation, but sometimes it is more convenient to do the latter: wait for the user request. For example, a weather report or news headlines site might build the pages dynamically, perhaps returning a previously built page if that page is still up to date.

3.The Web page uses information from corporate databases or other server-side sources.

If the information is in a database, you need server-side processing even if the client is using dynamic Web content such as an applet. Imagine using an applet by itself for a search engine site:

"Downloading 50 terabyte applet, please wait!" Obviously, that is silly; you need to talk to the database. Going from the client to the Web tier to the database (a three-tier approach) instead of from an applet directly to a database (a two-tier approach) provides increased flexibility and security with little or no performance penalty. After all, the database call is usually the rate-limiting step, so going through the Web server does not slow things down. In fact, a three-tier approach is often faster because the middle tier can perform caching and connection pooling.

In principle, servlets are not restricted to Web or application servers that handle HTTP requests but can be used for other types of servers as well. For example, servlets could be embedded in FTP or mail servers to extend their functionality. And, a servlet API for SIP (Session Initiation Protocol) servers was recently standardized (see http://jcp.org/en/jsr/detail?id=116). In practice, however, this use of servlets has not caught on, and we'll only be discussing HTTP servlets.

1.3 The Advantages of Servlets Over "Traditional" CGI

Java servlets are more efficient, easier to use, more powerful, more portable, safer, and cheaper than traditional CGI and many alternative CGI-like technologies.

1.Efficient

With traditional CGI, a new process is started for each HTTP request. If the CGI program itself is relatively short, the overhead of starting the process can dominate the execution time. With servlets, the Java virtual machine stays running and handles each request with a lightweight Java thread, not a heavyweight operating system process. Similarly, in traditional CGI, if there are N requests to the same CGI program, the code for the CGI program is loaded into memory N times. With servlets, however, there would be N threads, but only a single copy of the servlet class would be loaded. This approach reduces server memory requirements and saves time by instantiating fewer objects. Finally, when a CGI program finishes handling a request, the program terminates. This approach makes it difficult to cache computations, keep database connections open, and perform other optimizations that rely on persistent data. Servlets, however, remain in memory even after they complete a response, so it is straightforward to store arbitrarily complex data between client requests.

2.Convenient

Servlets have an extensive infrastructure for automatically parsing and decoding HTML form data, reading and setting HTTP headers, handling cookies, tracking sessions, and many other such high-level utilities. In CGI, you have to do much of this yourself. Besides, if you already know the Java programming language, why learn Perl too? You're already convinced that Java technology makes for more reliable and reusable code than does Visual Basic, VBScript, or C++. Why go back to those languages for server-side programming?

3.Powerful

Servlets support several capabilities that are difficult or impossible to accomplish with regular CGI. Servlets can talk directly to the Web server, whereas regular CGI programs cannot, at least not without using a server-specific API. Communicating with the Web server makes it easier to translate relative URLs into concrete path names, for instance. Multiple servlets can also share data, making it easy to implement database connection pooling and similar resource-sharing optimizations. Servlets can also maintain information from request to request, simplifying techniques like session tracking and caching of previous computations.

4.Portable

Servlets are written in the Java programming language and follow a standard API. Servlets are supported directly or by a plugin on virtually every major Web server. Consequently, servlets written for, say, Macromedia JRun can run virtually unchanged on Apache Tomcat, Microsoft Internet Information Server (with a separate plugin), IBM WebSphere, iPlanet Enterprise Server, Oracle9i AS, or StarNine WebStar. They are part of the Java 2 Platform, Enterprise Edition, so industry support for servlets is becoming even more pervasive.

5.Inexpensive

A number of free or very inexpensive Web servers are good for development use or deployment of low- or medium-volume Web sites. Thus, with servlets and JSP you can start with a free or inexpensive server and migrate to more expensive servers with high-performance capabilities or advanced administration utilities only after your project meets initial success. This is in contrast to many of the other CGI alternatives, which require a significant initial investment for the purchase of a proprietary package.

Price and portability are somewhat connected. For example, Marty tries to keep track of the countries of readers that send him questions by email. India was near the top of the list, probably #2 behind the U.S. Marty also taught one of his JSP and servlet training courses (see http://courses.coreservlets.com/) in Manila, and there was great interest in servlet and JSP technology there.

Now, why are India and the Philippines both so interested? We surmise that the answer is twofold. First, both countries have large pools of well-educated software developers. Second, both countries have (or had, at that time) highly unfavorable currency exchange rates against the U.S. dollar. So, buying a special-purpose Web server from a U.S. company consumed a large part of early project funds.

But, with servlets and JSP, they could start with a free server: Apache Tomcat (either standalone, embedded in the regular Apache Web server, or embedded in Microsoft IIS). Once the project starts to become successful, they could move to a server like Caucho Resin that had higher performance and easier administration but that is not free. But none of their servlets or JSP pages have to be rewritten. If their project becomes even larger, they might want to move to a distributed (clustered) environment. No problem: they could move to Macromedia JRun Professional, which supports distributed applications (Web farms). Again, none of their servlets or JSP pages have to be rewritten. If the project becomes quite large and complex, they might want to use Enterprise JavaBeans (EJB) to encapsulate their business logic. So, they might switch to BEA WebLogic or Oracle9i AS. Again, none of their servlets or JSP pages have to be rewritten. Finally, if their project becomes even bigger, they might move it off of their Linux box and onto an IBM mainframe running IBM WebSphere. But once again, none of their servlets or JSP pages have to be rewritten.

6.Secure

One of the main sources of vulnerabilities in traditional CGI stems from the fact that the programs are often executed by general-purpose operating system shells. So, the CGI programmer must be careful to filter out characters such as backquotes and semicolons that are treated specially by the shell. Implementing this precaution is harder than one might think, and weaknesses stemming from this problem are constantly being uncovered in widely used CGI libraries.

A second source of problems is the fact that some CGI programs are processed by languages that do not automatically check array or string bounds. For example, in C and C++ it is perfectly legal to allocate a 100-element array and then write into the 999th "element," which is really some random part of program memory. So, programmers who forget to perform this check open up their system to deliberate or accidental buffer overflow attacks.

Servlets suffer from neither of these problems. Even if a servlet executes a system call (e.g., with Runtime.exec or JNI) to invoke a program on the local operating system, it does not use a shell to do so. And, of course, array bounds checking and other memory protection features are a central part of the Java programming language.

7.Mainstream

There are a lot of good technologies out there. But if vendors don't support them and developers don't know how to use them, what good are they? Servlet and JSP technology is supported by servers from Apache, Oracle, IBM, Sybase, BEA, Macromedia, Caucho, Sun/iPlanet, New Atlanta, ATG, Fujitsu, Lutris, Silverstream, the World Wide Web Consortium (W3C), and many others. Several low-cost plugins add support to Microsoft IIS and Zeus as well. They run on Windows, Unix/Linux, MacOS, VMS, and IBM mainframe operating systems. They are the single most popular application of the Java programming language. They are arguably the most popular choice for developing medium to large Web applications. They are used by the airline industry (most United Airlines and Delta Airlines Web sites), e-commerce (http://ofoto.com), online banking (First USA Bank, Banco Popular de Puerto Rico), Web search engines/portals (http://excite.com), large financial sites (American Century Investments), and hundreds of other sites that you visit every day.

Of course, popularity alone is no proof of good technology. Numerous counter-examples abound. But our point is that you are not experimenting with a new and unproven technology when you work with server-side Java.

注:本文来源于http://pdf.coreservlets.com

中文译文

Servlet和JSP技术简述

1.1 Servlet的功能

Servlets是运行在Web或应用服务器上的Java程序,它是一个中间层,负责连接来自Web浏览器或其他HTTP客户程序的请求和HTTP服务器上的数据库或应用程序。Servlet的工作是执行如下的任务,如图1-1所示 。

图1-1 Web中间件的作用

1、读取客户发送的显式数据。

最终用户一般在页面的HTML表单中输入这些数据。然而,数据还有可能来自applet或定制的HTTP客户程序。

2、读取由浏览器发送的隐式请求数据。

图1.1中显示了一条从客户端到Web服务器的单箭头,但实际上从客户端传送到Web服务器的数据有两种,它们分别为用户在表单中输入的显式数据,以及后台的HTTP信息。两种数据都很重要。HTTP信息包括cookie、浏览器所能识别的媒体类型和压缩模式等。

3、生成结果。

这个过程可能需要访问数据库、执行RMI或EJB调用、调用Web服务,或者直接计算得出对应的响应。实际的数据可能存储在关系型数据库中。该数据库可能不理解HTTP,或者不能返回HTML形式的结果,所有Web浏览器不能直接与数据库进行会话。即使它能够做到这一点,为了安全上的考虑,我们也不希望让它这么做。对应大多数其他应用程序,也存在类似的问题。因此,我们需要Web中间层从HTTP流中提取输入数据,与应用程序会话,并将结果嵌入到文档中。

4、向客户发送显式数据(即文档)。

这个文档可以用各种格式发送,包括文本(HTML或XML),二进制(GIF图),甚至可以是建立在其他底层格式之上的压缩格式,如gzip。但是,到目前为止,HTML是最常用的格式,故而servlet和JSP的重要任务之一就是将结果包装到HTML中。

5、发送隐式的HTTP响应数据。

图1.1中显示了一条从Web中间层到客户端的单箭头。但是,实际发送的数据有两种:文档本身,以及后台的HTTP信息。同样,两种数据对开发来说都是至关重要的。HTTP响应数据的发送过程涉及告知浏览器或其他客户程序所返回文档的类型(如HTML),设置cookie和缓存参数,以及其他类似的任务。

1.2 动态构建网页的原因

预先建立的文档可以满足客户的许多请求,服务器无需调用servlet就可以处理这些请求。然而,许多情况下静态的结果不能满足要求,我们需要针对每个请求生成一个页面。实时构建页面的理由有很多种:

1、网页基于客户发送的数据。

例如,搜索引擎生成的页面,以及在线商店的订单确认页面,都要针对特定的用户请求而产生。在没有读取到用户提交的数据之前,我们不知道应该显示什么。要记住,用户提交两种类型的数据:显示(即HTML表单的数据)和隐式(即HTTP请求的报头)。两种输入都可用来构建输出页面。基于cookie值针对具体用户构建页面的情况尤其普遍。

2、页面由频繁改变的数据导出。

如果页面需要根据每个具体的请求做出相应的改变,当然需要在请求发生时构建响应。但是,如果页面周期性地改变,我们可以用两种方式来处理它:周期性地在服务器上构建新的页面(和客户请求无关),或者仅仅在用户请求该页面时再构建。具体应该采用哪种方式要根据具体情况而定,但后一种方式常常更为方便,因为它只需简单地等待用户的请求。例如,天气预报或新闻网站可能会动态地构建页面,也有可能会返回之前构建的页面(如果它还是最新的话)。

3、页面中使用了来自公司数据库或其他服务器端数据源的信息。

如果数据存储在数据库中,那么,即使客户端使用动态Web内容,比如applet,我们依旧需要执行服务器端处理。想象以下,如果一个搜索引擎网站完全使用applet,那么用户将会看到:“正在下载50TB的applet,请等待!”。显然,这样很愚蠢;这种情况下,我们需要与数据库进行会话。从客户端到Web层再到数据库(三层结构),要比从applet直接到数据库(二层结构)更灵活,也更安全,而性能上的损失很少甚至没有。毕竟数据库调用通常是对速度影响最大的步骤,因而,经过中间层可以执行高速缓存和连接共享。

理论上讲,servlet并非只能用于处理HTTP请求的Web服务器或应用服务器,它同样可以用于其他类型的服务器。例如,servlet能够嵌入到FTP或邮件服务器中,扩展他们的功能。而且,用于会话启动协议服务器的servlet API最近已经被标准化(参见http://jcp.org/en/jsr/detail?id=116)。但在实践中,servlet的这种用法尚不流行,在此,我们只论述HTTP Servlet。

1.3 Servlet相对于“传统”CGI的优点

和传统CGI及许多类CGI技术相比,Java servelt效率更高、更易用、更强大、更容易移植、更安全、也更廉价。

1、效率

应用传统的CGI,针对每个HTTP请求都用启动一个新的进程。如果CGI程序自身相对比较简短,那么启动进程的开销会占用大部分执行时间。而使用servelt,Java虚拟机会一直运行,并用轻量级的Java线程处理每个请求,而非重量级的操作系统进程。类似地,应用传统的CGI技术,如果存在对同一CGI程序的N个请求,那么CGI程序的代码会载入内存N次。同样的情况,如果使用servlet则启动N个线程,仅仅载入servlet类的单一副本。这种方式减少了服务器的内存需求,通过实例化更少的对象从而节省了时间。最后,当CGI程序结束对请求的处理之后,程序结束。这种方式难以缓存计算结果,保持数据库连接打开,或是执行依靠持续性数据的其他优化。然而,servlet会一直停留在内存中(即使请求处理完毕),因而可以直接存储客户请求之间的任意复杂数据。

2、便利

Servlet提供大量的基础构造,可以自动分析和解码HTML的表单数据,读取和设置HTTP报头,处理cookie,跟踪会话,以及其他的高级功能。而在CGI中,大部分工作都需要我们自己完成。另外,如果您已经了解了Java编程语言,为什么还学Perl呢?您已经承认应用Java技术编写的代码要比Visual Basic,VBScript或C++编写的代码更可靠,且更易重用,为什么还有倒退回去选择那些语言来开发服务器端的程序呢?

3、强大

Servlet支持常规CGI难以实现或根本不能实现的几项功能。Servlet能够直接与Web服务器对话,而常规的CGI程序做不到这一点,至少在不使用服务器专有API的情况下是这样。例如,与Web服务器的通信使得将相对URL转换成具体的路径名变得更为容易。多个servelt还可以共享数据,从而易于实现数据库连接共享和类似的资源共享优化。Servelt还能维护请求之间的信息,使得诸如会话跟踪和计算结果缓存等技术变得更为简单。

4、可移植性

Servelt使用Java编程语言,并且遵循标准的API。所有主要的Web服务器,实际上都直接或通过插件支持servlet。因此。为Macromedia JRun编写的servlet,可以不经过任何修改地在Apache Tomcat,Microsoft Internet Information Server,IBM WebSphere ,iPlanet Enterprise Server,Oracle9i AS 或者StarNine WebStar上运行。他们是Java2平台企业版的一部分,所以对servlet的支持越来越普遍。

5、廉价

对于开发用的网站、低容量或中等容量网站的部署,有大量免费或极为廉价的Web服务器可供选择。因此,通过使用servlet和jsp,我们可以从免费或廉价的服务器开始,在项目获得初步成功后,再移植到具有更高性能或高级管理工具的昂贵的服务器上。这与其他CGI方案形成鲜明的对比,这些CGI方案在初期都需要为购买专利软件包投入大量的资金。

价格和可移植性在某种程度上是相互关联的。例如,Marty记录了所有通过电子邮件向他发送问题的读者的所在国。印度接近列表的顶端,可能仅次于美国。Marty曾在马尼拉讲授过JSP和servlet培训课程(参见 http://courses.coreservlets.com/),那儿对servelt和jsp技术抱有很大的兴趣。

那么,为什么印度和菲律宾都对这项技术这么感兴趣呢?我们推测答案可能分两部分。首先,这两个国家都拥有大量训练有素的软件开发人员。其次,这两个国家的货币对美元的汇率都极为不利。因此,从美国公司那里购买专用Web服务器会消耗掉项目的大部分前期资金。

但是,使用servlet 和JSP,他们能够从免费的服务器开始:Apache Tomcat。项目取得成功之后,他们可以转移到性能更高、管理更容易,但需要付费的服务器。他们的servlet和JSP不需要重新编写。如果他们的项目变得更庞大,他们或许希望转移到分布式环境。没有问题:他们可以转而使用Macromedia JRun Professional,该服务器支持分布式应用。同样,他们的servlet和jsp没有任何部分需要重写。如果项目变得极为庞大,错综复杂,他们或许希望使用Enterprise JavaBeans来封装他们的商业逻辑。因此,他们可以切换到BEA WebLogic或Oracle9i AS。同样,不需要对servlet和JSP做出更改。最后,如果他们的项目变得更庞大,他们或许将他从Linux转移到运行IBM WebSphere的IBM大型机上,他们还是不需要做出任何更改。

6、安全

传统CGI程序中主要的漏洞来源之一就是,CGI程序常常由通用的操作系统外壳来执行。因此,CGI程序必须仔细地过滤掉那些可能被外壳特殊处理的字符,如反引导和分号。实现这项预防措施的难度可能超出我们的想象,在广泛应用的CGI库中,不断发现由这类问题引发的弱点。

问题的第二个来源是,一些CGI程序用不自动检查数组和字符串边界的语言编写而成。例如,在C和C++中,可以分配一个100个元素的数组,然后向第999个“元素“写入数据——实际上是程序内存的随机部分,这完全合法。因而,如果程序员忘记执行这项检查,就会将系统暴露在蓄意或偶然的缓冲区溢出攻击之下。

Servelt不存在这些问题。即使servelt执行系统调用激活本地操作系统上的程序,它也不会用到外壳来完成这项任务。当然,数组边界的检查以及其他内存保护特性是Java编程语言的核心部分。

7、主流

虽然存在许多很好的技术,但是,如果提供商不支持他们,或开发人员不知道如何使用这些技术,那么它们的优点又如何体现呢?servelt和JSP技术得到服务器提供商的广泛支持,包括Apache,Oracle,IBM,Sybase,BEA,Maromedia,Causho,Sun/iPlanet,New Atlanta,ATG,Fujitsu,Lutris,Silverstream,World Wide Web Consortinrm ,以及其他服务器。存在几种低廉的插件,通过应用这些插件,Microsoft IIS和Zeus也同样支持servlet和jsp技术,它们运行在Windows,Unix/Linus,MacOS,VMS,和IBM大型机操作系统之上。它们用在航空业、电子商务、在线银行、web搜索引擎、门户、大型金融网站、以及成百上千您日常光顾的其他网站。

当然,仅仅是流行并不能证明技术的优越性。众多的反例比比皆是。但我们的立场是:服务器端Java本非一项新的、未经证实的技术。

猜你喜欢

转载自blog.csdn.net/m0_66999594/article/details/128665926
今日推荐