资源目录
压缩包内文档预览:(预览前20页/共64页)
编号:30909177
类型:共享资源
大小:27.66MB
格式:ZIP
上传时间:2019-12-13
上传人:遗****
认证信息
个人认证
刘**(实名认证)
湖北
IP属地:湖北
30
积分
- 关 键 词:
-
学生
成绩管理系统
开发
实现
- 资源描述:
-
学生成绩管理系统开发与实现,学生,成绩管理系统,开发,实现
- 内容简介:
-
华科学院HUAKE INSTITUTE OF TAIYUAN UNIVERSITY OF SCIENCE & TECHNOLOGY 毕业设计(论文)题目:学生成绩管理系统的开发与实现学 生 姓 名 张宇 学 号 201022080240 班 级 通信102202H 所属院(系) 电子信息工程系 指 导 教 师 田璟霞 2014 年 5 月 20 日太原科技大学毕业设计(论文)任务书学院(直属系):电子信息工程系 时间: 2014年 3 月 4 日学 生 姓 名张宇指 导 教 师田璟霞设计(论文)题目学生成绩管理系统开发与实现主要研究内容1.Java面向对象程序设计2.JavaEE企业开发方式以及相关技术3.学生成绩管理的核心概念以及Java平台的实现研究方法按照软件开发MVC标准实施,具体包括,需求分析、体系结构设计、模块设计、数据库设计等相关设计。主要技术指标(或研究目标)JavaEE企业核心技术(servlet、jsp、jdbc、框架div+css、html、数据库)主要参考文献1.实践者的研究方法 (美)普雷斯曼 2.Java Web整合开发王者归来 刘京华3.JavaScript权威指南 (美)弗兰纳根4.Java与模式 闫宏 5.HTML+CSS网页设计与布局从入门到精通 温谦学生成绩管理系统的开发与实现摘要随着网络通信技术的迅速发展和信息技术的广泛应用,计算机的应用已普 及到经济和社会生活的各个领域。教育领域也不例外,现今已经出现了各种远程网络在线教育系统、图书管理系统、学籍管理系统,学生成绩管理系统等。其中成绩管理系统是任一院校都不可缺少的部分,它的内容对于学校的决策者和教育管理者来说都是至关重要,而传统的人工管理方式效率较低,为数据的查询、更新和维护带来了极大的不便。所以学生成绩管理信息系统的开发和应用是必要的,它能够为管理人员提供充足的信息和快捷的查询手段,提高学校学生成绩管理的效率。本文按照目前流行的B/S体系结构模式,结合现有的学生成绩管理系统的现状,采用SQLServer2000数据库和JAVA技术,设计开发了学生成绩管理系统系统,本系统分为前台页面和后台管理两大部分,主要实现成绩查询、成绩删除、成绩添加、成绩修改四大主体功能。在细节方面,着重考虑了用户添加成绩、成绩查询两方面的简易操作,力求为客户带来方便。关键字: 学生成绩管理系统,JAVA,SQL Server,JDBCIIDevelopment and Implementation of student achievement management systemAbstractAlongwiththefastdevelopmentofnetworkcommunicationtechnologyandthewideapplicationofinformationtechnology,thecomputerapplicationtotheeconomicalandsociallifeeachdomain.Educationisnoexception,nowhasavarietyofremotenetworkeducationsystem,librarymanagementsystem,studentmanagementsystem,studentachievementmanagementsystem.Theperformancemanagementsystemisoneoftheinstitutionsareanindispensablepart,itscontentsforthepolicymakersandschooleducationmanagersiscritical,andthetraditionalmanualmanagementmodeisthelowefficiency,dataquery,updateandmaintenancehasbroughtgreatinconvenience.Sothestudentachievementmanagementinformationsystemdevelopmentandapplicationisnecessary,itcanprovideadequatestaffformanagementinformationandthequickinquirymethod,improvestudentachievementschoolmanagementefficiency.ThisaccordingtothepopularB/Sarchitecturemodel,combinedwiththecurrentstatusofstudentachievementmanagementsystemusingSQLServer2000databaseandJAVAtechnology,designanddevelopmentofstudentachievementmanagementsystem,thesystemisdividedintofrontpageandbackofficemanagementtwoparts,themainaccomplishmentqueryresultstodelete,addscores,resultsmodifythefourmainfunctions.Indetail,thefocustoconsidertheusertoaddresults,performancequerybotheasytooperate,andstrivetobringconvenienceforcustomers.Keywords: studentachievementmanagement system, JAVA,SQL Server,JDBC太原科技大学华科学院毕业设计(论文)目 录摘要I关键字:IAbstractIIKeywords: II第一章 系统概述- 1 -1.1 系统开发背景- 1 -1.2.1 硬件环境- 2 -1.2.2 软件环境- 2 -1.3 技术介绍及开发工具- 2 -1.3.1 Eclipse- 2 -1.3.2 Oracle11- 2 -1.3.3 Tomcat- 3 -1.3.4 JAVA语言的概述- 3 -1.3.5编码- 4 -1.4 任务概述- 4 -第二章 系统需求分析- 5 -2.1 系统实现的基本功能- 6 -2.2 数据库设计- 7 -2.2.1数据库概念结构设计- 7 -2.2.2数据库逻辑结构设计- 9 -2.2.3数据库物理设计- 9 -第三章 系统总体设计- 12 -3.1 系统结构- 12 -3.2 模块- 12 -第四章 系统详细设计和实现- 16 -4.1 人机界面设计- 16 -4.1.1 学生成绩管理系统登录首页- 16 -4.1.2 学生成绩管理系统首页- 17 -4.1.3 学生信息查询页- 18 -4.1.4 学生个人信息管理页- 22 -4.1.5 学生课程信息管理页- 24 -4.1.6学生成绩管理页- 25 -4.1.7 用户权限信息管理页- 27 -4.2 技术介绍- 29 -4.2.1 HTML编写技术- 29 -4.2.2 JSP编写技术- 32 -4.2.3 servlet编写技术- 35 -第五章 测试- 39 -5.1 测试目的- 39 -5.2 测试目标- 39 -5.3 测试用例- 40 -结束语- 43 -参考文献- 44 -致 谢- 44 -附录 英文资料翻译- 45 -III- 1 -第一章 系统概述1.1 系统开发背景随着我国国民经济的飞速发展,电子计算机和通信技术的发展,人类已经逐渐地进入信息化社会。信息和材料、能源一样成为一种社会的基本生产资料,在人类的社会生产活动中发挥着重要的作用。同时人们对信息和数据的利用与处理也已进入自动化、网络化和社会化的阶段,因此,开发相关的管理信息系统已经成为各行各业的必要和必需了 1.2 项目开发的环境。随着高校办学规模的扩大和招生人数的增加,学生成绩管理维护是学校管理中异常重要的一个环节,作为学校,除了育人,就是育知,学生成绩管理的计算机化是整个学校教务管理中的重要一部分,介于它的重要性,学生成绩管理系统的开发与应用就逐渐提入议程,并占着越来越重要的份量。 运用学生成绩管理维护系统可以减轻学院教学人员的工作量,缩小开支,提高工作效率与准确率,能够节省时间,学生也能够尽快的知道自己的考试成绩,投入新的课程的学习或复习这次没有考过的课程。而学生成绩管理系统的应用也为今天的民办教育在未来市场的竞争力有所提高。 在现代高科技的飞跃发展,人们工作习惯的改变,特别是电脑的大量普及,人们生活节奏越来越快,怎样提高工作效率是人们首先考虑的问题。学生成绩管理是一个非常繁琐与复杂的一项工作,一个原因就是工作量大,不好管。对于一个学校而言,管理好学生的成绩,是非常重要的。因此开发出一套学生成绩管理系统是非常必要的。一直以来学生的成绩管理是学校工作中的一项重要内容,我国的大中专院校 的学生成绩管理水平普遍不高。随着办学规模的扩大和招生人数的增加,建立一个成绩维护系统是非常必要的。普通的成绩管理已不能适应时代的发展,因为它浪费了许多的人力和物力。在当今信息时代这种传统的管理方法必然被以计算机为基础的信息管理系统所代替。为了提高成绩管理的效率,我选择了学生成绩管理系统作为毕业设计的课题。 本系统在大多数成绩管理系统的基础上,主要增加了教师对成绩的操作,教师改完试卷后不用在往学院的教务处办公室报送成绩,可以直接的把成绩上传到网络上,学生也可以方便快速的查询到自己的成绩,考试后教务管理人员也不必总呆在学院的办公室,他们都不受时间,位置,空间的限制,只要有上网的条件,在家里就可以完成有关成绩的录入,更新,管理,查询和删除。本系统将会改变以前靠手工管理学生成绩的状况,提高工作效率。希望能为老师和学校的工作带来便利。1.2.1 硬件环境酷睿处理器,2GB以上内存容量。1.2.2 软件环境Microsoft Windows7操作系统,Oracle数据库,Eclipse开发工具,服务器采用Tomcat 6.0.36。1.3 技术介绍及开发工具本系统采用Java语言,基于JavaEE企业级开发,前台采用用HTML,JavaScript,CSS,JQuery技术得到页面,后台用JQuery框架实现与数据库的交互,数据库采用Oracle,选用 Hibernate框架实现访问数据库,并用Spring框架来管理整个开发过程。1.3.1 EclipseEclipse 是一个开放源代码的、基于Java的可扩展开发平台。Eclipse是著名的跨平台的自由集成开发环境(IDE)。就其本身而言,它是一个框架和一组服务,用于通过插件组件构建开发环境。Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。1.3.2 Oracle11数据库是60年代末出现的一门计算机软件技术,到现在虽然只有三十多年的历史,但在理论和时间上都已经趋于成熟,使我们能够方便的使用。数据库技术是信息系统的核心和基础,它的出现极大地促进了计算机应用向各行各业的渗透数据库的建设规模、数据库信息量的大小和使用频度已成为衡量一个国家信息化程度的重要标志。Oracle 11g是甲骨文公司在2007年年7月12日推出的最新数据库软件,Oracle 11g有400多项功能,经过了1500万个小时的测试,开发工作量达到了3.6万人/月。相对过往版本而言,Oracle 11g具有了与众不同的特性。OracleXE是一个只支持4G数据的小型的免费的数据库,可以自由使用。 OracleXE数据库与Oracle企业版的数据库从PHP操作层面来说是一样的,也就是说你在OracleXE平台下开发的PHP应用可以直接移植到Oracle企业版的环境中去使用。 Oracle的安装包括企业版服务器端和客户端两部分,用户可以根据实际情况选择不同的部分安装。1.3.3 TomcatTomcat 是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。Tomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。本设计中,Tomcat是作为服务器的角色出现的,利用Tomcat来响应HTML页面的请求。1.3.4 JAVA语言的概述Java是一种简单的,面象对象的,分布式的,解释的,键壮的,安全的,结构的,中立的,可移植的,性能很优异的多线程的,动态的语言。当1995年SUN推出Java语言之后,全世界的目光都被这个神奇的语言所吸引。Java语言其实最早诞生于1991年,起初被称为OAK语言,是SUN公司为一些消费性电子产品而设计的一个通用环境。他们最初的目的只是为了开发一种独立于平台的软件技术,而且在网络出现之前,OAK可以说是默默无闻,甚至差点夭折。但是,网络的出现改变了OAK的命运。在Java出现以前。Internet上的信息内容都是一些乏味死板的HTML文档。这对于那些迷恋于WEB浏览的人们来说简直不可容忍。他们迫切希望能在WEN中看到一些交互式的内容,开发人员也极希望能够在WEB上创建一类无需考虑软硬件平台就可以执行的应用程序,当然这些程序还要有极大的安全保障。对于用户的这种要求,传统的编程语言显得无能为力,而SUN的工程师敏锐地察觉到了这一点,从1994年起,他们开始将OAK技术应用于WEB上,并且开发出了HotJava的第一个版本。当SUN公司1995年正式以Java这个名字推出的时候,几乎所有的WEB开发人员都想到:噢,这正是我想要的。于是Java成了一颗耀眼的明星,丑小鸭一下了变成了白天鹅。1.3.5编码程序设计语言是人和计算机通信的最基本的工具,它的特点必然会影响人的思维和解决问题的方式,会影响人和计算机通信的方式和质量,也会影响其他人阅读和理解程序的难易程度。因此在编码时所选择的编码语言是很重要的。本系统主要使用了基于JAVA语言的JSP技术Servlet技术,Hibernate开源框架技术,Struts开源框架技术,以及HTML、CSS、XML等等语言和技术。因此该系统据有JAVA的所有优点,移植性能比较好,数据库移植也比较容易。本系统使用了许多的框架技术扩展也比较容易。在编码实现过程中,使用了基本的控制结构,每行只写一行代码,在必要的地方加了许多的注释,结构清晰,代码容易阅读。对所有的输入数据都进行了检验,并且对组合输入也进行了级联验证,输入的格式也比较简单。对于验证出错的,给出详细的错误信息,使用户可以很清楚的知道自己在哪里出错了,方便用户的使用。1.4 任务概述本设计借助山西维信科技有限公司学生成绩管理系统帮助学生强化软件开发的流程和规范,建立学生成绩管理系统,采用计算机对学生成绩进行管理,进一步提高办学效益和现代化水平。帮助广大教师提高工作效率,实现学生成绩维护工作流程的系统化、规范化和自动化。为了使系统在学院的管理中发挥更大的作用,实现工作过程的计算机化,提高工作效率和工作质量,需要实现的功能大致包括:1、 具有不同的权限,在不同的权限下可以进行不同的操作, 不同用户有不同的查询和修改权限,防止非法查询,非法修改;2、 对于权限是学生的用户能够查询所有人及他自己的个人信息,课程信息,成绩信息;3、 对于权限是老师的用户能够查询所有信息以及对所有信息进行增加,删除,修改操作。4、 系统应具有实用性、可靠性和适用性,同时注意到先进性。5、 方便用户的操作,尽量减少用户的操作。第二章 系统需求分析本系统运用Windows7作为操作平台,数据库采用Oracle数据库,运用的软件开发平台为eclipse,属于浏览器/服务器模式,数据库在浏览器上能运行,并提供数据库之间的数据复制功能,人员具备知识:Java核心,数据库的基本操作,Web网页的基本开发。从技术可行性的角度可以完成此设计。JAVA是Windows系统下的可视化集成开发工具,提供了强大的可视化组件功能,使程序员能够快速、高效地开发出Windows系统下的应用程序,特别是在数据库和网络方面,JAVA与其它开发工具相比更是胜出一筹,在竞争激励的开发工具市场中越来越羸得程序设计者的青睐。可视化主要是指开发图形用户界面,而只需调用各个组件即可。确定软件产品是否能够被最终的用户所接受,用户是否能操作最终的产品:由于网站的操作是基于B/S结构,简单明了,用户只需相关电脑的基本知识,而管理员也无需具备专业知识,只需要对一些数据进行输入以及平时的日常维护就够了。所以,从可操作性上来看,也是合理的。采用的是B/S结构,即浏览器和服务器架构,示意图如图2-1所示。浏系统览器端提供用户操作界面,接受用户输入的各种操作信息,向服务器发出各种操作命令或数据请求,并接收执行操作命令后返回的数据结果,根据业务逻辑进行相关的运算,向用户显示相应的信息。服务器端接收浏览器端的数据或命令请求,并请求数据库服务器执行数据库操作得到相应的数据集,对数据集进行相应的处理,然后将数据集或处理后的数据集返回给浏览器端。 用户浏览器 Web服务器数据库服务器IE等浏览器Tomcat操作请求返回查询结果使用eclipse操作 数据库返回操作结果图2.1系统架构示意图2.1 系统实现的基本功能该学生成绩管理系统具备两方面的功能:登录分为学生和老师两种权限,不同权限登录可以进行不同的操作;一方面是学生用户,学生通过输入学号和密码进入该系统后,可以进行一些基础查询(学生信息查询、课程信息查询、成绩查询);一方面老师进入该系统则比学生多一些权限:可以进行各种信息的查询、增加、删除、修改等操作。登陆后还有退出及修改密码的功能。具体功能的详细描述如下:1功能需求1.1登录功能用户使用自己的用户名及密码进行登录,不同的用户具有不同的权限。系统登录权限分两种:学生和老师。学生权限登录能够查询学生的个人信息,课程信息及课程成绩信息;而老师权限登录不仅能够查询各种信息,还能对各种信息进行增加,删除,修改等操作。1.2信息的查询使用学生和老师权限进行登录有对学生个人信息,课程信息,成绩信息进行各种查询,信息的查询有两种不同的形式:一是能够对表中信息进行全部查询,可以查询所有学生的各种信息,二是可以对表中信息某一条件进行模糊查询,学生个人信息是每一个学生一条信息,所以可以根据某一个学生的学号查询此学号学生的个人信息;学生的课程信息可以根据某一个学号查询某一个学生的课程,根据某一个课程号或者课程名查询某一门课的学生,根据代课老师的名字查询某一老师所带的课程,根据课程类型查询必修课及选修课的课程信息;学生成绩信息可以根据某一个学号查询某一个学生的课程成绩,根据课程号或者课程名查询某一课程的所有学生这门课的成绩。1.3信息的操作老师用老师的权限登录以后不仅可以和学生一样查询学生的各种信息,而且可以对学生的各种信息进行增加,删除,修改操作。1) 信息的增加:老师可以对学生的个人信息,课程信息,成绩信息,用户信息进行增加操作;2) 信息的删除:老师可以对学生的各种信息及用户信息进行删除操作,但是要注意,一旦删除信息无法恢复,所以进行删除操作要谨慎;3) 信息的修改:老师可以对学生各种信息及用户信息进行修改操作;2.性能需求1)时间特性要求:在软件方面,响应时间有点慢,因为是用Eclipse做的,它占用内存比较大,更新处理时间比较快而且迅速。2)安全性:设立口令号和密码验证方式,防止非法用户登录进行操作。也就是用户只有学生和教师才能进入这个系统,用户凭口令号和密码进入此系统,系统会判断用户是那种类型,分别拥有不同的权限。2.2 数据库设计2.2.1数据库概念结构设计针对本学生成绩管理系统,可得到实体属性图(见图2.2、图2.3、图2.4、图2.5、图2.6)。图2.2 学生实体-属性图图2.3 课程实体-属性图图2.4 课程成绩实体-属性图图2.5 角色实体-属性图图2.6 权限实体-属性图2.2.2数据库逻辑结构设计数据库逻辑结构关系模型为:个人信息(学号,班级,姓名,性别,年龄,民族,出生日期);课程信息(课程号,课程名,任课老师,类型);成绩信息(学号,姓名,课程号,课程名,成绩,学分,类型);用户(用户名,密码,权限)。2.2.3数据库物理设计根据需求,本设计采用五张表来实现,包括学生个人信息表stu_imp,见表2.1,课程信息表stu_cours,见表2.2,成绩信息表stu_per,见表2.3,用户表stu_user,见表2.4,用户权限表stu_role,见表2.5。学生个人信息表:表中包括了学生的学号、班级、姓名、性别、年龄、民族、及出生日期等基本信息。表2.1学生个人信息表(stu_imp) 字段名 描述数据类型数据长度NULLPrimarykeystu_id学号NUMBER20NPKstu_class班级VC220stu_name姓名VC220stu_sex性别VC220stu_age年龄NUMBER5stu_minzu民族VC220stu_birth_date出生日期date课程信息表:表中包含学生学号,课程的课程号、课程名、代课老师及课程类型等课程信息。由于同一个学生可以学习不同课程,同一课程有不同学生学习,所以表中学号及课程号可能出现重复现象,所以设置表中学号及课程号为联合主键,两列不能为空且不能同时相同,避免出现同一学生学习同一门课程的情况。表中课程类型分为必修和、及选修两种。表2.2课程信息表(stu_cours)字段名描述数据类型数据长度NULLPrimarykeystu_id学号NUMBER20NPKcours_id课程号VC220NPKcours_name课程名VC220cours_teacher代课老师VC220cours_leixin课程类型VC220成绩信息表:表中包含学生学号、姓名,课程的课程号、课程名、成绩、学分及课程类型。由于同一个学生可以学习不同课程,同一课程有不同学生学习,所以表中学号及课程号可能出现重复现象,所以设置表中学号及课程号为联合主键,两列不能为空且不能同时相同,避免出现同一学生学习同一门课程的情况。学生的学号、姓名要与学生个人信息表的信息对应,课程的课程号、课程名、课程类型要与学生课程信息表中的信息对应。表2.3成绩信息表(stu_per)字段名描述数据类型数据长度NULLPrimarykeystu_id学号NUMBER20NPKstu_name姓名VC220NPKcours_id课程号NUMBER20cours_name课程名VC220cours_per成绩NUMBER5cours_xuefen学分NUMBER5cours_leixin课程类型VC2用户表:表中包含用户登录系统所使用的用户名、密码及每个用户对应的权限。用户的权限只能为0或1,权限信息要与用户权限表内信息对应。表2.4 用户表(stu_user)字段名描述数据类型数据长度NULLPrimarykeystu_userid用户idNUMBER20Nstu_password密码VC220Nrole_id权限NUMBER5N用户权限表:表中包含用户登录系统时所使用用户名的权限信息,用户的权限只能为0或1:如果为0,则权限为学生;如果为1则权限为老师。表2.5 用户权限表(stu_role)字段名描述数据类型数据长度NULLPrimarykeyrole_id权限idNUMBER5Nrole_name权限名VC220N第三章 系统总体设计3.1 系统结构根据需求,本学习成绩管理系统分为前台界面及后台管理系统两大模块:前台界面包括登录界面及系统主界面两个模块;后台管理信息系统包括学生信息查询,学生个人信息管理,学生课程信息管理,学生成绩信息管理,用户权限信息管理五个模块,如图3.1.登录学生登录老师登录查询信息查询信息增加信息删除信息修改信息图3.1 系统功能模块3.2 模块后台信息管理系统的五个模块介绍为:学生信息查询模块包括:查询学生个人信息,查询学生课程信息,查询学生成绩信息。模块图如图3.21.查询个人信息:查询显示所有学生个人信息,可以根据学生学号搜索查询单个学生的个人信息,点击返回回到查询界面;2.查询课程信息:查询显示所有学生课程信息,可以根据学生学号查询单个学生所有课程信息,可以根据学生课程号及课程名查询所有学习本课程的学生课程信息,可以根据代课教师姓名查询此老师所带课程的课程信息,可以根据课程类型查询所有必修或者选修课的课程信息,点击返回回到查询界面;3.查询成绩信息:查询显示所有学生成绩信息,可以根据学生学号查询单个学生所有课程成绩信息,可以根据学生课程号及课程名查询所有学习本课程的学生课程成绩信息,点击返回回到查询界面;必修选修查询一门课程成绩信息信息查询个人信息查询页面课程信息查询页面成绩信息查询页面查询全部个人信息查询单个学生个人信息查询全部课程信息查询单个学生课程信息查询一门课程课程信息查询单个老师代课信息查询不同类型课程信息查询全部课程成绩信息查询单个学生成绩信息图3.2 个人信息查询模块图学生个人信息管理模块包括:增加个人信息,删除个人信息,修改个人信息;模块图如图3.3。1.增加个人信息:管理员添加学生的个人信息。 2.删除个人信息:管理员删除规定学号学生的个人信息。3.修改个人信息:修改某一学号学生的个人信息。个人信息管理增加学生个人信息删除学生个人信息修改学生个人信息图3.3 用户管理模块图学生课程信息管理模块包括:新增学生课程信息、删除学生课程信息、修改学生课程信息;模块图如图3.4。1.新增课程信息:添加学生所有课程信息。 2.删除课程信息:删除某一学生某一门课程的课程信息。3.修改课程信息:修改某一学生某一门课程的课程信息。课程信息管理新增课程信息删除课程信息修改课程信息图3.4 课程信息管理模块图学生课程成绩信息管理模块包括:新增学生课程成绩信息、删除学生课程成绩信息、修改学生课程成绩信息;模块图如图3.5。1.增加课程成绩信息:添加学生所有课程成绩信息。 2.删除课程成绩信息:删除某一学生某一门课程的成绩信息。3.修改课程成绩信息:修改某一学生某一门课程的成绩信息。成绩信息管理增加成绩信息删除成绩信息修改成绩信息图3.4 成绩信息管理模块图用户权限信息管理模块包括:查询用户信息、新增用户信息、删除用户信息、修改用户信息;模块图如图3.5。1.查询用户信息:添加用户名、密码、权限等信息。 2. 新增用户信息:新增用户信息。3. 删除用户信息:删除某一用户名的用户信息。4. 修改用户信息:修改某一用户名的用户信息成绩信息管理增加用户信息删除用户信息修改用户信息图3.5 课程信息管理模块图第四章 系统详细设计和实现4.1 人机界面设计人机界面接口是接口设计的一个重要的组成部分。对于交互式系统来说,人机界面设计和数据设计、体系结构设计及过程设计一样重要。4.1.1 学生成绩管理系统登录首页此系统有用户登录的功能,在此也中选择是老师还是学生登录,页面如图4.1,其对应的流程图如图4.2。图4.1 登录页面N开始进入登陆界面用户登录输入用户名和密码,选择权限验证用户名,密码和权限是否正确进入系统主界面结束退出图4.2 系统登录流程图4.1.2 学生成绩管理系统首页用户登陆后所显示的主要界面,顶部有标题,右侧有系统时间显示,用户修改密码链接以及系统退出按钮。左侧有功能按钮,右侧为主要显示界面,显示主页以及左侧按钮对应的功能内容,刚进入界面显示的是首页,首页显示公告及一些需要让登录用户看到的信息。页面如图4.3。图4.3学生成绩管理系统首页4.1.3 学生信息查询页学生信息查询包括查询个人信息,查询课程信息,查询成绩信息,查询个人信息页如图4.4,查询全部学生个人信息页如图4.5,查询单人个人信息页如图4.6,查询课程信息页如图4.7,查询全部课程信息页如图4.8,查询单人课程信息页见图4.9,查询成绩信息页如图4.10,查询全部成绩信息页如图4.11,查询单人成绩信息页如图4.12。,图4.4 查询个人信息页图4.5 查询全部学生个人信息页面图4.6 查询单人个人信息页图4.7 查询课程信息页图4.8 查询全部课程信息页图4.9 查询单人课程信息页图4.10 查询成绩信息页图4.11 查询全部成绩信息页图4.12 查询单人成绩信息页4.1.4 学生个人信息管理页学生个人信息管理包括新增个人信息,删除个人信息,修改个人信息三部分。新增个人信息页如图4.13,删除个人信息页如图4.14,修改个人信息页如图4.15。图4.13 新增个人信息页面图4.14删除个人信息页面图4.15 修改个人信息页面4.1.5 学生课程信息管理页学生课程管理包括新增课程信息,删除课程信息,修改课程信息三部分。新增课程信息页如图4.16,删除课程信息页如图4.17,修改课程信息页如图4.18。图4.16 新增课程信息页面图4.17 删除课程信息页面图4.18 修改课程信息页面4.1.6学生成绩管理页学生成绩管理包括新增成绩信息,删除成绩信息,修改成绩信息三部分。新增成绩信息页如图4.19,删除成绩信息页如图4.20,修改成绩信息页如图4.21。图4.19 新增成绩信息页面图4.20 删除成绩信息页面图4.21 修改成绩信息页面4.1.7 用户权限信息管理页用户权限管理包括查询用户信息,新增用户信息,删除用户信息,修改用户信息三部分。查询用户信息页如图4.22,新增用户信息页如图4.23,删除用户信息页如图4.24,修改用户信息页如图4.25。图4.22 查询用户页面图4.23 增加用户页面图4.24 删除用户页面图4.25 修改用户页面4.2 技术介绍本设计的使用了三种技术将B/C功能进行实现,分别是HTML编写技术,Jsp编写技术以及servlet编写技术。HTML编写的程序用来显示不需要数据处理的前台页面;Jsp技术编写的程序用来显示需要进行数据处理的前台页面;servlet编写的程序用来进行后台数据的处理,这些操作不需要在前台显示。4.2.1 HTML编写技术html即超文本标记语言及标准通用标记语言下的一个应用。“超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。超文本标记语言的结构包括“头”部分(外语:Head)、和“主体”部分(外语:Body),其中“头”部提供关于网页的信息,“主体”部分提供网页的具体内容。本学生管理系统有许多页面是用html技术编写的,本系统使用html技术编写的页面包括:1、登录页面:登录页面中的用户名、密码、权限输入功能的实现部分代码: 账 户: 密 码: 学生老师 2、管理模块:1)增加模块部分代码:(以增加学生个人信息页面为例)增加学生信息班级姓名性别男女年龄民族出生日期2)删除模块部分代码:(以删除学生个人信息页面为例)删除学生基本信息学号:3)修改模块部分代码:(以修改学生个人信息为例)修改学生基本信息学号:4)脚本添加模块部分代码:function check_name()var name1 = document.form.stuname.value;var stuclass1 = document.form.stuclass.value;var age1 = document.form.stuage.value;var stuminzu1 = document.form.stuminzu.value;var date1 = document.form.stubirth_date.value;if(name1=)alert(请输入姓名);return false;else if(stuclass1=)alert(请输入班级);return false;else if(age1=)alert(年龄异常);return false;else if(0age1|age1120)alert(年龄异常);return false;else if(stuminzu1=)alert(请输入民族);return false;else if(date1=)alert(出生日期不能为空);return false;4.2.2 JSP编写技术JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。本学生管理系统有许多页面是用jsp技术编写的,本系统使用jsp技术编写的页面包括:1、查询模块部分代码(以查询学生个人信息为例):学生个人信息学号班级姓名性别年龄民族出生日期%StuimpPageDao spd = new StuimpPageDao();List list = spd.getimp(pagesize);Iterator it = list.iterator();while(it.hasNext()StuImpbean eb = it.next();%2、增加模块部分代码(以增加个人信息为例):班级姓名性别男女年龄民族出生日期3、修改模块部分代码(以删除个人信息为例):学号input type=text name=stuid value= readonly /班级input type=text name=stuclass value= /姓名input type=text name=stuname value= /性别input type=text name=stusex value= /年龄input type=text name=stuage value= /民族input type=text name=stumingzu value= /出生日期input type=text name=stubirth_date value= /4、分页显示部分代码:4.2.3 servlet编写技术servlet是在服务器上运行的小程序。这个词是在Java applet的环境中创造的,Java applet是一种当作单独文件跟网页一起发送的小程序,它通常用于在客户端运行,结果得到为用户进行运算或者根据用户互作用定位图形等服务。服务器上需要一些程序,常常是根据用户输入访问数据库的程序。这些通常是使用公共网关接口(CGI(Common Gateway Interface))应用程序完成的。然而,在服务器上运行Java,这种程序可使用Java编程语言实现。在通信量大的服务器上,Javaservlet的优点在于它们的执行速度更快于CGI程序。各个用户请求被激活成单个程序中的一个线程,而无需创建单独的进程,这意味着服务器端处理请求的系统开销将明显降低。本学生管理系统有许多页面是用servlet技术编写的,本系统使用servlet技术编写的页面包括:1)用户登录校验部分代码:request.setCharacterEncoding(utf-8);/System.out.println(1);HttpSession session = request.getSession();String roleid = request.getParameter(job);String username = request.getParameter(stu_userid);String password = request.getParameter(stu_password);Connection conn = DBUti.getconn(); String sql = select count(*) from stu_user where stu_userid = ? and stu_password = ? and role_id = ?;PreparedStatement pstmt;try pstmt = conn.prepareStatement(sql);pstmt = conn.prepareStatement(sql);pstmt.setString(1,username);pstmt.setString(2,password);pstmt.setString(3,roleid);ResultSet rs = pstmt.executeQuery();if(rs.next()int a = Integer.parseInt(rs.getString(1);System.out.println(a);if(a = 0)response.sendRedirect(fail.jsp);elseString sql1 = select *from stu_user where stu_userid = ? and stu_password = ?;PreparedStatement pstmt1 = conn.prepareStatement(sql1);pstmt1.setString(1,username);pstmt1.setString(2,password);ResultSet rs1 = pstmt1.executeQuery();if(rs1.next()session.setAttribute(roleid,roleid);session.setAttribute(username, username);session.setAttribute(password, password);response.sendRedirect(index.jsp); catch (SQLException e1) / TODO Auto-generated catch blocke1.printStackTrace();2)增加模块部分代码(以增加个人信息为例):request.setCharacterEncoding(utf-8);Connection conn = DBUti.getconn();String stuid = request.getParameter(stuid);String stuclass = request.getParameter(stuclass);String stuname = request.getParameter(stuname);/System.out.println(+stuname);String stusex1 = request.getParameterValues(stusex);System.out.println(stusex10);String stusex = null;if(stusex10.equals(0)stusex = 男;else stusex = 女;System.out.println(stusex);String stuage = request.getParameter(stuage);String stuminzu = request.getParameter(stuminzu);String stubirth_date = request.getParameter(stubirth_date);PreparedStatement pstmt1 = null;String sql1 = select max(stu_id) from stu_imp;ResultSet rs = null;int a = 0;try pstmt1 = conn.prepareStatement(sql1);rs = pstmt1.executeQuery();while(rs.next()a = Integer.parseInt(rs.getString(1)+1; catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();PreparedStatement pstmt = null;String sql = insert into stu_imp(stu_id,stu_class,stu_name,stu_sex,stu_age,stu_minzu,stu_birth_date)values(?,?,?,?,?,?,to_date(?,yyyy-mm-dd hh24:mi:ss);try pstmt = conn.prepareStatement(sql);pstmt.setString(1,a+);pstmt.setString(2,stuclass);pstmt.setString(3,stuname);pstmt.setString(4,stusex);pstmt.setString(5,stuage);pstmt.setString(6,stuminzu);pstmt.setString(7,stubirth_date);pstmt.executeUpdate(); catch (SQLException e1) / TODO Auto-generated catch blocke1.printStackTrace();finallyDBUti.close(pstmt, conn);response.sendRedirect(AddSuccess1.html);2)删除模块部分代码(以删除个人信息为例):String stuid = request.getParameter(stuid);Connection conn = DBUti.getconn();PreparedStatement pstmt = null;String sql = delete from stu_imp where stu_id = ?;try pstmt = conn.prepareStatement(sql);pstmt.setString(1,stuid);pstmt.executeUpdate(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();finallyDBUti.close(pstmt, conn);response.sendRedirect(DelSuccess1.html);3)修改模块部分代码(以修改个人信息为例):request.setCharacterEncoding(utf-8);String stuid = request.getParameter(stuid);String stuclass = request.getParameter(stuclass);String stuname = request.getParameter(stuname);String stusex = request.getParameter(stusex);String stuage = request.getParameter(stuage);String stumingzu = request.getParameter(stumingzu);String stubirth_date = request.getParameter(stubirth_date);Connection conn = DBUti.getconn();String sql = update stu_imp set stu_class=?,stu_name=?,stu_sex=?,stu_age=?,stu_minzu=?,stu_birth_date=to_date(?,yyyy-mm-dd hh24:mi:ss)where stu_id=?;PreparedStatement pstmt = null;try pstmt = conn.prepareStatement(sql);pstmt.setString(1, stuclass);pstmt.setString(2, stuname);pstmt.setString(3, stusex);pstmt.setString(4, stuage);pstmt.setString(5, stumingzu);pstmt.setString(6, stubirth_date);pstmt.setString(7, stuid);pstmt.executeUpdate(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();finallyDBUti.close(pstmt,conn);response.sendRedirect(UpdateSuccess1.html);第五章 测试5.1 测试目的软件测试就是用来测试软件的功能和性能是否能够达到用户的需求,测试的目的是确保软件完成既定功能。 5.2 测试目标任何开发平台所开发的系统,测试的目标都是确保所开发软件的功能符合用户的要求。具体表现在以下几个方面:1 确保用户提出的需求能实现,系统用户登录:使用用户名、密码、权限登录系统;信息查询:包括学生个人信息查询、课程信息查询、成绩信息查询;学生个人信息管理:包括增加个人信息、修改个人信息、删除个人信息;学生课程信息管理:包括增加课程信息、删除课程信息、修改课程信息;学生成绩信息管理:包括增加成绩信息、删除成绩信息、修改成绩信息;用户信息管理:包括用户信息查询、增加用户信息、删除用户信息、修改用户信息。 2 确保系统在要求的硬件和软件平台上工作正常。5.3 测试用例针对我做的模块设计测试用例,信息查询测试用例见表5.1,个人信息管理测试用例见表5.2,课程管理测试用例见表5.,3,成绩管理测试用例见表5.4,用户管理测试用例见表5.5。表5.1 信息查询测试用例测试场景测试项目预测结果(正常)测试结果信息查询个人信息查询1正常情况下,用户登录后,信息查询栏会显示出个人信息查询按钮,点击会显示单独查询和全部查询2.点击全部查询会显示出所有学生个人信息3.在单独查询中输入对应学号可查询对应学生个人信息课程查询1正常情况下,用户登录后,信息查询栏会显示出课程信息查询按钮,点击会显示单独查询和全部查询2.点击全部查询会显示所有学生课程信息3.在单独查询中输入对应学号可查询对应学生课程信息成绩查询1正常情况下,用户登录后,信息查询栏会显示出成绩信息查询按钮,点击会显示单独查询和全部查询2.点击全部查询会显示所有学生成绩信息3.在单独查询中输入对应学号可查询对应学生成绩信息表5.2 个人信息管理测试用例测试场景测试项目预测结果(正常)测试结果个人信息管理个人信息增加1正常情况下,用户登录后,个人信息增加栏会显示个人信息增加页面,输入个人信息,提交即可增加个人信息个人信息删除1正常情况下,用户登录后,个人信息删除栏会显示个人信息删除页面,输入要删除的信息学号,确认即可删除个人信息个人信息修改1正常情况下,用户登录后,个人信息修改栏会显示个人信息修改页面,输入要修改的信息学号,确认即可显示要修改的个人信息,修改后提交即可修改个人信息表5.3 课程信息管理测试用例测试场景测试项目预测结果(正常)测试结果课程信息管理课程信息增加1正常情况下,用户登录后,课程信息增加栏会显示课程信息增加页面,输入课程信息,提交即可增加课程信息课程信息删除1正常情况下,用户登录后,课程信息删除栏会显示课程信息删除页面,输入要删除的信息学号或课程号,确认即可删除课程信息课程信息修改1正常情况下,用户登录后,课程信息修改栏会显示课程信息修改页面,输入要修改的信息学号,确认即可显示要修改的课程信息,修改后提交即可修改课程信息表5.4 成绩信息管理测试用例测试场景测试项目预测结果(正常)测试结果成绩信息管理成绩信息增加1正常情况下,用户登录后,成绩信息增加栏会显示成绩信息增加页面,输入成绩信息,提交即可增加成绩信息成绩信息删除1正常情况下,用户登录后,成绩信息删除栏会显示成绩信息删除页面,输入要删除的信息学号或课程号,确认即可删除成绩信息成绩信息修改1正常情况下,用户登录后,成绩信息修改栏会显示成绩信息修改页面,输入要修改的信息学号,确认即可显示要修改的成绩信息,修改后提交即可修改成绩信息表5.5 用户管理测试用例测试场景测试项目预测结果(正常)测试结果用户管理用户登录1正常情况下,用户登录,输入正确的用户名,密码及权限将进入主页面,在右上方可修改密码及退出系统查询用户信息1正常情况下,用户登录后,用户信息查询栏会显示所有用户信息增加用户信息1正常情况下,用户登录后,用户信息增加栏会显示用户信息增加页面,输入用户信息,提交即可增加用户信息删除用户信息1正常情况下,用户登录后,用户信息删除栏会显示用户信息删除页面,输入要删除的信息的用户名,确认即可删除用户信息修改用户信息1正常情况下,用户登录后,用户信息修改栏会显示用户信息修改页面,输入要修改的信息学号,确认即可显示要修改的用户信息,修改后提交即可修改用户信息表5.1 员工调整测试用例测试场景测试项目预测结果(正常)测试结果员工部门管理部门管理1正常情况下,用户登录后,部门管理,会显示出部门调整,点击部门查询会显示部门id,部门名称,上级部门图5.1图5.22单击列表中的设置部门按钮,将进入部门调整页面图5.3员工管理1正常情况下,用户登录后,点击人员管理,会显示出查询员工、设置员工和添加员工,点击员工查询会显示员工id,姓名,性别,加入日期,生日,内部邮箱,地址,电话图5.42单击列表中的设置员工按钮,将进入员工调整页面图5.5结束语从选题到做需求分析到代码的编写和实现,我对自己所选的系统一步步的有了更加清晰的认识。系统并不大,但是在实现其功能的过程中我还是遇到不少的困难,首先是界面的问题,开始的时候界面感觉不错,但随着功能模块的增加,需要有越来越多的页面,前台和后台的页面又需要不同的风格,这样就需要很多的时间来布置界面,实现功能的代码早已完成,但页面的布置一直跟不上功能的实现。在代码实现的过程中,也遇到很多问题,总结起来就两点,一是经常出现的空指针异常,另一个是找不到目标文件的异常,通过向老师,同学请教或者自己上网查询的方法之后,把这些错误也顺利的解决了。由于时间和能力等各方面的限制,系统的设计和功能方面还存在着很多不足,没有达到预期想象,还需要不断改进和完善。参考文献1 William Stallings.操作系统-精髓与设计原理:电子工业出版社,2009年2 萨师煊,王珊.数据库系统概论.北京:高等教育出版社,2000年3 王怀民.企业应用架构模式:机械工业出版社 ,2004 年 4 张海藩.软件工程导论:清华大学出版社,2008年5 李钟尉,马文强,陈丹丹.java从精通到入门:清华大学出版社,2010年6JAVA大学基础教程 电子工业出版社 20067杨文龙,软件工程,电子工业出版社,1997致 谢在毕业设计即将结束时,首先向我的指导老师田璟霞老师致以最诚挚的谢意。感谢田老师对我的关心和孜孜不倦的教诲,感谢她在设计阶段给予了我非常全面的指导,感谢教导过我的所有的老师,这份毕业的成果离不开她们教导与关怀。在我的学习和课题完成期间,我还得到了维信科技其他老师的帮助,在此一并表示诚挚的感谢。感谢一起在维信实训的同班同学的热情帮助和支持以及在我完成课题的过程中的帮助和指导。附录 英文资料翻译英文原文:JSPapplicationframeworksWhatareapplicationframeworks:Aframeworkisareusable,semi-completeapplicationthatcanbespecializedtoproducecustomapplicationsJohnson.Likepeople,softwareapplicationsaremorealikethantheyaredifferent.Theyrunonthesamecomputers,expectinputfromthesamedevices,outputtothesamedisplays,andsavedatatothesameharddisks.Developersworkingonconventionaldesktopapplicationsareaccustomedtotoolkitsanddevelopmentenvironmentsthatleveragethesamenessbetweenapplications.Applicationframeworksbuildonthiscommongroundtoprovidedeveloperswithareusablestructurethatcanserveasthefoundationfortheirownproducts.Aframeworkprovidesdeveloperswithasetofbackbonecomponentsthathavethefollowingcharacteristics:1.Theyareknowntoworkwellinotherapplications.2.Theyarereadytousewiththenextproject.3.Theycanalsobeusedbyotherteamsintheorganization.Frameworksaretheclassicbuild-versus-buyproposition.Ifyoubuildit,youwillunderstanditwhenyouaredonebuthowlongwillitbebeforeyoucanrollyourown?Ifyoubuyit,youwillhavetoclimbthelearningcurveandhowlongisthatgoingtotake?Thereisnorightanswerhere,butmostobserverswouldagreethatframeworkssuchasStrutsprovideasignificantreturnoninvestmentcomparedtostartingfromscratch,especiallyforlargerprojects.Othertypesofframeworks:Theideaofaframeworkappliesnotonlytoapplicationsbuttoapplicationcomponentsaswell.Throughoutthisarticle,weintroduceothertypesofframeworksthatyoucanusewithStruts.TheseincludetheLucenesearchengine,theScaffoldtoolkit,theStrutsvalidator,andtheTilestaglibrary.Likeapplicationframeworks,thesetoolsprovidesemi-completeversionsofasubsystemthatcanbespecializedtoprovideacustomcomponent.Someframeworkshavebeenlinkedtoaproprietarydevelopmentenvironment.ThisisnotthecasewithStrutsoranyoftheotherframeworksshowninthisbook.YoucanuseanydevelopmentenvironmentwithStruts:VisualAgeforJava,JBuilder,Eclipse,Emacs,andTextpadareallpopularchoicesamongStrutsdevelopers.IfyoucanuseitwithJava,youcanuseitwithStruts.Enablingtechnologies:ApplicationsdevelopedwithStrutsarebasedonanumberofenablingtechnologies.ThesecomponentsarenotspecifictoStrutsandunderlieeveryJavawebapplication.AreasonthatdevelopersuseframeworkslikeStrutsistohidethenastydetailsbehindacronymslikeHTTP,CGI,andJSP.AsaStrutsdeveloper,youdontneedtobeanalphabetsoupguru,butaworkingknowledgeofthesebasetechnologiescanhelpyoudevisecreativesolutionstotrickyproblems.HypertextTransferProtocol(HTTP):Whenmediatingtalksbetweennations,diplomatsoftenfollowaformalprotocol.Diplomaticprotocolsaredesignedtoavoidmisunderstandingsandtokeepnegotiationsfrombreakingdown.Inasimilarvein,whencomputersneedtotalk,theyalsofollowaformalprotocol.Theprotocoldefineshowdataistransmittedandhowtodecodeitonceitarrives.WebapplicationsusetheHypertextTransferProtocol(HTTP)tomovedatabetweenthebrowserrunningonyourcomputerandtheapplicationrunningontheserver.ManyserverapplicationscommunicateusingprotocolsotherthanHTTP.Someofthesemaintainanongoingconnectionbetweenthecomputers.Theapplicationserverknowsexactlywhoisconnectedatalltimesandcantellwhenaconnectionisdropped.Becausetheyknowthestateofeachconnectionandtheidentityofeachpersonusingit,theseareknownasstatefulprotocols.Bycontrast,HTTPisknownasastatelessprotocol.AnHTTPserverwillacceptanyrequestfromanyclientandwillalwaysprovidesometypeofresponse,eveniftheresponseisjusttosayno.Withouttheoverheadofnegotiatingandretainingaconnection,statelessprotocolscanhandlealargevolumeofrequests.ThisisonereasonwhytheInternethasbeenabletoscaletomillionsofcomputers.AnotherreasonHTTPhasbecometheuniversalstandardisitssimplicity.AnHTTPrequestlookslikeanordinarytextdocument.ThishasmadeiteasyforapplicationstomakeHTTPrequests.YoucanevensendanHTTPrequestbyhandusingastandardutilitysuchasTelnet.WhentheHTTPresponsecomesback,itisalsoinplaintextthatdeveloperscanread.ThefirstlineintheHTTPrequestcontainsthemethod,followedbythelocationoftherequestedresourceandtheversionofHTTP.ZeroormoreHTTPrequestheadersfollowtheinitialline.TheHTTPheadersprovideadditionalinformationtotheserver.Thiscanincludethebrowsertypeandversion,acceptabledocumenttypes,andthebrowserscookies,justtonameafew.Ofthesevenrequestmethods,GETandPOSTarebyfarthemostpopular.Oncetheserverhasreceivedandservicedtherequest,itwillissueanHTTPresponse.ThefirstlineintheresponseiscalledthestatuslineandcarriestheHTTPprotocolversion,anumericstatus,andabriefdescriptionofthestatus.Followingthestatusline,theserverwillreturnasetofHTTPresponseheadersthatworkinawaysimilartotherequestheaders.Aswementioned,HTTPdoesnotpreservestateinformationbetweenrequests.Theserverlogstherequest,sendstheresponse,andgoesblissfullyontothenextrequest.Whilesimpleandefficient,astatelessprotocolisproblematicfordynamicapplicationsthatneedtokeeptrackoftheirusers.(Ignoranceisnotalwaysbliss.CookiesandURLrewritingaretwocommonwaystokeeptrackofusersbetweenrequests.Acookieisaspecialpacketofinformationontheuserscomputer.URLrewritingstoresaspecialreferenceinthepageaddressthataJavaservercanuse totrackusers.Neitherapproachisseamless,andusingeithermeansextraworkwhendevelopingawebapplication.Onitsown,astandardHTTPwebserverdoesnottrafficindynamiccontent.Itmainlyusestherequesttolocateafileandthenreturnsthatfileintheresponse.ThefileistypicallyformattedusingHypertextMarkupLanguage(HTML)W3C,HTMLthatthewebbrowsercanformatanddisplay.TheHTMLpageoftenincludeshypertextlinkstootherwebpagesandmaydisplayanynumberofothergoodies,suchasimagesandvideos.Theuserclicksalinktomakeanotherrequest,andtheprocessbeginsanew.Standardwebservershandlestaticcontentandimagesquitewellbutneedahelpinghandtoprovideuserswithacustomized,dynamicresponse.DEFINITION:StaticcontentontheWebcomesdirectlyfromtextordatafiles,likeHTMLorJPEGfiles.Thesefilesmightbechangedfromtimetotime,buttheyarenotalteredautomaticallywhenrequestedbyawebbrowser.Dynamiccontent,ontheotherhand,isgeneratedonthefly,typicallyinresponsetoanindividualizedrequestfromabrowser.CommonGatewayInterface(CGI):ThefirstwidelyusedstandardforproducingdynamiccontentwastheCommonGatewayInterface(CGI).CGIusesstandardoperatingsystemfeatures,suchasenvironmentvariablesandstandardinputandoutput,tocreateabridge,orgateway,betweenthewebserverandotherapplicationsonthehostmachine.Theotherapplicationscanlookattherequestsenttothembythewebserverandcreateacustomizedresponse.WhenawebserverreceivesarequestthatsintendedforaCGIprogram,itrunsthatprogramandprovidestheprogramwithinformationfromtheincomingrequest.TheCGIprogramrunsandsendsitsoutputbacktotheserver.Thewebserverthenrelaystheresponsetothebrowser.CGIdefinesasetofconventionsregardingwhatinformationitwillpassasenvironmentvariablesandhowitexpectsstandardinputandoutputtobeused.LikeHTTP,CGIisflexibleandeasytoimplement,andagreatnumberofCGI-awareprogramshavebeenwritten.ThemaindrawbacktoCGIisthatitmustrunanewcopyoftheCGI-awareprogramforeachrequest.Thisisarelativelyexpensiveprocessthatcanbogdownhigh-volumesiteswherethousandsofrequestsareservicedperminute.AnotherdrawbackisthatCGIprogramstendtobeplatformdependent.ACGIprogramwrittenforoneoperatingsystemmaynotrunonanother.Javaservlets:SunsJavaServletplatformdirectlyaddressesthetwomaindrawbacksofCGIprograms.First,servletsofferbetterperformanceandutilizationofresourcesthanconventionalCGIprograms.Second,thewrite-once,run-anywherenatureofJavameansthatservletsareportablebetweenoperatingsystemsthathaveaJavaVirtualMachine(JVM).Aservletlooksandfeelslikeaminiaturewebserver.Itreceivesarequestandrendersaresponse.But,unlikeconventionalwebservers,theservletapplicationprogramminginterface(API)isspecificallydesignedtohelpJavadeveloperscreatedynamicapplications.TheservletitselfissimplyaJavaclassthathasbeencompiledintobytecode,likeanyotherJavaobject.TheservlethasaccesstoarichAPIofHTTP-specificservices,butitisstilljustanotherJavaobjectrunninginanapplicationandcanleverageallyourotherJavaassets.Togiveconventionalwebserversaccesstoservlets,theservletsarepluggedintocontainers.Theservletcontainerisattachedtothewebserver.EachservletcandeclarewhatURLpatternsitwouldliketohandle.Whenarequestmatchingaregisteredpatternarrives,thewebserverpassestherequesttothecontainer,andthecontainerinvokestheservlet.ButunlikeCGIprograms,anewservletisnotcreatedforeachrequest.Oncethecontainerinstantiatestheservlet,itwilljustcreateanewthreadforeachrequest.JavathreadsaremuchlessexpensivethantheserverprocessesusedbyCGIprograms.Oncetheservlethasbeencreated,usingitforadditionalrequestsincursverylittleoverhead.Servletdeveloperscanusetheinit()methodtoholdreferencestoexpensiveresources,suchasdatabaseconnectionsorEJBHomeInterfaces,sothattheycanbesharedbetweenrequests.Acquiringresourceslikethesecantakeseveralsecondswhichislongerthanmanysurfersarewillingtowait.Theotheredgeoftheswordisthat,sinceservletsaremultithreaded,servletdevelopersmusttakespecialcaretobesuretheirservletsarethread-safe.Tolearnmoreaboutservletprogramming,werecommendJavaServletsbyExample,byAlanR.WilliamsonWilliamson.ThedefinitivesourceforServletinformationistheJavaServletSpecificationSun,JST.JavaServerPages:WhileJavaservletsareabigstepupfromCGIprograms,theyarenotapanacea.Togeneratetheresponse,developersarestillstuckwithusingprintlnstatementstorendertheHTML.Codethatlookslike:out.println(OnelineofHTML.);out.println(AnotherlineofHTML.);isalltoocommoninservletsthatgeneratetheHTTPresponse.TherearelibrariesthatcanhelpyougenerateHTML,butasapplicationsgrowmorecomplex,JavadevelopersendupbeingcastintotheroleofHTMLpagedesigners.Meanwhile,giventhechoice,mostprojectmanagersprefertodividedevelopmentteamsintospecializedgroups.TheylikeHTMLdesignerstobeworkingonthepresentationwhileJavaengineerssweatthebusinesslogic.Usingservletsaloneencouragesmixingmarkupwithbusinesslogic,makingitdifficultforteammemberstospecialize.Tosolvethisproblem,Sunturnedtotheideaofusingserverpagestocombinescriptingandtemplatingtechnologiesintoasinglecomponent.TobuildJavaServer Pages,developersstartbycreatingHTMLpagesinthesameoldway,usingthesameoldHTMLsyntax.Tobringdynamiccontentintothepage,thedevelopercanalsoplaceJSPscriptingelementsonthepage.ScriptingelementsaretagsthatencapsulatelogicthatisrecognizedbytheJSP.YoucaneasilypickoutscriptingelementsonJSPpagesbylookingforcodethatbeginswith.TobeseenasaJSPpage,thefilejustneedstobesavedwithanextensionof.jsp.WhenaclientrequeststheJSPpage,thecontainertranslatesthepageintoasourcecodefileforaJavaservletandcompilesthesourceintoaJavaclassfilejustasyouwoulddoifyouwerewritingaservletfromscratch.Atruntime,thecontainercanalsocheckthelastmodifieddateoftheJSPfileagainsttheclassfile.IftheJSPfilehaschangedsinceitwaslastcompiled,thecontainerwillretranslateandrebuildthepagealloveragain.ProjectmanagerscannowassignthepresentationlayertoHTMLdevelopers,whothenpassontheirworktoJavadeveloperstocompletethebusiness-logicportion.TheimportantthingtorememberisthataJSPpageisreallyjustaservlet.Anythingyoucandowithaservlet,youcandowithaJSP.JavaBeans:JavaBeansareJavaclasseswhichconformtoasetofdesignpatternsthatmakethemeasiertousewithdevelopmenttoolsandothercomponents.DEFINITIONAJavaBeanisareusablesoftwarecomponentwritteninJava.ToqualifyasaJavaBean,theclassmustbeconcreteandpublic,andhaveanoargumentconstructor.JavaBeansexposeinternalfieldsaspropertiesbyprovidingpublicmethodsthatfollowaconsistentdesignpattern.Knowingthatthepropertynamesfollowthispattern,otherJavaclassesareabletouseintrospectiontodiscoverandmanipulateJavaBeanproperties.TheJavaBeandesignpatternsprovideaccesstothebeansinternalstatethroughtwoflavorsofmethods:accessorsareusedtoreadaJavaBeansstate;mutatorsareusedtochangeaJavaBeansstate.Mutatorsarealwaysprefixedwithlowercasetokensetfollowedbythepropertyname.Thefirstcharacterinthepropertynamemustbeuppercase.Thereturnvalueisalwaysvoidmutatorsonlychangepropertyvalues;theydonotretrievethem.Themutatorforasimplepropertytakesonlyoneparameterinitssignature,whichcanbeofanytype.Mutatorsareoftennicknamedsettersaftertheirprefix.ThemutatormethodsignatureforaweightpropertyofthetypeDoublewouldbe:publicvoidsetWeight(Doubleweight)Asimilardesignpatternisusedtocreatetheaccessormethodsignature.Accessormethodsarealwaysprefixedwiththelowercasetokenget,followedbythepropertyname.Thefirstcharacterinthepropertynamemustbeuppercase.Thereturnvaluewillmatchthemethodparameterinthecorrespondingmutator.Accessorsforsimplepropertiescannotacceptparametersintheirmethodsignature.Notsurprisingly,accessorsareoftencalledgetters.Theaccessormethodsignatureforourweightpropertyis:publicDoublegetWeight()Iftheaccessorreturnsalogicalvalue,thereisavariantpattern.Insteadofusingthelowercasetokenget,alogicalpropertycanusetheprefixis,followedbythepropertyname.Thefirstcharacterinthepropertynamemustbeuppercase.ThereturnvaluewillalwaysbealogicalvalueeitherbooleanorBoolean.Logicalaccessorscannotacceptparametersintheirmethodsignature.Thebooleanaccessormethodsignatureforanonpropertywould be publicbooleanisOn()ThecanonicalmethodsignaturesplayanimportantrolewhenworkingwithJava-Beans.OthercomponentsareabletousetheJavaReflectionAPItodiscoveraJavaBeanspropertiesbylookingformethodsprefixedbyset,is,orget.IfacomponentfindssuchasignatureonaJavaBean,itknowsthatthemethodcanbeusedtoaccessorchangethebeansproperties.SunintroducedJavaBeanstoworkwithGUIcomponents,buttheyarenowusedwitheveryaspectofJavadevelopment,includingwebapplications.WhenSunengineersdevelopedtheJSPtagextensionclasses,theydesignedthemtoworkwithJavaBeans.ThedynamicdataforapagecanbepassedasaJavaBean,andtheJSPtagcanthenusethebeanspropertiestocustomizetheoutput.FormoreonJavaBeans,wehighlyrecommendTheAwesomePowerofJavaBeans,byLawrenceH.RodriguesRodrigues.ThedefinitivesourceforJavaBeaninformationistheJavaBeanSpecificationSun,JBS.Model2:The0.92releaseoftheServlet/JSPSpecificationdescribedModel2asanarchitecturethatusesservletsandJSPpagestogetherinthesameapplication.ThetermModel2disappearedfromlaterreleases,butitremainsinpopularuseamongJavawebdevelopers.UnderModel2,servletshandlethedataaccessandnavigationalflow,whileJSPpageshandlethepresentation.Model2letsJavaengineersandHTMLdeveloperseachworkontheirownpartoftheapplication.AchangeinonepartofaModel2applicationdoesnotmandateachangetoanotherpartoftheapplication.HTMLdeveloperscanoftenchangethelookandfeelofanapplicationwithoutchanginghowtheback-officeservletswork.TheStrutsframeworkisbasedontheModel2architecture.Itprovidesacontrollerservlettohandlethenavigationalflowandspecialclassestohelpwiththedataaccess.AsubstantialcustomtaglibraryisbundledwiththeframeworktomakeStrutseasytousewithJSPpages.Summary:Inthisarticle,weintroducedStrutsasanapplicationframework.WeexaminedthetechnologybehindHTTP,theCommonGatewayInterface,Javaservlets,JSPs,andJavaBeans.WealsolookedattheModel2applicationarchitecturetoseehowitis usedtocombineservletsandJSPsinthesameapplication.NowthatyouhavehadatasteofwhatitisliketodevelopawebapplicationwithStruts,inchapter2wedigdeeperintothetheoryandpracticebehindtheStrutsarchitecture.中文翻译JSP 应用框架什么是应用框架: 框架(framework)是可重用的,半成品的应用程序,可以用来产生专门的定制程序。象人一样,软件应用的相似性比不同点要多。它们运行在相似的机器上,期望从相同的设备输入信息,输出到相同的显示设备,并且将数据存储到相同的硬盘设备。开发传统桌面应用的开发人员更习惯于那些可以涵盖应用开发同一性的工具包和开发环境。构架在这些公共基础上的应用框架可以为开发人员提供可以为他们的产品提供可重用服务的基础架构。 框架向开发人员提供一系列具有以下特征的骨架组件: 1已经知道它们在其它程序上工作得很好; 2它们随时可以在下一个项目中使用; 3它们可以被组织的其它团队使用; 对于框架是典型的构建还是购买命题。如果你自己构建它,在你完成时你就会理解它,但是在你被融入之前又将花费多长时间呢?如果要购买,你必须得克服学习曲线,同样,在你可以用它进行工作之前又得花多长时间?这里没有所谓正确答案,但许多观察者都会同意,象Struts这样的框架能提供比从头开始开发更显著的投资回报,特别是对于大型项目来说。 其它类型的框架: 框架的概念不仅用于应用程序也可用于组件。在其它的资料里面,我们也介绍了一些可以和Struts一起使用的框架。这些包括Lucene搜索引擎,Scaffold工具包,Struts验证器,以及Tiles标签库。与应用框架一样,这些工具也提供了一些半完成的版本,可以用在用户的定制组件之中。某些框架被限制于专门的开发环境中。Struts以及本文中涉及的组件却不是这样。你可以在很多环境中来开发Struts: Visual Age for Java, JBuilder, Eclipse, Emacs, 甚至使用Textpad。对于你的工具,如果你可以用来开发Java, 你就可以用它来开发Struts。 使用的技术: 使用Struts的应用开发使用了大量的其他基础技术。这些技术并不是专门针对Struts,而是所有Java web 应用都可以使用的。开发者使用Struts之类的框架是为了隐藏在诸如HTTP,CGI,以及JSP之类技术后面的繁琐的细节。作为一个Struts开发者,你并不需要知晓所有的相关知识,但是这些基本技术的工作原理可能有助于你针对棘手问题设计出创造性的方案。 超文本传输协议 (HTTP): 当两个国家之间进行调解时,外交官们总是遵循一定的正式协议。外交协议主要设计来避免误解,以及防止谈判破裂。同样,当计算机间需要对话,它们也遵循一个正式的协议。这个协议定义数据是如何传输,以及它们到达后如何进行解码。Web应用程序就是使用HTTP协议在运行浏览器的计算机和运行的服务器的程序间传输数据。 很多服务器应用程序使用HTTP之外的其他协议。他们在计算机之间维护一个持久性的连接。应用服务器可以清楚的知道是谁连接上来,而且何时中断连接。因为它们知道每一个连接的状态,以及每一个使用它的人。这称之为状态协议。相反,HTTP是一个无状态协议。HTTPServer可以接受来自于各种客户的各种请求,并提供各种响应,即使是这个响应仅仅是说No。没有大量的协商和连接持久性,无状态协议可以处理大量的请求。这也是Internet可以扩展到很多计算机的原因。HTTP成为通用标准的原因是其简单性。HTTP请求看起来就像一个平常的文本文档。这使应用程序很容易创建HTTP请求。你甚至可以通过标准的程序如Telnet来手动传递一个HTTP请求。当HTTP响应返回时,它也是一个开发者可以直接阅读的平面文本。HTTP请求的第一行包含方法,其后是请求的来源地址和HTTP版本。HTTP请求头跟在首行后面,可以没有也可以有多个。HTTP头向服务器提供额外的信息。可以包括浏览器的种类和版本,可接受的文档类型,浏览器的cookies等等。7种请求方法中,GET和POST是用得最多的。一旦服务器接收到请求,它就要产生一个HTTP响应。响应的第一行称为状态行,包含了HTTP协议的版本,数字型状态,以及状态的简短描述。状态行后,服务器将返回一个HTTP响应头,类似于HTTP请求头。如上所述,HTTP并不在请求间保持状态信息。服务器接受请求,发出响应,并且继续愉快地处理文本请求。因为简单和效率,无状态协议不适合于需要跟踪用户状态的动态应用。Cookies和URL重写是两个在请求间跟踪用户状态的方式。cookie是一种特殊的信息包,存储于用户的计算机中。URL重写是在页面地址中存储一个特殊的标记,Java服务器可以用它来跟踪用户。这两种方法都不是无缝的,是用哪一个都意味着在开发时都要进行额外的工作。对其本身来说,标准的HTTPweb服务器并不传输动态内容。它主要是使用请求来定位文件资源,并在响应中返回此资源。通常这里的文件使用HypertextMarku
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。