首页 基于javaEE的人事劳资管理系统的设计与实现论文

基于javaEE的人事劳资管理系统的设计与实现论文

举报
开通vip

基于javaEE的人事劳资管理系统的设计与实现论文基于javaEE的人事劳资管理系统的设计与实现论文 职场大变样社区(www.zcdby.com):下载毕业设计成品 全套资料,全部50元以下 太 原 理 工 大 学 毕业设计,论文,任务书 毕业设计(论文)题目: 基于javaEE的人事劳资管理系统的设计与实现 毕业设计(论文)要求及原始数据(资料): 1(综速国内外人事劳资系统管理技术研究现状。 2(深入了解人事劳资管理系统相关的jsp、javaWeb技术。 3(熟练掌握JavaWeb的三大框架知识及其JAVA编程思想的基础理论。 4. 设计并...

基于javaEE的人事劳资管理系统的设计与实现论文
基于javaEE的人事劳资管理系统的设计与实现论文 职场大变样社区(www.zcdby.com):下载毕业设计成品 全套资料,全部50元以下 太 原 理 工 大 学 毕业设计,论文,任务书 毕业设计(论文)题目: 基于javaEE的人事劳资管理系统的设计与实现 毕业设计(论文)要求及原始数据(资料): 1(综速国内外人事劳资系统管理技术研究现状。 2(深入了解人事劳资管理系统相关的jsp、javaWeb技术。 3(熟练掌握JavaWeb的三大框架知识及其JAVA编程思想的基础理论。 4. 设计并实现人事劳资管理系统每个模块相关的功能。 5. 深入分析人事劳资管理系统的关键切入点与编写语言。 6(训练检索文献资料和利用文献资料的能力; 7(训练撰写技术文档与学位论文的能力。 毕业设计(论文)主要内容: 1(用户登录模块的设计与实现 2(人员管理模块的设计与实现(包括录入、查询、修改、删除) 3(工资管理模块的设计与实现(包括工资的录入、查询、修改和统计功能) 4. 考勤管理模块的设计与实现(包括员工考勤数据的录入、查询、修改、和统计功能) 5. 绩效考核管理模块的设计与实现 6. 员工医保管理模块的设计与实现 7. 系统管理模块的实现(主要维护系统中的权限信息) 学生应交出的设计文件(论文): 1(内容完整、层次清晰、叙述流畅、排版 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 的毕业设计论文; 2(包括毕业设计论文、源程序等内容在内的毕业设计电子文档及其它相关材 料。 第3页 主要参考文献(资料): [1] 李兴华.名师讲坛:Java开发施展经典[M].清华大学出版社,2011. [2] 周华清.Java典型模块与项目实战大全[M].清华大学出版社,2012. [3] (美)达尔文.Java经典实例[M].中国电力出版社,2011. [4] 李钟尉.Java项目开发实例全程实录[M].清华大学出版社,2011. [5] 庞永庆.21天学通Java[M].电子工业出版社,2011. [6] 尹继平,张帆.Java范例大全[M].机械工业出版社,2011. [7] 盖国强.循序渐进Oracle:数据库管理、优化、与备份恢复[M].人民邮电出版社,2011. [8] 李华明.Android游戏编程之从零开始[M]. 北京:清华大学出版社,2011. [9] 隽志才.管理系统仿真建模及应用[M].清华大学出版社,2010. [10] 杨丰盛. Android技术内幕.系统卷[M]. 北京:机械工业出版社,2011. [11] 林信良. JSP & Servlet学习笔记[M]. 清华大学出版社, 2012. [12] 王海涛,贾宗璞.基于Struts和Hibernate的Web应用开发[M].计算机工程,2011. [13] 陈正举. 基于HIRBERNATE的数据库访问优化[M].计算机应用与软件,2012. [14] [美]Mark Wutka著,程显华 等译。《JSP和Servlet程序设计实用专辑》北京:机械工业出版社,2002.3 [15] 张峋, 杨三成. 关键技术:JSP与JDBC应用详解[M].中国铁道出版社, 2010. [16] Metsker S J. Java设计模式[M]. 第2版. 电子工业出版社, 2012. 专业班级学生 要求设计(论文)工作起止日期 2015年3月23日~2015年6月20日 指导教师签字 日期 2015年3月23日 教研室主任审查签字 日期 系主任批准签字 日期 基于javaEE的人事劳资管理系统的 设计与实现 摘要 在传统的人事管理工作中,要完成一定数量的员工信息、工资信息、考核信息、考勤信息、医保信息的管理与查询统计工作,使人事工作者花费大量时间,不利于工作效率的提高及人事研究工作的深入进行。人事管理系统将完成员工信息的管理、员工工资的管理、员工考核管理、员工考勤管理、员工医保管理等。 本系统采用了B/S体系结构,以JSP作为前台页面显示工具,以SSL Server2005作为后台数据库管理系统。人事管理系统提高了企业的办事效率和对信息的可控性,降低办公成本,提高执行力,使管理趋于完善。 本文通过分析人事管理的工作流程,提出了一种利用JAVA技术进行开发系统的 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 ,以期达到功能强大,费用低廉,通用性强的目的。文中着重论述了该系统的功能、数据流程与存储、功能实现的过程等。 关键词: javaEE;人事劳资管理系统;数据库 The Design and Implement of Personnel Labor Material Management System based javaEE Abstract In the traditional personnel management, to complete a certain number of employee information, payroll information, assessment information, attendance information, health care management and query statistical information to make personnel workers spend a lot of time, does not help to improve the work efficiency and personnel for further research work. Personnel Management Information System will complete the management staff, management staff salaries, employee appraisal management, employee attendance management, employee health care management. The system uses the B / S architecture to JSP as a front page display tools to Sql Server2005 as the back-end database management system. Personnel management system to improve the efficiency of enterprises and controllability of information, reduce office costs, improve execution, so that management tends to improve. This paper analyzes the personnel management workflow, presents a JAVA technology system development programs to achieve a powerful, low cost, versatility purposes. This paper focuses on the function of the system, data storage and process flow, and other functions to achieve. Key words: javaEE; personnel labor material management system; database 目录 1 绪论............................................................................................................................ 1 1.1 课题背景 ............................................................................................................ 1 1.2 本文研究内容 .................................................................................................... 1 2 可行性分析................................................................................................................ 7 2.1 社会可行性 ........................................................................................................ 7 2.2 技术可行性 ........................................................................................................ 7 2.3 经济可行性 ........................................................................................................ 7 2.4 法律可行性 ........................................................................................................ 7 2.5 操作可行性 ........................................................................................................ 8 3 需求分析.................................................................................................................... 9 3.1 系统的功能需求 ................................................................................................ 9 3.1.1 系统的基本功能......................................................................................... 9 3.1.2 用户界面需求............................................................................................. 9 3.1.3 可视化界面设计......................................................................................... 9 3.2 性能需求 ............................................................................................................ 9 3.2.1 系统的可适应性....................................................................................... 10 3.2.2 系统的安全性........................................................................................... 10 4 系统概要设计.......................................................................................................... 11 4.1 系统总体设计描述 .......................................................................................... 11 4.2 系统模块图 ...................................................................................................... 11 4.2.1 系统总体结构........................................................................................... 11 4.2.2 系统模块描述........................................................................................... 12 4.3 数据库设计 ...................................................................................................... 13 4.3.1 数据库介绍............................................................................................... 13 4.3.2 数据流图................................................................................................... 13 4.3.3 数据字典................................................................................................... 14 4.3.4 系统实体图............................................................................................... 18 4.3.5 数据库物理设计....................................................................................... 19 4.4 安全保密设计 .................................................................................................. 21 5 系统实现.................................................................................................................. 23 5.1 详细设计和系统实现步骤 .............................................................................. 23 5.2 Web应用程序开发环境 ................................................................................... 23 5.3 开发平台的选择 .............................................................................................. 23 5.4 管理员模块的设计和实现 .............................................................................. 23 5.4.1 系统登录模块........................................................................................... 24 5.4.2 系统主界面............................................................................................... 25 5.4.3 管理员管理模块....................................................................................... 26 5.4.4 员工管理模块........................................................................................... 28 5.4.5 员工工资管理模块................................................................................... 30 5.4.6 员工考核管理模块................................................................................... 33 5.4.7 员工考勤管理模块................................................................................... 35 5.4.8 员工医保管理模块................................................................................... 37 5.5 员工模块的设计和实现 .................................................................................. 39 5.5.1 员工子系统主页面模块........................................................................... 39 5.5.2 员工工资模块........................................................................................... 39 5.5.3 员工考核模块........................................................................................... 40 5.5.4 员工考勤模块........................................................................................... 40 5.5.5 员工医保模块........................................................................................... 41 5.5.6 修改密码模块........................................................................................... 42 6 测试与维护.............................................................................................................. 43 6.1 测试的任务及目标 .......................................................................................... 43 6.2 测试方案 .......................................................................................................... 43 6.2.1 模块测试................................................................................................... 43 6.2.2 集成测试................................................................................................... 43 6.2.3 验收测试................................................................................................... 44 6.2.4 平行运行................................................................................................... 44 6.3 实例测试 .......................................................................................................... 44 6.4 系统维护 .......................................................................................................... 45 结论.............................................................................................................................. 46 致谢.............................................................................................................................. 47 参考文献...................................................................................................................... 48 1 绪论 1.1 课题背景 随着企业规模的扩大,企业内部的人事管理将变得越来越复杂,对信息的处理和运用已经成为越来越重要的事,因此,人事管理系统出现了,它能够把公司所有员工的信息都统计起来进行分类处理操作,并由专门的人事部门对其进行管理,这样既方便了整个公司的运营发展,也方便了员工对自己所在公司的了解,所以,它已经成为企业的决策者和管理者必不可少的运用工具。建立一套人事管理信息系统能够加强管理的信息化手段,提高本单位的经济效益。 近年来,科技发展迅速,无论是国内还是国外的公司规模都越来越大,人员的引进也越来越多,这些员工信息对公司来说就是很大的一个数据集合,包含各种信息,于是通过专门的部门,人事部门或者人力资源部门来进行统计与汇总。原先,庞大的人员数量是无序,杂乱的,统计起来很费时间而且费劳动力,由此花费的代价是公司很头疼的,当然也是可以避免的,那就是运用计算机技术来完成这一工作,这样就可以节省很多劳动力和资金,因此越来越多的公司来追求这种技术,于是人事管理系统的诞生是必然的,该系统不仅能快速准确的统计人员信息,而且可以进行分类编号,记录相关的信息,非常方便,而且使用简单方便,所以使用过的公司越来越知道它的好处,也越来越依赖它,因此,一款好的系统将会更加受欢迎。 每个公司的信息与数据是各不相同的,大小规模与人数也是不相同的,所以,一种管理软件是不可能适用于所有的企业的,作为公司的管理软件,安全有效是关键,因此设计的系统要符合这个特点。综合这些,人事管理系统的发展前景非常广大,以后,每个公司对这种软件的需求是必不可少的。 企业人事管理系统在一个公司中表现出来的作用已经显而易见,市场上对此系统的需求也越来越大,该系统让企业内部人事的管理更加科学,更加规范,使之达到世界先进管理技术。许多世界发达国家都已经建立了自己独有的完善的先进企业管理体系,这个体系在公司经济发展中发挥着巨大的作用。 1.2 本文研究内容 (1)Java 说到Java语言,Java语言是一种跨平台、多线程、面向对象的一种编程语言。它具有分布式、可移植、安全性高、性能优异等优点。Java语言于1995年由Sun公司推出,在当时引起了十分大的轰动,几乎整个业界都把目光投向了这个新颖的语言。 从Java语言的语法上和风格上来看它和C语言和C++有着十分多的相似之处,其实这是情理之中的事情,因为Java语言继承了很多C++语言的内容,比如说C++面向对象的技术核心,但同时,它也摒弃了很多C++中很多复杂的问题,Java摒弃了C++中的指针、多重继承(这也是它和C++最大的区别)、运算符重载等内容,并添加了垃圾回收机制来自动的回收不再被引用的对象,释放其中的资源,使得开发人员不必再为释放资源担心。Java的发明者就说过Java是“C++--”,也就是说它吸收了C++的优点,摒弃了C++的不足。在往后的Java版本后加入了越来越多的功能,比如:泛型、枚举、自动装箱/拆箱、不定长参数等等,运行的效率也越来越高,使得Java语言的运用越来越广泛,这使得微软不得不推出了与之竞争的.Net平台以及高度模仿Java的C#语言。 Java它最大的优势就是跨平台的特性,那么它是如何实现这一功能的呢,Java和一般的编译执行语言和解释执行语言不同,它将源代码编译成二进制字节码,然后通过自己的在不同平台上的虚拟机来把字节码进行解释执行,从而实现“编译一次,多处运行”的特性。当然,开发人员应该都了解,这样的机制使得Java在运行效率上并不是那么高,因此Java在后来的新版本中不断地优化运行效率,Java的运行效率大幅提升。 (2) JavaEE 要想了解JavaEE,首先要知道什么是J2EE,因为JavaEE仅仅就是J2EE改个名字而已,那么为什么要改名呢,主要原因是Sun公司不太会起名字,J2EE这个词很难和Java联系起来,因此Sun也认识到了这个问题,改了名字,当然这有点太绝对了,其实它还有更深层次的意义。 那么,什么是J2EE呢,J2EE专业的中文名字叫Java2平台企业版,它是 latform Enterprise Edition 的英文缩写, 是Sun公司为企业级应用推出的标准平Java 2 P 台。Java平台共分为三个主要版本J2EE、J2SE和J2ME。 J2EE包含许多组件,是一个全新的技术架构,与以往的任何应用开发技术架构都不同,它的主要目的是为了简化和规范应用程序系统的开发与部署,提高开发效率,降低开发成本,提高安全性和可移植性,更有再利用的价值。 J2EE的核心就是一套关于软件系统开发的技术规范,J2EE之所以可以有很好的跨平台性和兼容性,能够让过去的企业中的产品之间无法兼容或者兼容性差的局面得以解决,依靠的就是它内部包含的各种组件、基础层次和服务框架都用的同一套标准和规格, 由此可见规则和标准的重要性。 J2EE组件与普通的Java类有很大的不同,它拥有自己的格式、遵循着J2EE的规范,装备在一个J2EE应用中,J2EE服务器对它进行管理。 JavaEE的核心是EJB3.0, 其提供了更兼便捷的企业级的应用框架。 (3) MVC MVC是模型(Model)、视图(View)、控制器(Controller)三者英文单词首字母缩写。首先要说明的是,MVC并不是一种设计模式,更多的是一种软件设计思想、一种软件设计典范,采用把展示界面、业务逻辑和数据模型分离的方式来把代码进行分离,使得代码结构更加清晰,耦合度更低。当项目需要改变页面布局或者定制个性化界面时,不需要再重新修改逻辑代码。MVC在很多的软件开发中都有应用,它是一种思想,不会被局限在某一平台或者某一语言。 MVC的分层对于逻辑复杂的应用程序有极大的帮助,因为每层之间并不依赖,因此在进行某一部分的开发的同时不需要关系其他的事情。这也使得应用程序的测试更加容易。 同时MVC也使得分组开发更加的简单、更加的快捷,视图、业务逻辑和控制器逻辑能够同时进行,大大降低了开发成本。 (4) JavaScript JavaScript是一种面向对象的给予事件驱动的脚本语言,可以说是Html的“魔术师”,首先这里要说明的是JavaScript和Java语言之间没有关系,设计人员起这个名字仅仅是像借着Java的名气来火一把。JavaScript最初的设计目的是为了验证Html提交的表单的正确性,在后来的版本中它又拥有了更多更高级的功能。 JavaScript是一种描述性语言,它可以使网页和用户之间的交互更加的灵活,动态性和实时性更加突出。JavaScript是一种弱类型语言,这使得它给开发人员提供了更多的方便,当然同时它的运行效率就会有所下降,不过影响并不是那么大,因为它是在客户端进行执行的,运行效率已经是很高了。 (5) SERVLET SERVLET技术是是一种实现动态网页的解决方法,它基于Java的编程语言中的WEB服务器端编程技术。同时它也是JSP技术的基础,SERVLET是在服务端运行的程序,用来根据用户从客户端发来的各种数据或请求进行各种处理并进行反馈。 SERVLET本质上是一个Java类,只不过它实现了一些特殊的接口,使得它具有了不同的功能。它由WEB服务器调用并运行,每一个SERVLET都有自己的生命周期, 它也受Java垃圾回收机制的控制,它的主要工作流程如下: 1)从客户端发来的请求获取数据。 2)创建对客户端的响应信息。 3)访问服务端的文件系统。 4)调用业务逻辑代码。 5)将结果反馈回客户端。 (6) JSP JSP全名为Java Server Pages,中文名叫Java服务器页面,它的本质其实就是一个Servlet, 之所以会有JSP是源于开发人员的一种需求:在Servlet中,为了把响应的页面写出来,就必须要在代码中通过输出流对象一行一行的写入Html、CSS、JavaScript语句。十分的麻烦,并且开发效率底下,更无法查找错误。因此有人想到了:干脆直接在Html中写Java代码岂不是很好。对,JSP就是在这样的需要中诞生的,JSP是一种动态的页面技术,它使得显示代码和逻辑代码分离。在JSP中通过”<%%>”这样的标记,就可以轻松实现在页面上书写Java代码。 基于JSP开发的Web应用程序具有跨平台的特点,它将网页的设计与业务逻辑分离,并且支持基于组件的设计,使得代码的复用成为可能,这样一来,开发人员的开发效率就会大大提升,Web应用程序也更加精简,运行效率也更高。 要记得,JSP的技术基础就是Servlet,JSP在运行时首先要进行编译,它会编译成一个Servlet,然后像使用Servlet一样运行。它的技术简单,使用方便,在很多的方面都有很多的应用。 (7) MyEclipse MyEclipse其实就是在eclipse 基础上加上很多很多的自己的插件,它之所以比eclipse强大原因就在于此,其实,如果仅仅是进行JavaEE开发的话用专门开发JavaEE的eclipse会更好,因为它没有太多的插件,运行起来会更快,但是实际当中人们为了一个开发环境能开发不同种类的项目,往往还是愿意去使用强大的MyEclipse,而且MyEclipse对于各种开源的产品也有很多的支持。 MyEclipse和Eclipse不同,它是商业化软件,说白了就是要钱,但是还是有30天的试用期,因此很多人喜欢先用30天然后再删除重新安装。本项目采用的就是试用期的MyEclipse。不过它本身仅仅是一个开发环境而已,即便它有很强大的功能,也得看什么样的开发人员来使用。 大多数开发人员仅仅是将MyEclipse当做一个Java的集成开发环境来使用,其实MyEclipse不仅仅是为了这些,它其实还包括了插件的开发环境,也就是说可以通过MyEclipse来开发自己想要的插件,不过主要还是面向Eclipse的核心开发人员,因为它可以创建对Eclipse无缝集成的工具,这使得开发插件也变得更加快捷和方便,对于一个集成开发环境而言能做到这些实属不易。 同时MyEclipse不仅仅是Java语言开发工具,虽然它底层是用Java语言来开发的,它还可以用来进行其他语言的开发,比如C/C++、php、Perl和COBOL语言等等,因为它包含了很多其他语言的插件,使得不同语言的开发人员能够使用同一个集成开发环境。 (8)Tomcat Tomcat就是一个最简单的web容器,是Apache的Jakarta项目的子项目,是一个免费开源的Servlet容器。Tomcat支持JSP、Servlet,而不支持J2EE的全部规范。但是Tomcat 7.0.X支持Servlet 3.0规范。Tomcat由Apache、Sun公司等机构和个人共同开发,由于Sun公司参与其中,那么它对Java的兼容和支持自然是毋庸置疑的,最新的Tomcat7.0支持最新的Servlet3.0和JSP 2.2。Tomcat不仅是一个Servlet容器,它也具有传统的Web服务器的功能,它能如处理HTML页面,简单的域名管理。因为Tomcat 技术先进、性能稳定、使用方便、性能好,当然最重要的是免费。因而深受Java 爱好者的喜爱和广大程序员的认可,成为目前比较流行的Web 应用服务器,并且它在不断的完善和改进,并且它是开源的,任何一个程序员都可以对它进行改进并加入新功能。 (9)XHTML XHTML的专业的全称叫做可扩展超文本标记语言。它是基于Html的一种可拓展的标记语言,它几乎与Html一模一样,但是又有很小但又很重要的区别那就是,它的语法更加的规范,并且它结合了XML的强大功能,使得它的应用范围更大,功能更强。 其实XHTML的目标就是要取代Html,但摆在它面前的问题就是,它似乎达不到它所想的要求,因为Html仍旧占据着很大的量,有很多遗留的项目或者系统中充斥着大量的不符合XHTML要求的Html代码,然而这些代码是不该或者说不能去修改的,因为一但修改了可能会给整个项目带来不可想象的问题。因此在这种情况下Html还是占据着。 XHTML是“3种HTML 4文件根据XML 1.0标准重组”而成的。 而W3C亦继续维持建议使用HTML4.01和积极地研究HTML5及XHTML的计划。 于2002年8月发表的XHTML 1.0 的建议中,W3C指出XHTML家族将会是Internet的新阶段。而转换使用XHTML可以令开发人员接触XML和其好处,并可以确保以XHTML开发的网页于未来的相容性。 (10)模块分类 企业内部设有人事部门,专门负责处理企业内部所有人事事务。 本系统由员工的基本信息、薪资、业务考核、平时考勤和系统的维护组成。可完成基本的员工综合信息的输入;员工工资的录入;员工考核模块;员工的考勤与系统维护模块。 1)员工信息管理模块,可完成员工基本信息的输入、信息维护等功能。 2)员工工资管理模块,可完成员工的薪资的登记,薪资的修改与查询。 3)员工工作考核模块,可完成员工考评信息的录入、修改、删除以及查询。 4)员工考勤模块,可完成员工的考勤信息的登记、改正、删除以及查询。 5)员工医保管理模块,可完成员工医保信息的录入、修改、删除以及查询。 6)系统维护模块,可完成部门信息维护以及用户管理等功能。 2 可行性分析 2.1社会可行性 网络安全技术的不断提高,个人或公司越来越多地在实践中通过信息网络管理人员,不断提高其经济价值和实践活动,这是目前公司希望看到的。企业人事管理工作覆盖面广,涉及到员工工资、考核、考勤、医保、信息管理等多个方面。企业人事管理中产生很多数据与信息。有这么多的数据,信息管理,开发和利用,必须基于标准化的实施,随着网络管理工具的帮助来满足这些要求。 2.2技术可行性 对于本系统,软件和硬件要求都不高,普通的计算机的硬件和软件都可以达到要求。本系统主要的应用是SQL,JSP,数据库使用SQL2005。 使用JSP开发工具和SQL,我已经完成了这门课程,在语言的使用上是非常好的。加上教师和同学的指导来帮助系统的开发,所以,在技术上本系统是可行的。 2.3经济可行性 系统开发出来的费用包含软件和硬件投资,在硬件方面,由于企业本身就配备了一套完整的设备如电脑,服务器,所以无需额外投资。软件主要是使用JSP,SQL 2005,相对较低的成本。本企业人事信息管理系统的全自动化可以提高企业人员的办公效率。通过对企业员工管理系统和统计数据,避免造成数据处理错误,使企业的管理更加科学,系统的分类更加明确,根据以上,本系统成本低廉,造成的价值确是很大,方便公司管理,有利于公司未来的发展。因此,在经济上也是可行的。 2.4法律可行性 本系统的编写是由本人独立完成的,开发的题目也没有触犯国家的法律,其中的内容也没有涉及侵权的问题,设计出来的系统也是有利于社会发展的,所以,在法律上也是可行的。 2.5操作可行性 该程序界面美观,操作容易,使用方便。只要你有计算机操作系统的基本知识,通 可以很简单的使用,而且配备了专业的系统指导手册,该手册经过一步步的测过培训都 试得出,因此,客户可以放心使用。 根据上面的描述,该系统各个方面都符合开发利用,所以,本系统是可以开发的。 3 需求分析 需求分析是指理解用户需求,就软件功能与客户达成一致,估计软件风险和评估项目代价,最终形成开发计划的一个复杂过程。如果你花了很多时间,做了一个软件,但未能满足用户的要求,这样做,返工很头疼,所以软件还没有开始做之前,花时间做需求分析是非常必要的。 3.1系统的功能需求 3.1.1系统的基本功能 管理员登陆系统可以对员工的信息,员工的工资,员工的考核,员工的考勤,员工医保进行修改,添加,查询以及删除,也可以修改密码。 员工登陆系统可以查看自己的工资,考核,考勤,医保等详细情况,也可以对密码进行修改。 3.1.2用户界面需求 系统应使用的用户界面提供给管理员,尽可能为用户提供方便。用户应该能够通过界面实现所需的功能,尽量为用户提供更多的信息。在功能齐全的基础上也需要界面雅观 3.1.3可视化界面设计 JSP是一种很好的Web应用程序开发工具,是目前应用最广泛的,易于使用的Web开发工具。 JSP提供用户界面元素,让一个新用户,控制起来不会觉得太生疏,用户只要用鼠标和键盘控制这些对象到适当的位置。 3.2性能需求 3.2.1系统的可适应性 人事管理系统资源的开销不是很大,计算机软硬件能够满足所有的条件,因此,该系统在运行中是可行的。 3.2.2系统的安全性 对员工的身份认证系统,用户需要通过身份验证后使用系统。 系统数据库将设置管理员表,将各种用户名称和密码记录在数据库表中,拥有帐号的用户才能正常登录本系统,非操作人员将不能打开本系统。员工也可以用帐号和密码进行登录,但仅限于查询各种信息和修改密码等。为保证系统正常运行,只有管理员才能进行数据库操作。 4 系统概要设计 4.1 系统总体设计描述 整个设计的流程可以分成两个部分: 功能设计,实现了人事管理系统的运行方法及解决问题方法。 结构设计,实现了整个系统的组成部分。 功能设计是需要根据用户的要求进行定制,这个“功能”不仅是指在问题定义函数的列表,还包括确定系统基本信息的任何独立的数据处理或加工步骤。结构设计就是把系统分成很多个模块进行单独处理,这样既方便寻找错误的位置,也更加快速的知道分功能的所在位置。 4.2 系统模块图 4.2.1 系统总体结构 本系统的目的是提高人事管理的方便有效性。为企业的人事查询方面给予支持,能够有效迅速的查看员工的一些信息。 根据需求分析,可以知道该模块的层次体系。 -1所示: 管理员子系统的功能结构图4 管理员子系统模块 管员员员员员修 理工工工工工改 员信工考考医密 帐息资核勤保码 号管管管管管 理 管理 理 理 理 理 图4-1管理员子系统功能模块图 员工子系统的功能结构图4-2所示: 员工子系统模块 员员员修 工工工改 员 工 考 核 图4-2员工子系统功能模块图 4.2.2系统模块描述 系统的描述和处理功能模块的描述。主要是用来语言描述,而不是数字来描述。 管理员子系统模块如下: (1)员工管理:对员工的信息进行添加、修改、删除管理。 (2)员工工资管理:对员工工资进行添加、修改、删除管理。 (3)员工考核管理:对员工考核进行添加、修改、删除管理。 (4)员工考勤管理:对员工考勤进行添加、修改、删除管理。 (5)员工医保管理:对员工医保进行添加、修改、删除管理。 (6)系统维护管理:对系统的管理员帐号信息进行管理。 (7)修改密码:登录系统的用户修改个人密码信息。 员工子系统模块如下: (1)员工工资:查看员工个人的工资信息。 (2)员工考核:查看员工个人的考核信息。 (3)员工考勤:查看员工个人的考核信息。 (4)员工医保:查看员工个人的医保信息。 (5)修改密码:登录系统的用户修改个人密码信息。 4.3 数据库设计 4.3.1 数据库介绍 数据库是指自描述的完整记录的集合,它包含了原始数据信息。此外,数据库还包含关于它本身结构的描述,数据库的特点是:提高数据库应用程序的性能之间的关系。本系统的数据库设计结构如下: ? 采集数据信息输入数据库表 第一阶段就是把采集到的数据信息输入到数据库中。要用客观的心态去搜集这些数据。 ? 抽象建模 抽象建模主要是以客户的资料为基础的建模,主要为了搭建数据库。 ? 搭建数据库模型 经过上一个阶段,可以得出抽象模型,然后根据抽象模型搭建数据库模型。数据的模型是分层次的,是运用于事物的模型,主要用于数据库。 ? 建立及维护数据库 建立及维护数据库作为数据库设计的最后一个阶段。一个完整的数据模型,我们要确定字段名称,类型,该区域的宽度,数据库的结构和用于创建一个数据库,输入数据和操作等。 4.3.2数据流图 数据流图有四种:处理,实体,数据流和数据存储。 各层的数据流图如下: 管理员 F1-1管理员信息 P1 管理员信息表 D1 F1-2员工信息 D2 员工信息表 F1-3工资信息 工资信息表 D3 F1-4考核信息 企业人事 管理系统管D4 考核信息表 F1-5考勤信息 理员子系统 D5 考勤信息表 F1-6医保信息 D6 医保信息表 F1-7修改密码 图 4-3企业人事管理系统管理员子系统一级数据流图 员工 F2-1员工信息 P2 D2 员工信息表 F2-2工资信息 工资信息表 D3 F2-3考核信息 企业人事管 考核信息表 理系统员工子D4 F2-4考勤信息 系统 考勤信息表 D5 F2-5医保信息 医保信息表 D6 F2-6修改密码 图 4-4企业人事管理系统员工子系统一级数据流图 4.3.3数据字典 数据字典是用来定义数据流图中的各个成分的具体含义的,包括的内容如下: ? 数据元素 在数据字典中,数据元素的含义:数据元素名称,别名,范围和意义,数 据元素的长度及地址。 ? 数据结构 在数据结构,包括数据结构的定义:组件名称和数据结构。 ? 数据流 数据流是数据结构在系统内传输的路径。 ? 数据存储 数据存储是数据流的来源或者去向之一。 ? 处理逻辑 处理的逻辑的过程是:输入,运行,输出。 ? 外部项 外部项目数应尽可能少。外部项在数据字典中的定义包括两个方面:外 部名称和相关联的数据流。 4.3.3.1 数据存储 数据存储在一般情况下,内容包括:,名称,描述,编号,组成,。 名字:管理员信息表 描述:记录管理员的相关信息。 编号:D1 组成:序号,用户名,密码,姓名 名字:员工信息表 描述:记录员工的相关信息。 编号:D2 组成:用户名,姓名,密码,性别,部门,出生日期,学历,入职时间,电 话,住址,编号 名字:工资信息表 描述:记录员工的工资信息。 编号:D3 组成:序号,员工编号,工资年月,基本工资,奖金,津贴 名字:考核信息表 描述:记录员工的考核信息。 编号:D4 组成:序号,员工编号,考核结果,考核项目,日期 名字:考勤信息表 描述:记录员工的考勤信息。 编号:D5 组成:序号,考勤月份,正常出勤,迟到次数,早退次数,病假天数, 事假天数,旷工天数,员工编号 名字:医保信息表 描述:记录员工的医保信息。 编号:D6 组成:序号,员工编号,医保年月,缴费金额,缴费日期 4.3.3.2 数据流 一条在系统内部传送的数据流的内容通常包括:,名称,描述,编号,输入\ 输出数据流,组成,。 编号:F1-1 名字:管理员信息 编号:F1-2 输入:管理员输入,D1 名字:员工信息 输出:D1 输入:管理员输入,D2 描述:对管理员信息进行管理 输出:D2 描述:对员工信息管理 编号:F1-3 名字:工资信息 编号:F1-4 输入:管理员输入,D3 名字:考核信息 输入:管理员输入,D4 输出:D3 输出:D4 描述:对工资信息管理 描述:对考核信息管理 编号:F1-5 编号:F1-6 名字:考勤信息 名字:医保信息 输入:管理员输入,D5 输入:管理员输入,D6 输出:D5 输出:D6 描述:对考勤信息管理 描述:对医保信息管理 编号:F1-7 名字:修改密码 编号:F2-1 输入:管理员输入 名字:员工信息 输出:D1 输入:D2 描述:修改个人密码 输出:员工 描述:查看员工信息 编号:F2-2 编号:F2-3 名字:工资信息 名字:考核信息 输入: D3 输入: D4 输出:员工 输出:员工 描述:查看工资信息 描述:查看考核信息 编号:F2-4 编号:F2-5 名字:考勤信息 名字:医保信息 输入: D5 输入: D6 输出:员工 输出:员工 描述:查看考勤信息 描述:查看医保信息 编号:F2-6 名字:修改密码 输入:员工 输出:D2 描述:修改个人密码 4.3.3.3 数据处理 数据处理的一般内容包含:{名称,描述,输入与输出数据流,}。 编号:P1 编号:P2 名字:管理员子系统 名字:员工子系统 描述:管理员管理,员工管理,描述:员工信息,工资信息,工资管理,考核管理,考勤管理,考核信息,考勤信息,医保信息,医保管理,修改密码 修改密码 输入/输出:D1,D2,D3,D4,D5,D6 输入/输出:D1,D2,D3,D4,D5,D6 4.3.4 系统实体图 概念模型也称信息模型,它是按用户的观点来对数据和信息建模,也是现实世界 到机器世界的一个中间层次。 在本系统中,主要有如下的一些实体:员工实体,工资实体,考核实体,考勤实体。 以下为本系统的员工实体图: 部门 性别 出生日 期 密码 学历 姓名 入职时 间 用户名 电话 员工 图4-5员工实体图 以下为本系统的工资实体图: 迟到扣钱 早退扣钱 旷工扣 钱 津贴 事假扣钱 奖金 五险一金 基本工资 工资年月 病假扣钱 员工编号 工资 图4-6工资实体图 以下为本系统的考核实体图: 考核结果 考核项目 员工编号 考核日期 考核 图4-7考核实体图 以下为本系统的考勤实体图: 员工编号 迟到次数 旷工天数 正常出勤 事假天数 考勤月份 病假天数 早退次数 考勤 图4-8考勤实体图 4.3.5数据库物理设计 本系统主要使用SQL 2005数据库。软件系统包括许多产品,不仅要强大的数据处 理能力和为商业型网站存储数据,而且还为私人或者小公司提供存储数据和管理数据的 服务。 SQL 2005数据库的特点有: (1)Internet 集成 该数据库可以用来开发Web应用程序。 (2)可伸缩性和可用性 同一个数据库系统能够在不同的平台上运行。 (3)企业级数据库功能 数据库系统充分的保护数据的完整性。 (4)易于安装、部署和使用 数据库中包含许多管理和开发工具。 (5)数据仓库 数据库包括对联机分析处理工具汇总数据的提取和分析。 本系统创建的SQL数据库名称为YGGL.MDF。包含如下几个表: 表4-1管理员数据表(users) 字段名称 字段类型 字段说明 是否为空 其他说明 用户名 否 主键 uname nvarchar(50) 序号 否 uid int 密码 是 upassword nvarchar(50) 姓名 是 urealname nvarchar(50) 表4-2 考核表 年度考核表下载pbc考核表下载设计院年度考核表下载职工出勤考核表下载供应商绩效考核表下载 (assess) 字段名称 字段类型 字段说明 是否为空 其他说明 序号 否 主键 aid int 员工编号 是 eid int 考核结果 是 aresult nvarchar(50) 考核项目 是 aitem nvarchar(50) 日期 是 adate nvarchar(50) 表4-3考勤数据表(checked) 字段名称 字段类型 字段说明 是否为空 其他说明 序号 否 主键 cid int 考勤月份 是 cmonth nvarchar(50) 正常出勤 是 cnatural float 迟到次数 是 clate int 早退次数 是 cearly int 病假天数 是 csick float 事假天数 是 caffair float 旷工天数 cabsent float 是 员工编号 是 eid int 表4-4工资数据表(laborage) 字段名称 字段类型 字段说明 是否为空 其他说明 序号 否 主键 lid int 员工编号 是 eid int 工资年月 是 lmonth nvarchar(50) 基本工资 是 lbasic numeric(18,2) 奖金 是 lbonus numeric(18,2) 津贴 是 lallowance numeric(18,2) 迟到扣款 否 默认值0 cdcsq numeric(18,2) 早退扣款 否 默认值0 ztcsq numeric(18,2) 病假扣款 否 默认值0 bjtsq numeric(18,2) 事假扣款 否 默认值0 sjtsq numeric(18,2) 旷工扣款 否 默认值0 kgtsq numeric(18,2) 五险一金 否 默认值0 wxyj numeric(18,2) 表4-5员工数据表(employee) 字段名称 字段类型 字段说明 是否为空 其他说明 序号 否 主键 eid int 用户名 是 ename nvarchar(50) 姓名 是 erealname nvarchar(50) 密码 是 epassword nvarchar(50) 性别 是 esex nvarchar(50) 部门 esection nvarchar(50) 是 出生日期 ebirthday nvarchar(50) 学历 eschoolage nvarchar(50) 入职时间 eenterday nvarchar(50) 电话 etel nvarchar(50) 住址 eadd nvarchar(100) 编号 ecode nvarchar(50) 表4-6员工医保数据表(medicare) 字段名称 字段类型 字段说明 是否为空 其他说明 否 主键 mid int 序号 是 eid int 员工编号 是 mmonth nvarchar(50) 医保年月 是 mmoney numeric(18, 2) 缴费金额 是 mdate nvarchar(50) 缴费日期 4.4 安全保密设计 人事管理系统软件是一个管理类的软件,所以,里面的资料很重要,不可以随便修 改,因此,安全很重要。所以本系统必须具有权限设置,只有系统管理员可以登录系统,普通员工只能登陆查看自己的个人信息,无法进行修改等操作,这也给公司的管理提供了方便与快捷。 一个数据库,数据库安全保密设计就是保护数据库中的数据信息不被损坏以及他人窃取。一个安全的数据库架构设计,客户可以简单地正当的操纵,当然,不正当的操纵,事故损害是不可能发生的。 5 系统实现 5.1 详细设计和系统实现步骤 整体设计阶段实现了软件的结构设计并且划分了模块,并规定了各模块功能与它们之间的关系 在详细设计阶段中,按照整体设计提供的文档,确定每个模块的算法,编写具体设计的明书,详细测试用例和计划。 5.2 Web应用程序开发环境 Java是一门各方面都很好的程序设计语言,其基本特征是安全的,简单的,面向对象的,分布式的,便携式的特别适用于在网络环境下的应用系统开发。 JSP是一种动态网页的技术准则。它在过去的静态网页中加入Java和JSP标签块,这样就形成了JSP页面。 Tomcat是一个不要钱的而且是面向客户开源的服务器。 Tomcat是一个非常好的工具,不但不要钱,功能强大,更加因为它的开放性,越来越受到人们的重视。 5.3 开发平台的选择 本系统的开发平台: (1)运行系统: WINDOWS XP。 (2)程序设计语言: JAVA。 (3)系统数据库: Microsoft SQL 2005数据库。 (4)服务器软件:TOMCAT 5.0.28+JDK1.5.0.5。 5.4 管理员模块的设计和实现 本系统基于JSP架构,使用JAVA语言进行开发,采用了基于浏览器形式的WEB方式,这样做可以使所有的功能组件只安装在服务器上,免去了日后升级修改的麻烦。 5.4.1 系统登录模块 系统登录模块主要的功能是验证用户使用本系统,具有权限访问设置功能,能够限制不同人员的进入。在登录模块,需要输入用户名和密码。利用该系统,用户分为2类:管理人员,员工,当用户输入用户名和密码,系统会自动判断用户类型,并输入相应的用户界面,等待用户操作。 登录页面: 图5-1 登录界面 身份验证的代码如下: if(methodName != null&& methodName.equals("login")){ loginDao = new LoginDao(); String name = request.getParameter("userName"); String password = request.getParameter("password"); Login login = new Login(); if(!name.equals("")&&name!=null&&!password.equals("")&&password != ""){ try { login = loginDao.findUserByNameAndPassword(name, password); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } if(login!=null&&login.getUid()!=0){ HttpSession session = request.getSession(); session.setAttribute("username", name); session.setAttribute("userid", login.getUid()); session.setAttribute("type", login.getUtype()); request.getRequestDispatcher("/pages/index.jsp").forward(request, response); }else{ request.setAttribute("message", "用户名或密码错误"); request.getRequestDispatcher("/pages/login.jsp").forward(request, response); } } } } 修改密码页面: 图5-2修改密码界面 5.4.2 系统主界面 用户认证成功后根据主界面操作。在主界面中,以下列出的所有操作功能的按钮,用户可以选择一个按钮进行管理操作。 图5-3 系统主界面 5.4.3管理员管理模块 对系统中的管理员信息进行删除、添加、修改管理。 (1)管理员的主页面,在页面中显示出所有的管理员的相关资料。并且能够按姓名很快的查找出来。 管理员主页面: 图5-4 管理员主页面 显示管理员列表的代码设计如下: Users stu = new Users(); List list = usersDao.findAllUsers(stu,firstRecord, lastRecord); request.getRequestDispatcher("/pages/users/userslist.jsp").forward( request, response); (2)添加管理员页面: 图5-5添加管理员页面 其中添加管理员的代码如下: String uname = request.getParameter("uname"); String urealname = request.getParameter("urealname"); String upassword = Md5.getMD5(request.getParameter("upassword")); Users users = new Users(); users.setUname(Tools.encode(uname)); users.setUrealname(Tools.encode(urealname)); users.setUpassword(Tools.encode(upassword)); int i = usersDao.insertUsers(users); if (i > 0) { request.setAttribute("url", "servlet/UsersServlet?method=findAllUsers"); request.setAttribute("message", "添加成功"); request.getRequestDispatcher("/pages/message.jsp").forward(request, response); } (3)修改管理员页面: 图5-6修改管理员页面 其中修改管理员的代码如下: String uid = request.getParameter("uid"); String uname = request.getParameter("uname"); String urealname = request.getParameter("urealname"); Users users = new Users(); users.setUid(Integer.parseInt(uid)); users.setUname(Tools.encode(uname)); users.setUrealname(Tools.encode(urealname)); int i = usersDao.updateUsers(users); if (i > 0) { request.setAttribute("url", "servlet/UsersServlet?method=findAllUsers"); request.setAttribute("message", "更新成功"); request.getRequestDispatcher("/pages/message.jsp").forward(request, response); 5.4.4员工管理模块 对员工的基本资料删除、修改、添加管理。 (1)员工管理主界面 图5-7员工管理主界面 其中显示列表的代码设计如下: Employee employee = new Employee(); employee.setEname(Tools.encode(request.getParameter("ename"))); employee.setEsection(Tools.encode(request.getParameter("esection"))); int allRecord = employeeDao.findAllCounts(employee); int pageIndex = Integer.parseInt(showpage); List list = employeeDao.findAllEmployee(employee,firstRecord, lastRecord); request.getRequestDispatcher("/pages/employee/employeelist.jsp").forward( request, response); 其中删除的代码设计如下: Sring id = request.getParameter("uid"); if (id != null &&!id.equals("") ) { int uid = Integer.parseInt(id); usersDao.deleteUsersById(uid); request.getRequestDispatcher( "UsersServlet?method=findAllUsers").forward( request, response); } (2)添加员工页面 图5-8添加员工页面 其中添加员工的代码如下: String ename = request.getParameter("ename"); String epassword = request.getParameter("epassword"); Employee employee = new Employee(); employee.setEname(Tools.encode(ename)); employee.setEpassword(Tools.encode(epassword)); int i = employeeDao.insertEmployee(employee); if (i > 0) { request.setAttribute("url", "servlet/EmployeeServlet?method=findAllEmployee"); (3)修改员工信息页面 图5-9修改员工信息界面 其中修改员工的代码如下: String eid = request.getParameter("eid"); Employee employee = new Employee(); employee.setEid(Integer.parseInt(eid)); employee.setErealname(Tools.encode(request.getParameter("erealname"))); employee.setEsex(Tools.encode(request.getParameter("esex"))); employee.setEcode(Tools.encode(request.getParameter("ecode"))); int i = employeeDao.updateEmployee(employee); (i > 0) { if request.setAttribute("url", "servlet/EmployeeServlet?method=findAllEmployee"); request.setAttribute("message", "更新成功"); request.getRequestDispatcher("/pages/message.jsp").forward(request, response); } 5.4.5员工工资管理模块 (1)员工工资主页面: 图5-10员工工资界面 显示工资列表代码设计如下: Laborage laborage = new Laborage(); laborage.setErealname(Tools.encode(request.getParameter("erealname"))); laborage.setLmonth(Tools.encode(request.getParameter("lmonth"))); allRecord = laborageDao.findAllCounts(laborage); int Listlist=laborageDao.findAllLaborage(laborage,firstRecord,lastRecord ); request.getRequestDispatcher("/pages/laborage/laboragelist.jsp").forward( request, response); (2)添加员工工资页面: 图5-11添加员工工资界面 其中添加的代码设计如下: String eid = request.getParameter("eid"); String basic = request.getParameter("lbasic"); String bonus = request.getParameter("lbonus"); CheckedDao c = new CheckedDao(); Checked checked = c.findCheckedByname(Integer.parseInt(eid), Tools.encode(request.getParameter("lmonth"))); Laborage laborage = new Laborage(); laborage.setEid(Integer.parseInt(eid)); if(checked!=null){ laborage.setCdcsq(checked.getClate()*10);//迟到 laborage.setZtcsq(checked.getCearly()*10);//早退 } laborage.setWxyj(431); int i = laborageDao.insertLaborage(laborage); if (i > 0) { request.setAttribute("url", "servlet/LaborageServlet?method=findAllLaborage"); } (3)修改员工工资页面: 图5-12修改员工工资界面 修改员工工资的代码设计如下: String lid = request.getParameter("lid"); String eid = request.getParameter("eid"); String basic = request.getParameter("lbasic"); String bonus = request.getParameter("lbonus"); CheckedDao c = new CheckedDao(); Checked checked = c.findCheckedByname(Integer.parseInt(eid), Tools.encode(request.getParameter("lmonth"))); Laborage laborage = new Laborage(); if(checked!=null){ laborage.setCdcsq(checked.getClate()*10); laborage.setZtcsq(checked.getCearly()*10); } laborage.setWxyj(431); int i = laborageDao.updateLaborage(laborage); if (i > 0) { request.setAttribute("url", "servlet/LaborageServlet?method=findAllLaborage"); } } 5.4.6员工考核管理模块 员工考核模块对员工的考核修改、添加和删除。 (1)员工考核信息主界面 图5-13员工考核主页面 其中显示该页面的代码设计如下: Assess assess = new Assess(); assess.setErealname(Tools.encode(request.getParameter("erealname"))); int allRecord = assessDao.findAllCounts(assess); List list = assessDao.findAllAssess(assess,firstRecord, lastRecord); pagingModel.setPageLink("servlet/AssessServlet?method=findAllAssess&uname=" +Tools.encode(request.getParameter("uname"))); request.setAttribute("list", list); request.getRequestDispatcher("/pages/assess/assesslist.jsp").forward( request, response); (2)添加员工考核信息界面 图5-14添加员工考核页面 添加员工考核信息的代码设计如下: Assess assess = new Assess(); assess.setEid(Integer.parseInt(eid)); assess.setAdate(adate); assess.setAitem(Tools.encode(aitem)); assess.setAresult(Tools.encode(aresult)); int i = assessDao.insertAssess(assess); if (i > 0) { request.setAttribute("url", "servlet/AssessServlet?method=findAllAssess"); request.setAttribute("message", "添加成功"); request.getRequestDispatcher("/pages/message.jsp").forward(request, response); (3)修改员工考核信息界面: 图5-15修改员工考核管理主页面 修改员工考核信息的代码如下: String adate = request.getParameter("adate"); String aitem = request.getParameter("aitem"); assess.setAitem(Tools.encode(aitem)); assess.setAresult(Tools.encode(aresult)); int i = assessDao.updateAssess(assess); if (i > 0) { request.setAttribute("url", "servlet/AssessServlet?method=findAllAssess"); } 5.4.7员工考勤管理模块 对员工的日常考勤进行删除、添加、修改。 (1)员工考勤主页面: 图5-16员工考勤管理主页面 其中员工考勤信息主页面代码设计如下: List list = checkedDao.findAllChecked(checked,firstRecord, lastRecord); pagingModel.setPageLink("servlet/CheckedServlet?method=findAllChecked&unam e="+Tools.encode(request.getParameter("uname"))); request.getRequestDispatcher("/pages/checked/checkedlist.jsp").forward( request, response); (2)添加员工考勤页面: 17添加员工考勤页面 图5- 添加员工考勤信息代码设计如下: String eid = request.getParameter("eid"); int clate =(clate1==null||clate1.equals("")?0:Integer.parseInt(clate1)); int cearly =(cearly1==null||cearly1.equals("")?0:Integer.parseInt(cearly1)); int i = checkedDao.insertChecked(checked); if (i > 0) { request.setAttribute("url", "servlet/CheckedServlet?method=findAllChecked"); request.setAttribute("message", "添加成功"); } (3)修改考勤记录: 图5-18修改员工考勤页面 5.4.8员工医保管理模块 对员工的医保缴费信息情况进行删除、添加、修改管理。 (1)员工医保管理主页面: 图5-19员工医保管理主页面 其中添加代码如下: Medicare medicare = new Medicare(); medicare.setErealname(Tools.encode(request.getParameter("erealname"))); int allRecord = medicareDao.findAllCounts(medicare); List list = medicareDao.findAllMedicare(medicare,firstRecord, lastRecord); pagingModel.setPageLink("servlet/MedicareServlet?method=findAllMedicare&una me="+Tools.encode(request.getParameter("uname"))); request.getRequestDispatcher("/pages/medicare/medicarelist.jsp").forward( request, response); } (2)添加员工医保信息页面: : 图5-20添加员工医保管理页面 代码如下: String eid = request.getParameter("eid"); float mmoney =(mmoney1==null||mmoney1.equals("")?0:Float.parseFloat(mmoney1)); Medicare medicare = new Medicare(); medicare.setEid(Integer.parseInt(eid)); medicare.setMdate(mdate); medicare.setMmoney(mmoney); medicare.setMmonth(Tools.encode(mmonth)); int i = medicareDao.insertMedicare(medicare); (3) 修改员工医保信息: 图5-21修改员工医保管理页面 代码如下: String mmonth = request.getParameter("mmonth"); Medicare medicare = new Medicare(); medicare.setEid(Integer.parseInt(eid)); medicare.setMdate(mdate); medicare.setMmoney(mmoney); int i = medicareDao.updateMedicare(medicare); if (i > 0) { request.setAttribute("url", "servlet/MedicareServlet?method=findAllMedicare"); request.setAttribute("message", "更新成功"); 5.5员工模块的设计和实现 5.5.1 员工子系统主页面模块 员工登录页面: 图5-22 员工子系统主页面 5.5.2 员工工资模块 员工查看个人的工资信息: 图5-23 员工工资页面 代码如下: Laborage laborage = new Laborage(); laborage.setEid((Integer)request.getSession().getAttribute("userid")); int allRecord = laborageDao.findAllCounts(laborage); List list = laborageDao.findAllLaborage(laborage,firstRecord, lastRecord); 5.5.3 员工考核模块 员工查看个人考核信息: 图5-24员工考核页面 代码如下: Assess assess = new Assess(); assess.setEid((Integer)request.getSession().getAttribute("userid")); int allRecord = assessDao.findAllCounts(assess); Listlist=assessDao.findAllAssess(assess,firstRecord, lastRecord); 5.5.4员工考勤模块 员工查询个人考勤信息: 图5-25 员工考勤页面 代码如下: Checked checked = new Checked(); checked.setEid((Integer)request.getSession().getAttribute("userid")); int allRecord = checkedDao.findAllCounts(checked); int pageIndex = Integer.parseInt(showpage); int pageSize = Tools.PageSize; int firstRecord = (pageIndex - 1)*pageSize+1; int lastRecord = pageIndex * pageSize; List list = checkedDao.findAllChecked(checked,firstRecord, lastRecord); 5.5.5员工医保模块 员工查看个人医保信息: 图5-26 员工医保页面 代码如下: Medicare medicare = new Medicare(); medicare.setEid((Integer)request.getSession().getAttribute("userid")); int allRecord = medicareDao.findAllCounts(medicare); List list = medicareDao.findAllMedicare(medicare,firstRecord, lastRecord); 5.5.6修改密码模块 修改密码界面能够用于重新设定当前登录系统的密码。为了防止密码被别人修改,在修改新密码时要求输入原先的密码。 图5-27 修改密码页面 其中修改密码的代码如下: String eid = request.getParameter("eid"); String epassword = request.getParameter("epassword"); Employee employee = new Employee(); employee.setEid(Integer.parseInt(eid)); employee.setEpassword(Tools.encode(epassword)); int i = employeeDao.updatePassword(employee); if (i > 0) { request.setAttribute("url", "pages/sy.jsp"); } 6 测试与维护 6.1 测试的任务及目标 (1)测试的任务 在软件正式生产之前,能够发现软件中存在的错误,可以更加完善系统。 (2)测试的目标 1).为了能够验证系统的正常运行。 2).测试的成功就是能够发现系统中存在的错误并及时改正。 6.2 测试方案 设计测试方案是测试阶段的关键技术问题。所谓测试方案包括预定要测试的功能。应该输入的测试数据和预期的结果,目标是设计一组可能发现错误的数据。 6.2.1 模块测试 模块测试目的是为了能够确保任何一个模块都能够独立的正常运作,测试中的错误通常包括代码或者系统功能的错误,此模块的特点有: (1)高效的寻找出错误。 (2)单独模块的结构。 (3)执行的方法。 (4)整体影响减小。 (5)充实模块之间的衔接。 6.2.2 集成测试 其中有系统本身的 检测 工程第三方检测合同工程防雷检测合同植筋拉拔检测方案传感器技术课后答案检测机构通用要求培训 和分系统的检测。该测试是系统检测中很重要的部分,其主要的功能是找到相关的接口问题。两种测试的方法:增量和非增量,相比较而言,增量法是更加好的,因为: (1)更早的找到相关的接口问题。 (2)更容易的找到错误的地方。 (3)能够更加深入系统的内部并找出错误。 6.2.3 验收测试 这一步的测试是为了验证该系统的运行是否正常。目的是为了以后的用户运行系统 可作为一个 工作计划 幼儿园家访工作计划关于小学学校工作计划班级工作计划中职财务部门工作计划下载关于学校后勤工作计划 ,常见的验收测试,结果有两种如下: (1)和用户要求的功能和特点,有一定的差距,需要返工。 (2)和用户要求的功能和特点一致,系统可以使用。 6.2.4 平行运行 平行运行也就是两个新旧版本的系统同时一起运行,然后比较两者的差异。该测试 是为了发现如下: a)能够确保系统在各个环境中运行而不出现错误。 b)用户可以利用这段时间了解本系统。 c)能够测验系统使用手册是否正确。 6.3实例测试 本测试以管理员登录作为实例: 实例名称:登陆的界面测试。 (1)用不存在账号进行登录。 (2)账号或者密码为空时登录。 (3)正确的密码登录已经存在的账号。 (4)错误的密码登录已经存在的账号。 录入数据: (1)用户名 :ly 密码 :1 登录。 (2)不填写用户名和密码。 (3)用户名 :cfb 密码 :fly 登录。 (4)用户名 :cfb 密码 :1 登录。 预期结果: (1)第一组测试结果:无法登陆。 (2)第二组测试结果:无法登陆。 (3)第三组测试结果:登陆成功,进入管理界面。 (4)第四组测试结果:无法登陆。 测试结果:根据四组测试数据显示的结果,与预期的一样,测试成功 6.4 系统维护 该系统以满足检修要求,采取以下方法: (1)开发程序的原始代码。 (2)系统开发的流程的各个文档是完整的。 (3)软件模块的更深层次的设计,内部文件,源代码文件中的注释详细,可以 提高系统的可检修性。 结 论 时光飞逝,转眼几个月的毕业设计在忙忙碌碌中结束了,在这次毕业设计过程中我重新认识了一遍大学所学的知识。本系统的主要功能是实现数据的录入,查询,修改,删除,添加。完成了人事管理系统开发和运行,也达到了自己心中的目标。其中,经过不断反复测试数据多多少少出现了一些错误,经过认真思考,反复推敲也一步步把问题解决了,虽然每一步走的都很艰难,但是学到了很多很多,当然,因为是第一次开发系统,所以肯定有不完善之处,在以后的系统开发中我会慢慢完善这些方面的。 所有系统相关的程序已反复调试,得出的结果也和我预期的一样,这也证明了系统是可以开发运行的。 经过这几个月的努力奋斗,终于完成了开发该系统的各项任务。在本次毕业设计的过程中,遇到了很多困难,也让我懂得了,遇事要冷静,一定不要急,要回顾一下问题存在的原因,然后根据问题源头寻找解决办法,最终经过认真思考并且不懂的请教指导老师或者同学,得到了正确的解决方案。 致 谢 经过几个月努力认真的毕业设计,本系统的设计已顺利完成。经过这次毕业设计,我更加了解并掌握了大学四年的所学知识,并用到实际系统开发中去,使自己的所学得到了更好的发挥。 毕业设计,是综合了我的四年大学中所学的所有的知识。经过此次毕业设计,对系统开发的认识更加深刻,也让我懂得了不少,让我的知识更加丰富,也提高了我的独立自主、分析并解决问题的能力。 这次的毕业设计能够正确有效的完成,主要很感谢我的论文指导老师,老师严格的教学态度,丰富的专业理论知识给了我很大的帮助,让我受益匪浅。好多不懂的问题都是通过指导老师的耐心讲解与指导才得到了根本的解决,在论文上他也给了我很大的帮助和建议,能够让我顺利完成毕业设计。 同时感谢那些曾经帮过我的同学,是他们在我毕业设计道路上给予了很大的支持。也是他们在我有困难的时候提供帮助。 总之,这次毕业设计的完成让我学到了很多知识,而且懂得了许多遇到问题后解决的办法。 参考文献 [1] 李兴华.名师讲坛:Java开发施展经典[M].清华大学出版社,2011. [2] 周华清.Java典型模块与项目实战大全[M].清华大学出版社,2012. [3] (美)达尔文.Java经典实例[M].中国电力出版社,2011. [4] 李钟尉.Java项目开发实例全程实录[M].清华大学出版社,2011. [5] 庞永庆.21天学通Java[M].电子工业出版社,2011. [6] 尹继平,张帆.Java范例大全[M].机械工业出版社,2011. [7] 盖国强.循序渐进Oracle:数据库管理、优化、与备份恢复[M].人民邮电出 版社,2011. [8] 李华明.Android游戏编程之从零开始[M]. 北京:清华大学出版社,2011. [9] 隽志才.管理系统仿真建模及应用[M].清华大学出版社,2010. [10] 杨丰盛.Android技术内幕.系统卷[M]. 北京:机械工业出版社,2011.[11] 林信良. JSP & Servlet学习笔记[M]. 清华大学出版社, 2012. [12] 王海涛,贾宗璞.基于Struts和Hibernate的Web应用开发[M].计算机工 程,2011. [13] 陈正举. 基于HIRBERNATE的数据库访问优化[M].计算机应用与软件,2012. [14] [美]Mark Wutka著,程显华 等译。《JSP和Servlet程序设计实用专辑》北京:机械工业出版社,2002.3 [15] 张峋, 杨三成. 关键技术:JSP与JDBC应用详解[M].中国铁道出版社, 2010. [16] Metsker S J. Java设计模式[M]. 第2版. 电子工业出版社, 2012. 附录:英文技术资料翻译 英文原文: JSP application frameworks What are application frameworks: A framework is a reusable, semi-complete application that can be specialized to produce custom applications [Johnson]. Like people, software applications are more alike than they are different. They run on the same computers, expect input from the same devices, output to the same displays, and save data to the same hard disks. Developers working on conventional desktop applications are accustomed to toolkits and development environments that leverage the sameness between applications. Application frameworks build on this common ground to provide developers with a reusable structure that can serve as the foundation for their own products. A framework provides developers with a set of backbone components that have the following characteristics: 1.They are known to work well in other applications. 2.They are ready to use with the next project. 3.They can also be used by other teams in the organization. Frameworks are the classic build-versus-buy proposition. If you build it, you will understand it when you are done—but how long will it be before you can roll your own? If you buy it, you will have to climb the learning curve—and how long is that going to take? There is no right answer here, but most observers would agree that frameworks such as Struts provide a significant return on investment compared to starting from scratch, especially for larger projects. Other types of frameworks: The idea of a framework applies not only to applications but to application componentsas well. Throughout this article, we introduce other types of frameworks that you can use with Struts. These include the Lucene search engine, the Scaffold toolkit, the Struts validator, and the Tiles tag library. Like application frameworks, these tools provide semi-complete versions of a subsystem that can be specialized to provide a custom component. Some frameworks have been linked to a proprietary development environment. This is not the case with Struts or any of the other frameworks shown in this book. You can use any development environment with Struts: Visual Age for Java, JBuilder, Eclipse, Emacs, and Textpad are all popular choices among Struts developers. If you can use it with Java, you can use it with Struts. Enabling technologies: Applications developed with Struts are based on a number of enabling technologies.These components are not specific to Struts and underlie every Java web application. A reason that developers use frameworks like Struts is to hide the nasty details behind acronyms like HTTP, CGI, and JSP. As a Struts developer, you don’t need to be an alphabet soup guru, but a working knowledge of these base technologies can help you devise creative solutions to tricky problems. Hypertext Transfer Protocol (HTTP): When mediating talks between nations, diplomats often follow a formal protocol. Diplomatic protocols are designed to avoid misunderstandings and to keep negotiations from breaking down. In a similar vein, when computers need to talk, they also follow a formal protocol. The protocol defines how data is transmitted and how to decode it once it arrives. Web applications use the Hypertext Transfer Protocol (HTTP) to move data between the browser running on your computer and the application running on the server. Many server applications communicate using protocols other than HTTP. Some of these maintain an ongoing connection between the computers. The application server knows exactly who is connected at all times and can tell when a connection is dropped. Because they know the state of each connection and the identity of each person using it, these are known as stateful protocols. By contrast, HTTP is known as a stateless protocol. An HTTP server will accept any request from any client and will always provide some type of response, even if the response is just to say no. Without the overhead of negotiating and retaining a connection, stateless protocols can handle a large volume of requests. This is one reason why the Internet has been able to scale to millions of computers. Another reason HTTP has become the universal standard is its simplicity. An HTTP request looks like an ordinary text document. This has made it easy for applications to make HTTP requests. You can even send an HTTP request by hand using a standard utility such as Telnet. When the HTTP response comes back, it is also in plain text that developers can read. The first line in the HTTP request contains the method, followed by the location of the requested resource and the version of HTTP. Zero or more HTTP request headers follow the initial line. The HTTP headers provide additional information to the server. This can include the browser type and version, acceptable document types, and the browser’s cookies, just to name a few. Of the seven request methods, GET and POST are by far the most popular. Once the server has received and serviced the request, it will issue an HTTP response. The first line in the response is called the status line and carries the HTTP protocol version, a numeric status, and a brief description of the status. Following the status line, the server will return a set of HTTP response headers that work in a way similar to the request headers. As we mentioned, HTTP does not preserve state information between requests.The server logs the request, sends the response, and goes blissfully on to the next request. While simple and efficient, a stateless protocol is problematic for dynamic applications that need to keep track of their users. (Ignorance is not always bliss.) Cookies and URL rewriting are two common ways to keep track of users between requests. A cookie is a special packet of information on the user’s computer. URL rewriting stores a special reference in the page address that a Java server can use to track users. Neither approach is seamless, and using either means extra work when developing a web application. On its own, a standard HTTP web server does not traffic in dynamic content. It mainly uses the request to locate a file and then returns that file in the response. The file is typically formatted using Hypertext Markup Language (HTML) [W3C, HTML] that the web browser can format and display. The HTML page often includes hypertext links to other web pages and may display any number of other goodies, such as images and videos. The user clicks a link to make another request, and the process begins a new. Standard web servers handle static content and images quite well but need a helping hand to provide users with a customized, dynamic response. DEFINITION:Static content on the Web comes directly from text or data files, like HTML or JPEG files. These files might be changed from time to time, but they are not altered automatically when requested by a web browser. Dynamic content, on the other hand, is generated on the fly, typically in response to an individualized request from a browser. Common Gateway Interface (CGI): The first widely used standard for producing dynamic content was the Common Gateway Interface (CGI). CGI uses standard operating system features, such as environment variables and standard input and output, to create a bridge, or gateway, between the web server and other applications on the host machine. The other applications can look at the request sent to them by the web server and create a customized response. When a web server receives a request that’s intended for a CGI program, it runs that program and provides the program with information from the incoming request. The CGI program runs and sends its output back to the server. The web server then relays the response to the browser. CGI defines a set of conventions regarding what information it will pass as environment variables and how it expects standard input and output to be used. Like HTTP, CGI is flexible and easy to implement, and a great number of CGI-aware programs have been written. The main drawback to CGI is that it must run a new copy of the CGI-aware program for each request. This is a relatively expensive process that can bog down high-volume sites where thousands of requests are serviced per minute. Another drawback is that CGI programs tend to be platform dependent. A CGI program written for one operating system may not run on another. Java servlets: Sun’s Java Servlet platform directly addresses the two main drawbacks of CGI programs.First, servlets offer better performance and utilization of resources than conventional CGI programs. Second, the write-once, run-anywhere nature of Java means that servlets are portable between operating systems that have a Java Virtual Machine (JVM). A servlet looks and feels like a miniature web server. It receives a request and renders a response. But, unlike conventional web servers, the servlet application programming interface (API) is specifically designed to help Java developers create dynamic applications. The servlet itself is simply a Java class that has been compiled into byte code, like any other Java object. The servlet has access to a rich API of HTTP-specific services, but it is still just another Java object running in an application and can leverage all your other Java assets. To give conventional web servers access to servlets, the servlets are plugged into containers. The servlet container is attached to the web server. Each servlet can declare what URL patterns it would like to handle. When a request matching a registered pattern arrives, the web server passes the request to the container, and the container invokes the servlet. But unlike CGI programs, a new servlet is not created for each request. Once the container instantiates the servlet, it will just create a new thread for each request. Java threads are much less expensive than the server processes used by CGI programs. Once the servlet has been created, using it for additional requests incurs very little overhead. Servlet developers can use the init() method to hold references to expensive resources, such as database connections or EJB Home Interfaces, so that they can be shared between requests. Acquiring resources like these can take several seconds—which is longer than many surfers are willing to wait. The other edge of the sword is that, since servlets are multithreaded, servlet developers must take special care to be sure their servlets are thread-safe. To learn more about servlet programming, we recommend Java Servlets by Example, by Alan R. Williamson [Williamson]. The definitive source for Servlet information is the Java Servlet Specification [Sun, JST]. JavaServer Pages: While Java servlets are a big step up from CGI programs, they are not a panacea. To generate the response, developers are still stuck with using println statements to render the HTML. Code that looks like: out.println("

One line of HTML.

"); out.println("

Another line of HTML.

"); is all too common in servlets that generate the HTTP response. There are libraries that can help you generate HTML, but as applications grow more complex, Java developers end up being cast into the role of HTML page designers. Meanwhile, given the choice, most project managers prefer to divide development teams into specialized groups. They like HTML designers to be working on the presentation while Java engineers sweat the business logic. Using servlets alone encourages mixing markup with business logic, making it difficult for team members to specialize. To solve this problem, Sun turned to the idea of using server pages to combine scripting and templating technologies into a single component. To build Java Server Pages, developers start by creating HTML pages in the same old way, using the same old HTML syntax. To bring dynamic content into the page, the developer can also place JSP scripting elements on the page. Scripting elements are tags that encapsulate logic that is recognized by the JSP. You can easily pick out scripting elements on JSP pages by looking for code that begins with <% and ends with %>. To be seen as a JSP page, the file just needs to be saved with an extension of .jsp. When a client requests the JSP page, the container translates the page into a source code file for a Java servlet and compiles the source into a Java class file—just as you would do if you were writing a servlet from scratch. At runtime, the container can also check the last modified date of the JSP file against the class file. If the JSP file has changed since it was last compiled, the container will retranslate and rebuild the page all over again. Project managers can now assign the presentation layer to HTML developers, who then pass on their work to Java developers to complete the business-logic portion. The important thing to remember is that a JSP page is really just a servlet. Anything you can do with a servlet, you can do with a JSP. JavaBeans: JavaBeans are Java classes which conform to a set of design patterns that make them easier to use with development tools and other components. DEFINITION A JavaBean is a reusable software component written in Java. To qualify as a JavaBean, the class must be concrete and public, and have a noargument constructor. JavaBeans expose internal fields as properties by providing public methods that follow a consistent design pattern. Knowing that the property names follow this pattern, other Java classes are able to use introspection to discover and manipulate JavaBean properties. The JavaBean design patterns provide access to the bean’s internal state through two flavors of methods: accessors are used to read a JavaBean’s state; mutators are used to change a JavaBean’s state. Mutators are always prefixed with lowercase token set followed by the property name. The first character in the property name must be uppercase. The return value is always void—mutators only change property values; they do not retrieve them. The mutator for a simple property takes only one parameter in its signature, which can be of any type. Mutators are often nicknamed setters after their prefix. The mutator method signature for a weight property of the type Double would be: public void setWeight(Double weight) A similar design pattern is used to create the accessor method signature. Accessor methods are always prefixed with the lowercase token get, followed by the property name. The first character in the property name must be uppercase. The return value will match the method parameter in the corresponding mutator. Accessors for simple properties cannot accept parameters in their method signature. Not surprisingly, accessors are often called getters. The accessor method signature for our weight property is: public Double getWeight() If the accessor returns a logical value, there is a variant pattern. Instead of using the lowercase token get, a logical property can use the prefix is, followed by the property name. The first character in the property name must be uppercase. The return value will always be a logical value—either boolean or Boolean. Logical accessors cannot accept parameters in their method signature. The boolean accessor method signature for an on property would be public boolean isOn() The canonical method signatures play an important role when working with Java- Beans. Other components are able to use the Java Reflection API to discover a JavaBean’s properties by looking for methods prefixed by set, is, or get. If a component finds such a signature on a JavaBean, it knows that the method can be used to access or change the bean’s properties. Sun introduced JavaBeans to work with GUI components, but they are now used with every aspect of Java development, including web applications. When Sun engineers developed the JSP tag extension classes, they designed them to work with JavaBeans. The dynamic data for a page can be passed as a JavaBean, and the JSP tag can then use the bean’s properties to customize the output. For more on JavaBeans, we highly recommend The Awesome Power of JavaBeans, by Lawrence H. Rodrigues [Rodrigues]. The definitive source for JavaBean information is the JavaBean Specification [Sun, JBS]. Model 2: The 0.92 release of the Servlet/JSP Specification described Model 2 as an architecture that uses servlets and JSP pages together in the same application. The term Model 2 disappeared from later releases, but it remains in popular use among Java web developers. Under Model 2, servlets handle the data access and navigational flow, while JSP pages handle the presentation. Model 2 lets Java engineers and HTML developers each work on their own part of the application. A change in one part of a Model 2 application does not mandate a change to another part of the application. HTML developers can often change the look and feel of an application without changing how the back-office servlets work. The Struts framework is based on the Model 2 architecture. It provides a controller servlet to handle the navigational flow and special classes to help with the data access. A substantial custom tag library is bundled with the framework to make Struts easy to use with JSP pages. Summary: In this article, we introduced Struts as an application framework. We examined the technology behind HTTP, the Common Gateway Interface, Java servlets, JSPs, and JavaBeans. We also looked at the Model 2 application architecture to see how it is used to combine servlets and JSPs in the same application. Now that you have had a taste of what it is like to develop a web application with Struts, in chapter 2 we dig deeper into the theory and practice behind the Struts architecture. 中文译文: JSP应用程序框架 什么是应用框架: 框架是可重用的,半完整的应用程序,可以专门生成自定义的应用。像人一样,软件应用的相似点多于他们的不同点。它们运行在同一台计算机上,期望从相同的设备输入信息,输出到相同的显示设备,并将数据保存到相同的硬盘设备。开发传统桌面应用的开发人员习惯于那些可以涵盖应用开发同一性的工具包和开发环境。构架在这些公共基础上的应用框架可以为开发人员提供可以为他们的产品提供可重用服务的基础架构。 一个框架,为开发人员提供了一套具有以下特征的骨架组件: 1(已经知道它们在其它程序上工作得很好; 2(它们随时可以在下一个项目中使用; 3(它们可以被组织的其它团队使用; 框架是经典的建立与购买的命题。如果你建造了它,在你完成的时候你就会明白,但是在你被融入之前又将花费多长时间呢,如果你买了它,你将要攀登的学习曲线,要花多少时间,没有正确答案,但许多观察者都会同意,像Struts这类框架提供比从零开始的一个显着的投资回报,特别是对于大的项目。 其他类型的框架: 框架的概念不仅适用于应用程序也可用于组件。在这篇文章中,我们介绍了其它类型的框架,您可以和Struts一起使用。这些包括Lucene搜索引擎,Scaffold工具包,Struts验证器,以及Tiles标签库。与应用框架一样,这些工具提供了半完整版本的子系统可以专门提供一个自定义组件。 某些框架被链接到一个专有的开发环境。这是不是与Struts或任何在本书中其他的框架的情况下。你可以使用任何开发环境:Visual age for Java Struts,JBuilder,Eclipse,Emacs,和TextPad都是受欢迎的选择之间的Struts开发人员。如果你可以在Java中使用它,你可以用Struts使用它。 使用技术: 使用Struts的应用开发基于一个有利的技术。这些技术对于Struts是不特 定的而是所有Java web应用。开发者使用Struts之类的框架是为了隐藏缩略词如HTTP,CGI的细节,和JSP。作为一个Struts开发人员,你并不需要知晓所有的相关知识,但是这些基本技术的工作原理的知识可以帮助你设计棘手问题的创造性解决方案。 超文本传输协议(HTTP): 当国家之间进行调解,外交官们总是遵循一个正式的协议。外交协议被设计来避免误解,以及防止谈判破裂。同理,当计算机需要说话,它们也遵循一个正式的协议。该协议定义了数据是如何传播、如何破译它一到。Web应用程序使用超文本传输协议(HTTP)数据移动浏览器您的计算机上运行,在服务器上运行的应用程序之间的。 许多服务器应用程序使用HTTP之外的其他协议。其中一些在计算机之间维护一个持久连接。应用程序服务器知道是谁连接随时可以告诉当删除连接。因为他们知道每个连接的状态和使用它的每个人的身份,这些被称为状态协议。 相比之下,HTTP是一个无状态协议。一个HTTP服务器将接受来自任何客户的任何要求,提供各种反应,即使响应仅仅是说没有谈判的开销和固定连接,无状态协议可以处理大量的请求。这是原因之一,互联网已经能够扩展到数以百万计的电脑。 另一个原因是HTTP成为通用的标准是它的简单性。HTTP请求看起来像一个普通的文本文件。这使得很容易创建HTTP请求的应用程序。你甚至可以将使用标准的程序如Telnet用手一个HTTP请求。当HTTP响应返回时,它也是在普通文本,开发商可以阅读。 在HTTP请求的第一行包含的方法,其次是请求的资源和HTTP版本的位置。零个或多个HTTP请求头跟初始行。HTTP头向服务器提供额外的信息。这可以包括浏览器类型和版本,可接受的文档类型,和浏览器的cookies,只是仅举几例。七的请求方法,GET和POST是迄今为止最受欢迎的。 一旦服务器接收到请求,它会发出一个HTTP响应。在响应的第一行称为状态行,包含了HTTP协议的版本,数字型状态,以及状态的简短描述。状态行后,服务器将返回一个类似于HTTP请求头一个HTTP响应头。 正如我们提到的,HTTP并不在请求间保持状态信息。服务器接受请求,发出响应,走到下一个请求的幸福。虽然简单,高效,无状态协议不适合于需要跟踪用户状态的动态应用。(无知并不总是幸福。) Cookie和URL重写是跟踪用户请求之间的两种常用的方法。Cookie是在用户的计算机信息的一种特殊的包。URL重写存储在一个Java服务器可以使用跟踪用户的网页地址的一个特殊的参考。这两种方法都不是无缝的,并可以使用意味着额外的工作开发Web应用程序时。就其本身而言,一个标准的HTTP Web服务器并不传输动态内容。它主要是使用请求来定位文件,然后返回响应文件中。文件通常是使用超文本标记语言(HTML)格式的[W3C,HTML ],Web浏览器可以格式和显示。HTML页面通常包含超文本链接到其他网页,可以显示其他一些,如图像和视频。用户点击连接将产生另一个请求,然后开始一个新的。 标准的Web服务器处理静态内容处理得很好但是需要帮助的为用户提供一个定制的,动态响应。 定义:在静态内容直接来自于文本或数据文件,比如HTML或者JPEG文件。这些文件可以随时改变,但他们不能自动改变通过浏览器请求时。动态内容,另一方面,是动态生成的,通常是响应个性化的请求从浏览器。 公共网关接口(CGI): 第一个被广泛用来产生动态内容的标准是通用网关接口(CGI)。CGI使用标准的操作系统功能,如环境变量和标准的输入和输出,建立一个桥梁,或网关,网络服务器和其他应用程序之间的主机上的。其他应用程序可以请求发送给他们的Web服务器,并创建一个定制的响应。 当Web服务器接收到一个请求对CGI程序的,它运行程序和提供程序从传入的请求信息。CGI程序运行,并将输出返回给服务器。Web服务器然后中继到浏览器的响应。CGI定义了一套关于将作为环境变量传递什么信息公约和它希望怎样使用标准输入和输出。如HTTP,CGI是灵活和易于实现的,并且意识到大量的CGI程序编写了。 CGI的主要缺点是它必须为每个请求运行CGI程序复制到一个新的。这是一个相对昂贵的过程,可以大批量的地方停下来的数千个请求,每分钟。另一个缺点是,CGI程序往往是依赖于平台。一个CGI程序的一个写的操作系统可能无法运行在另一个。 Java Servlets: Sun公司的Java Servlet平台直接解决了CGI程序的两个主要的缺点。首先,servlet比常规CGI程序提供更好的性能和资源利用。第二,写一次,随处运行Java的本质意味着servlets是操作系统,Java虚拟机(JVM)之间的便携 式。 Servlet看起来好像是一个微型的Web服务器。它接受请求并产生响应。但是,不同于传统的Web服务器,servlet应用程序编程接口(API)是专门设计用来帮助Java开发者创建动态应用。 Servlet本身是一个简单的Java类被编译成字节码,就像其他Java对象一样。Servlet访问HTTP特定服务的丰富的API,但它仍然只是一个Java对象在运行的应用程序,可以利用所有的Java资产。 给传统的Web服务器访问servlet的servlet容器,插入。servlet容器连接到Web服务器。每个servlet都可以声明什么URL模式,它要处理。当一个请求匹配到注册模式,Web服务器将请求传递给容器,以及容器调用servlet。 但不同的CGI程序,一个新的servlet是不是为每个请求创建。一旦容器实例化servlet,它只会为每个请求创建一个新线程。Java线程比使用CGI程序的服务器进程便宜得多。一旦servlet被创建,使用它的额外的请求会导致非常小的开销。Servlet开发人员可以使用init()方法保持对昂贵资源的引用,比如数据库或者EJB Home接口的连接,以便它们之间可以共享请求。获得这些资源要花费几秒钟的时间,比许多冲浪者愿意等待更长的时间。 另一方面,因为servlet是多线程的,servlet开发人员必须特别注意确保他们的servlet是线程安全的。了解更多关于Servlet编程,我们建议Java Servlets的例子,艾伦R.威廉姆森[威廉姆森]。Java Servlet规范[太阳是Servlet的权威信息来源,JST ]。 JavaServer Pages: 虽然servlets一大步从CGI程序,他们都不是万能的。为了产生响应,开发人员不得不使用大量的println语句来生成HTML。代码看起来像: out.println("

One line of HTML.

"); out.println("

Another line of HTML.

"); 在servlet生成HTTP响应都是太普通了。有图书馆,可以帮助你生成HTML,但应用越来越复杂,Java开发人员将不再扮演HTML页面设计的作用。 同时,如果可以选择的话,大多数项目经理更喜欢将团队分成组。他们像HTML设计者的工作表现而Java工程师则专注于业务逻辑。使用鼓励标记与业务逻辑混合,使团队成员是困难的。 为了解决这个问题,孙中山转而使用服务器页面将脚本和模板技术集成到一 个单一的组件思想。建立Java Server Pages,开发商开始创建照样在HTML页面,使用相同的HTML语法。将动态内容的页面,开发人员可以将脚本元素的网页上。脚本元素是封装的逻辑是由JSP识别标签。你可以很容易地找出脚本元素在JSP页面中寻找代码用<% and ends with %>.开始。 被视为一个JSP页面文件,只需要一个扩展JSP保存。 当一个客户机的请求,JSP页面,容器将页面翻译成Java servlet源代码文件编译成Java类文件的来源,就像你写的servlet。在运行时,容器也能检测JSP文件和类文件的最后修改日期。如果JSP文件自上次编译以来被修改了,容器将重新编译和重新改造页。 项目经理现在可以将表现层的HTML开发人员,然后把他们的工作对Java开发人员来完成业务逻辑部分。重要的是要记住,一个JSP页面是真的只是一个servlet。你可以做一个servlet,你可以做一个JSP。 JavaBeans: JavaBeans是Java类符合一组设计模式,使它们更容易使用的开发工具和其他部件。 定义JavaBean是一个用Java可重用的软件组件。有资格作为一个JavaBean,类必须是具体的和公共的,并且有一个noargument构造函数。JavaBeans属性域暴露内部提供的公共方法,遵循一致的设计模式。知道属性名称也符合这种模式,其他Java类可以通过反思发现和操作JavaBean属性。 JavaBean设计模式提供访问bean的内部状态,通过两种方法:访问器是用来读JavaBean的状态;存取器是用来改变JavaBean的状态。 游戏总是以小写单词集后跟属性名。在属性名称的第一个字母必须大写。返回值始终是无效的修改器只改变属性值;他们不回它们。一个简单的属性的mutator只有一个参数在其签名,它可以是任何类型。存取器常被昵称二传手后的前缀。该类型的双重属性的赋值方法签名会: public void setWeight(Double weight) 一个类似的设计模式来创建访问器方法签名。访问器方法总是以小写的get,后跟属性名。在属性名称的第一个字母必须大写。返回值必须匹配相应的mutator方法参数。对于简单属性访问器不能在他们的方法签名接受参数。毫不奇怪,通常称为获取访问器。 我们的质量属性的访问器方法的签名: public Double getWeight() 如果访问器返回一个逻辑值,有一种变型。而不是使用小写的get,逻辑属性可以使用前缀,后跟属性名。在属性名称的第一个字母必须大写。返回值必须是布尔逻辑值或布尔。逻辑访问器方法签名不能在他们接受参数。 逻辑访问器方法签名的属性是 public boolean isOn() 典型的方法签名中发挥重要的作用,使用Java豆时。其他组件可以使用Java反射API通过寻找方法以设置,发现JavaBean的属性,或得到。如果一个组件中发现一个这样的在一个JavaBean,它就知道这个方法可以用来访问或更改bean的属性。 孙介绍了JavaBeans用于GUI组件,但他们现在用Java开发的各个方面,包括Web应用。当太阳的工程师开发的JSP标签扩展类,他们设计了他们与JavaBeans。一个页面的动态数据可以作为一个JavaBean来传递,并且JSP标记可以随后使用bean的属性来定制输出。 更多的,我们强烈推荐JavaBeans的可怕的力量,劳伦斯H.罗德里格斯[罗德里格斯】。JavaBean规范[太阳是JavaBean的权威信息来源,JBS ]。 模型2: 规范0.92版的Servlet/JSP描述了模型2在同一个应用程序使用servlet和JSP页面的体系结构。术语模型2以后的版本中消失了,但它仍然是在Java Web开发人员之间的广泛使用。 模式2下,servlet处理数据访问和导航流,而JSP处理报告。模型2让Java工程师和HTML开发人员在他们的应用程序的每个部分的工作的。在一个模型2应用程序一部分的改变并不要求改变应用程序的另一个部分。HTML开发人员常常会改变程序的外观和感觉,而不改变是怎么回办公室servlet的工作。 Struts框架是基于模型的2层体系结构。它处理来帮助数据访问导航流和特殊课程提供一个控制器servlet。一个丰富的标签库是捆绑在一起的框架,使Struts易于使用JSP页面。 总结: 在这篇文章中,我们介绍了Struts应用框架。我们研究的技术落后,HTTP,通用网关接口,Java servlet,JSP和JavaBeans。我们也期待在模型2应用程序体系结构,看看它是如何结合起来使用servlets和JSP在相同的应用。 现在你已经体验了什么是发展一个Struts的Web应用程序,在2章,我们 深入到理论与实践背后的Struts架构。
本文档为【基于javaEE的人事劳资管理系统的设计与实现论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_196623
暂无简介~
格式:doc
大小:428KB
软件:Word
页数:79
分类:工学
上传时间:2017-10-14
浏览量:41