版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要随着时代的进步,计算机已经深入人们的日常生活,人们开始越来越多的利用计算机来解决实际问题。尤其是企业。现在大中小型企业日益突起,随着业绩量的增加,各种繁多复杂的问题也接踵而来。比如,企业要聘用人,从发布招聘信息到笔试,面试的记录输入,再到简历的入档存放。这些问题如果单纯靠人力来解决的话不但耗时,而且效率不高,结果也会不尽人意。因此,开发一个界面友好,易于操作的人力资源管理系统软件进行自动化处理变得十分重要,这正是本系统开发的目的和意义。本文阐述了人力资源管理系统的招聘管理模块,分别阐述了简历管理,笔试管理,面试管理和录用管理。本文是用java语言描述。所用的架构是Spring,Hibernate,Struts(SSH)。Spring作为项目的核心容器,由它整合Struts和Hibernate,起到粘合的作用。Struts作为核心控制器,在数据持久层方面则使用了Hibernate.前台用jsp页面+el表达式+框架自带的标签库进行输出。之所以采用如此构架是考虑到利于项目的后期维护。关键词:企业;互联网;SSH;JSPABSTRACTWiththeprogressofTheTimes,thecomputerhasbeendeeplyPeople'sDailylife,Peopleincreasinglyusecomputerstosolvepracticalproblems.Especiallyenterprise.Nowbigsmallandmediumenterprisesincreasingly,yea,alongwiththeperformanceoftheincreasedamountofvariouscomplexproblems,andonethingafteranother.Forexample,theenterpriseshouldhirepeople,fromrecruitmentinformationtoreleaserecordsofwritten,interview,againtoresumeinputintothefilesarestored.Iftheseproblemstosolveitrealizedbythehumannotonlytime-consuming,andtheefficiencyisnothigh,theresultwillbeunsatisfactory.Therefore,thedevelopmentofafriendlyinterface,easytooperatehumanresourcemanagementsystemsoftwareforautomatedbecomeimportant,thisisthesystematicdevelopmentofpurposeandmeaning.Thispaperexpoundsthehumanresourcemanagementsystemofrecruitmentmanagementmodule,respectivelyexpoundswrittenresumemanagement,management,interviewmanagementandemploymentmanagement.ThispaperistouseJavalanguagedescription.ThearchitectureisusedHibernate,Struts(andare)SSH.AsthecoreoftheprojectcontainersareStrutsandintegrationbyit,theroleofHibernate,haveadhesion.Strutsasthecorecontroller,indatapersistencelayerisusedinHibernate.FrontdeskwiththeJSPpage+elexpression+frameworkforoutputtobringthetaglibrary.Thearchitectureisconsideringusingsuchlateforprojectmaintenance.Keywords:enterprise;internet;SSH;JSP目录摘要 i绪论 v1 系统分析 1 需求分析 1 技术可行性 1 动态网站技术介绍 1 程序语言的选择 1 语言优势 3 操作可行性 4 环境可行性分析 4 软件环境 4 系统结构可行性分析 4 B/S模式简介 42 系统设计 6 系统设计说明 6 总体设计 6 数据库设计 7 数据库的需求分析 7 数据库表的具体设计 7 详细设计 13 功能设计 13 具体设计 13 开发架构 14 软件开发架构的意义 14 Struts架构简介 14 数据持久层 16 持久化数据 17 持久化技术 173 系统实现 19 准备工作 19 创建表空间 19 连接数据库 19 项目流程演示 20 具体流程演示 20 简历管理 21 职位发布 23 题库管理 24 试卷管理 26 在线考试 28 面试管理 31 录用管理 324 技术难点 34 中文乱码 34 数据的完整性 355 系统测试 36 测试的定义及目的 36 测试的原则 36 测试的方法 36 界面测试 36 功能测试 37 需求测试 38 性能测试 38 人力资源管理系统的测试 38总结 I致谢 II参考文献 III绪论现在网络的发展已呈现商业化、全民化、全球化的趋势。目前,几乎世界上所有的公司都在利用网络传递商业信息,进行商业活动,从宣传企业、发布广告、招聘雇员、传递商业文件乃至拓展市场、网上销售等,无所不能。如今网络已成为企业进行竞争的战略手段。企业经营的多元化拓展,企业规模的进一步扩大,对于企业的管理、业务扩展、企业品牌形象等提供了更高的要求。在以信息技术为支撑的新经济条件下,越来越多的企业利用起网络这个有效的工具。全球范围内的企业内部组织正在发生巨变,未来企业成功的关键的依靠企业人力资源,人才之争已经成为市场竞争中的核心内容之一,以人为本成为企业立足和发展的根本。有效力管理企业的人力资源,为企业提供强有力的储备力量,使之成为企业发展的主动力。通过人力资源的有效管理,掌握最新的、准确的企业人力资源信息,并对其进行复杂的统计与分析,从而充分发挥每个员工的潜能,为企业创造更大的价值。对于任何一个企业而言,企业的品牌形象至关重要。特别是对于互联网技术高度发展的今天,通过人力资源管理的网站,员工可通过网站侧面的了解企业形象及企业实力,因此,建立具有国际水准的网站能够极大的提升企业在员工心中的整体形象。系统分析需求分析网络化的今天,网络人力资源管理系统,使新的人力资源协作管理模式成为可能。通过网络管理系统,专门的人力资源管理人员可以提高自身的工作效率,作好人力资源管理的协调工作,提高人力资源利用率;通过网络管理系统,员工可以直接管理自己的技能,有效地发现和挖掘自身的潜能,及时与自己的上级、下属、同事进行的沟通与交流,同心协作,积极为企业的发展与决策贡献力量。通过网络人力资源管理系统对企业人力资源进行管理,使企业人力资源管理适应时代的发展要求,大大提高了企业的核心竞争力。技术可行性动态网站技术介绍Internet起源于20世纪60年代的美国,它在近几年迅速风靡全球,其根本原因不仅在于她拥有卓越的国际通信功能,更在于它拥有巨大的信息资源。所谓的Internet是指由分布在全世界成千上万的计算机网络遵循一定的通讯协议,并相互联系在一起而形成的国际互连网络,也就是说,Internet是建立和使用这些网络的人群,群体,公司以及各种网络资源的集合体。随着网络技术的不断发展,单纯的静态页面已经不能满足发展的需要,因为静态页面是用单纯的HTML语言组成的,它没有交互性。因此,为了满足实际的需要,许多网页文件扩展名不再只是”htm”,”html”,出现了以”php”,”asp”,”jsp”,”shtml”等为后缀的网页文件,这些都是采用动态网页技术制作出来的。程序语言的选择CGICGI(CommonGatewayInterface,通用网关接口)。首先,客户端(即Web浏览器)根据某资源的URL(UniformResourceLocator,统一资源定位器)向Web服务器提出请求,Web服务器的Daemon(守护进程)将此请求的参数通过标准输入stdin和环境变量传递给指定的CGI程序,并启动此应用程序进行处理,如要存取数据库服务器上数据库的数据,则向数据库服务器发出处理请求,数据库服务器将执行结果返回给CGI程序,CGI程序处理结果通过标准输出stdout返回给Daemon进程,再由Daemon进程返回给客户端,由浏览器解释执行,将最终结果在用户面前显示。CGI允许Web服务器运行外部应用程序,以通过外部程序来访问数据库等一些外部资源,并产生HTML文档给浏览器。但每次请求CGI程序都要重新启动程序,影响了响应的速度,且CGI程序不能被多个客户请求共享,影响了各种资源的使用效率。为了克服CGI的这些缺点,一些Web服务器厂商开发出了专用的API(ApplicationsProgramInterface应用程序接口),这样就允许程序员编写程序来扩展服务器的功能。API相对于CGI与Web服务器的结合更加紧密,占用的资源较少,运行的效率大有提高,安全性与保护性更好。但是开发API应用程序比开发CGI应用程序复杂得多,要求程序员掌握更多的计算机软件知识,且各种API之间的兼容性不好,业界没有一个统一的标准,使得API程序只能工作在专用的Web服务器与操作系统之上。编写CGI的程序设计语言有许多种,常用的有C,PERL,VisualC++等,由于对程序员的要求较高,且编写与调试比其它队编程技术困难,故近年来基于B/S的信息系统工程时间中已很少被采用。ASPASP的程序比HTML更方便而更富有灵活性。是在Web服务器端运行,运行后再将运行结果以HTML格式传送至客户端的浏览器。因此ASP与一般的脚本语言相比要安全得多。ASP最大的好处就是可以包含HTML标签,也可以直接存取数据库及使用无限扩充的ActiveX控件,用户可以直接使用ActiveX控件,调用对象方法和属性,以简单的方式实现强大的交互功能。但ASP技术也并非完美无缺,由于它基本上是局限于微软的操作系统平台,主要的工作环境是微软的IIS应用程序结构,又因ActiveX对象具有平台特性,所以ASP技术要实现在跨平台Web服务器上工作,不是很容易。Microsoft的ASP技术目前已发展到.NET版。对很多人来说,用ASP来创建Windows服务器平台上的动态Web网页,整个站点和基于Web的应用程序已经成为及其自然的方法。在浏览器地址栏中,文件扩展名。asp同表示动态创建的网页的文件扩展名.pl或.cgi一样,已被浏览者所接受。开发ASP程序,常常先设计静态网页的栏目格式和排版形成HTML语言,接着在HTML的基础上添加脚本程序,形成ASP程序后再实现动态的Web网页。在ASP的程序开发中,它所用的脚本语言是JavaScript和VBScript,在默认情况下使用的是VBscript,它是VB程序设计语言的一个子集,语法与VB基本相同。ASP中的ADO对象用来执行与数据库相关的操作,ADO再以OLEDB或ODBC的方式访问数据库,在.NET版本中这一对象称为。PHPPHP即HypertextPreprocessor(超文本预处理器),它是当今Internet上最为火热的脚本语言,其语法借鉴了C,Java,Perl等语言,而且只需要很少的编程知识就能使用PHP建立一个真正交互的Web站点。它与HTML语言具有非常好的兼容性,使用者可以直接在脚本代码中加入HTML标签或者在HTML标签中加入脚本代码从而更好地实现页面控制。PHP提供了标准的数据库接口,数据库连接方便,兼容性更强,扩展性强,可以进行面向对象编程。但是PHP对组件的支持不够,扩展性差,常用它与免费的数据库系统MySQL协同一起用来构建中小型网B/S应用大网站或信息系统。JSPJSP(JavaServerPages)是由Sun公司倡导,许多别的公司参与一起创建的一种新动态网页技术标准,类似其他技术标准。在传统的网页HTML文件(*.htm,*.html)中加入Java程序片断(Scriptlet)和JSP标签,构成了JSP网页(*.jsp)Servlet/JSPContainer收到客户端发出的请求时,首先执行其中的程序片断,软后将执行结果以HTML格式响应给客户端,其中程序片断可以是:操作数据库,重新定向网页以及发送E-Mail等等,这些都是建立动态网站所需要的功能。所有程序操作都在服务器端运行,网络上传送给客户端的仅是得到的结果,与客户端的浏览器无关,因此,JSP称为Server-sideLanguage。所以被许多人认为是未来最有发展前途的动态网站技术之一。要了解JSP相关知识,请参考文献【1】。经过如上的程序语言的比较,PHP功能相对简单,不适合作大程序,而CGI效率相对较低,所以也不考虑,因为该系统并没有原有的基础平台需要扩展,也不需要与其他系统进行太多的交互,所以使用J2EE的模式并不能够体现出J2EE本身的优势,而JSP又是J2EE的核心技术之一,可以随时升级为J2EE程序,,这里暂时不考虑采用J2EE,这样只需要在ASP和JSP中进行选择。在进行了诸多因素的比较之后,最终认为目前这个阶段比较合适的是JSP,,而选择Struts架构作为开发的主体框架,选用Hibernate作为数据持续性处理层,则是考虑到了其高速的开发效率,及代码重用性高,易于维护等各种优势。其最终目的是希望提高系统底层业务逻辑的可重用性,增加系统的可扩展性,降低系统维护成本。语言优势·一次编写,到处运行作为Java平台的一部分,JSP拥有Java编程语言”一次编写,到处运行”的特点,随着越来越多的供应商将JSP支持添加到他们的产品中,您可以使用自己所选择的服务器和工具,但并不影响当前的应用。·JSP的平台适应性更广这是JSP比ASP的优越之处,几乎所有的平台都支持Java,它们可以在任何平台下通行无阻。虽然NT的OS占据了很大的市场的份额,但在服务器方面UNIX的优势仍然很大。从一个平台移植到另一个平台,JSP和JavaBeans甚至不用重新编译,因为Java字节码都是标注的字节码与平台无关。·健壮的存储管理和安全性由于JSP页面的内置脚本语言是基于Java编程语言的,而且所有的JSP页面都被编译为JavaServlet,JSP页面就具有Java技术的所有优点,包括健壮的存储管理和安全性·数据库连接技术很多的OS中都带有JDBC驱动程序,Java就通过JDBC与数据库连接,执行查询,提取数据等操作。Sun公司还提供了JDBC-ODBC的桥连方式,因此Java也可以访问带有ODBC驱动的数据库,目前大多数数据库系统都带有ODBC驱动,所以Java能访问诸如Oracle,Sybase,MSSQLServer和Access等类型的数据库。操作可行性对于用户来说,本系统只要求使用者掌握一定的上网经验,经过仔细设计和测试之后的系统具有操作简单,方便灵活等优点,足可以满足各种用户的不同需求,同时也方便了公司的内部管理。管理人员及用户一定会在短时间内掌握并熟练使用。只要动一动鼠标键盘就可以达到想要的效果。环境可行性分析软件环境·操作系统:WindowsXP,SP2,SP3。 内存大于等于2G 硬盘大于等于50G·数据库:Oracle10i·Web服务器·系统结构可行性分析B/S模式简介B/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3-tier结构。B/S结构,主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言(VBScript、JavaScript…)和ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。随着Windows
98/Windows
2000将浏览器技术植入操作系统内部,这种结构更成为当今应用软件的首选体系结构。显然B/S结构应用程序相对于传统的C/S结构应用程序将是巨大的进步。B/S结构采用星形拓扑结构建立企业内部通信网络或利用Internet虚拟专网(VPN)。前者的特点是安全、快捷、准确。后者则具有节省投资、跨地域广的优点。须视企业规模和地理分布确定。MartinFowler在企业应用架构模式一书中有详细的阐述,见文献【2】。企业内部通过防火墙接入Internet,再整个网络采用TCP/IP协议。比如说很多人每天上“网易”网,只要安装了浏览器就可以了,并不需要了解“网易”的服务器用的是什么操作系统,而事实上大部分网站确实没有使用windows操作系统,但用户的电脑本身安装的大部分是windows操作系统。系统设计系统设计说明系统设计是在系统分析的基础上由抽象到具体的过程。主要目标是将系统分析阶段所提出的反映了信息需求的系统逻辑方案转换成可以实施的基于计算机与通信系统的物理(技术)方案,为下一阶段系统实施提供必要的技术资料,应符合系统性,灵活性,可靠性,经济性的要求。总体设计图2-1招聘管理流程图数据库设计数据库的需求分析·题库表:T_QUESTIONS·题目选项表:T_QUESTION_OPTION·简历管理表:T_RESUME·面试表:T_INTERVIEW·职位发布表:T_MAJOR_ISSUE·试卷表:T_EXAM·试卷详细表:T_EXAM_DETAIL·考试答案表:T_ANSWER·考试答案明细表:T_ANSWER_DETAILS数据库表的具体设计表2-1题库表表名题库表英文名称T_QUESTIONS主键question_id外键序号名称类型大小必填字段默认值备注1question_idINTTRUE题库表ID2question_kind_idINTTRUE问题分类(数据字典)3question_typechar(1)1TRUE答案类型4contentVARCHAR2(200)200TRUE题目内容5answerVARCHAR2(200)200TRUE答案6registerINTFALSE登记人7regist_timeDATEFALSE登记时间8changerINTFALSE变更人9change_timeDATEFALSE变更时间该表用于管理笔试的试题集,其中question_kind_id是从数据字典中取得表2-2题目选项表名题目选项表英文名称T_QUESTION_OPTION主键option_id外键question_id序号名称类型大小必填字段默认值备注1option_idINTTRUE选项ID2question_idINTTRUE题目ID3option_codeVARCHAR2(10)10TRUE选项编号4contentVARCHAR2(200)200FALSE选项内容5option_typechar(1)1FALSE选项类型()该表用于存储试题结果选项图2-3表2-3简历管理表表名简历管理表英文名称T_resume主键Resume_id外键jobhunt_major_id序号名称类型大小必填字段默认值备注1Resume_idNumber(19)19TRUE简历管理表ID2jobhunt_nameVarchar2(60)60TRUE求职人姓名3jobhunt_major_idNumber(9)9TRUE应聘职位ID4engage_typeVarchar2(30)30FALSE招聘类型5jobhunt_addressVarchar2(20)20FALSE地址6jobhunt_postcodeVarchar2(6)6FALSE7jobhunt_telephoneVarchar2(60)60FALSE号码8jobhunt_homephoneVarchar2(60)60FALSE家庭9jobhunt_mobilephoneVarchar2(60)60FALSE手机10jobhunt_emailVarchar2(60)1FALSEEmail11jobhunt_hobbyVarchar2(200)200FALSE兴趣爱好12jobhunt_specilityVarchar2(200)200特长13jobhunt_sexChar(2)2FALSE性别14jobhunt_religionVarchar2(60)60FALSE宗教信仰15jobhunt_partyVarchar2(60)60FALSE政治面貌16jobhunt_nationalitydVarchar2(60)60FALSE国籍17jobhunt_raceVarchar2(60)60FALSE民族18jobhunt_birthdaydateFALSE生日续表2-3序号名称类型大小必填字段默认值备注19jobhunt_ageVarchar(3)3FALSE年龄20jobhunt_educated_degreeVarchar2(60)60FALSE教育程度21jobhunt_educated_yearsNumber(2)2教育年限22jobhunt_educated_majorVarchar(60)60FALSE专业23jobhunt_collegeVarchar(60)60FALSE专业院校24jobhunt_idcardVarchar2(60)60FALSE身份证号25jobhunt_birthplaceVarchar2(200)200FALSE出生地26demand_salary_standardNumber(15,2)15FALSE期望薪酬27jobhunt_history_recordsVarchar2(2000)2000FALSE个人履历28remarkVarchar2(500)500FALSE备注29recomandationVarchar(500)500FALSE推荐意见30jobhunt_pictureFileFALSE照片31attachment_nameFileFALSE档案附件32registervarchar(20)20FALSE登记人33regist_timedataFALSE登记时间34checkerVarchar(20)20FALSE筛选人35check_timedataFALSE筛选时间36check_commentVarchar(500)500FALSE筛选推荐意见37interview_amountNumber(2)2FALSE面试次数38total_pointsNumber(5,2)5FALSE笔试总分39test_amountNumber(2)2FALSE笔试次数40pass_checkerVarchar(20)20FALSE录用审核人姓名41pass_check_timedataFALSE录用复核时间42pass_check_commentVarchar(500)500FALSE录用审核意见43resume_statusChar(1)1FALSE简历状态简历状态(未操作0,1面试、2笔试、3等待录用、4已落选、5已录用)说明:本表是用来存储求职人的个人简历信息和企业人员对该简历的处理情况(具体信息看上面的简历管理表),表2-4面试表面试表表名面试表英文名称T_interview主键interview_id外键resume_id序号名称类型大小必填字段默认值备注1interview_idNumber(19)19TRUE面试表ID2resume_idNumber(19)19TRUE简历ID3image_degreeNumber(9)9FALSE形象等级4flk_degreeNumber(9)9FALSE口才等级5flw_degreeNumber(9)9FALSE外语水平6fly_degreeNumber(9)FALSE应变能力7EQ_degreeNumber(9)9FALSEEQ等级8IQ_degreeNumber(9)9FALSEIQ等级9mq_degreeNumber(9)9FALSE综合素质10interview_commentNumber(500)500FALSE面试评价11registerVarchar(20)20TRUE面试人12registe_timedataTRUE面试时间说明:本表是用来存储对面试人的面试相关测试信息(具体信息看上面的面试表),表2-5职位发布表表名职位发布表英文名称T_MAJOR_ISSUE主键major_issue_id外键dept_id,major_id序号名称类型大小必填字段默认值备注1major_issue_idINTTRUE职位发布表ID2dept_idINTTRUE部门ID3major_idINTTRUE职位ID4human_amountINTTRUE招聘人数5engage_typeVarchar(60)60TRUE招聘类型6deadlinedataTRUE截止日期7major_describeVarchar(2000)2000TRUE职位描述续表2-5序号名称类型大小必填字段默认值备注8engage_requiredVarchar(2000)2000TRUE招聘要求9registerVarchar(20)20TRUE登记人10regist_timeDataTRUE登记时间11changerVarchar(20)20TRUE变更人12Changer_datadata变更时间说明:本表是用来存储公司招聘员工的一些招聘信息(具体信息看上面的职位发布表),表2-6试卷表表名试卷表英文名称T_EXAM主键exam_id外键major_id序号名称类型大小必填字段默认值备注1exam_idINTTRUE试卷ID2exam_nameVarchar2(100)100TRUE试卷名称3major_idINTTRUE职位ID4limite_timeINTTRUE答题时限5scoreNUMBER(5,2)5TRUE总分值6descriptionVarchar2(500)500TRUE描述7registerINTTRUE登记人8regist_timeDateTRUE登记时间9changerVarchar2(20)20TRUE变更人10change_timeDateTRUE变更时间说明:本表是用来存储笔试试卷的描述信息(具体信息看上面的试卷表),表2-7试卷详细表表名试卷详细表英文名称T_EXAM_DETAIL主键exam_detail_id外键Exam_id序号名称类型大小必填字段默认值备注1exam_detail_idINTTRUE试卷详细ID2exam_idINTTRUE试卷ID3question_kind_idINTTRUE题目分类ID4question_amountINTTRUE出题数量5question_scoreNUMBER(5,2)5TRUE分值说明:本表是用来存储笔试试卷的描述信息(具体信息看上面的试卷详细表),表2-8考试答案表表名试卷表英文名称T_ANSWER主键exam_id外键exam_id序号名称类型大小必填字段默认值备注1answer_idINTTRUE考试答案ID2exam_idINTTRUE试卷ID3typeINTTRUE类型(面试,培训测试)4test_manINTTRUE测试人5test_timeINTTRUE测试时长6total_scoreVarchar2(5)5TRUE考试分数7test_checkerINTTRUE测试复核人8test_check_timeDateTRUE测试复核时间9test_commentVarchar2(500)500TRUE测试评价10testcheck_statusChar(1)1TRUE测试复核状态说明:本表是用来存储测试结果信息及处理情况(具体信息看上面的考试答案表),表2-9考试答案明细表表名试卷表英文名称common_exam主键answer_details_id外键exam_id序号名称类型大小必填字段默认值备注1answer_details_idINTTRUE明细表ID2answer_idINTTRUE考试答案ID3question_idINTTRUE题目ID4answerINTTRUE答案说明:本表是用来存储考试答案具体信息(具体信息看上面的答案明细表表),详细设计功能设计本系统主要用于对企业对求职者的一个招聘过程。具体实现目标如下:企业发布一个职位。求职者根据应聘的职位填写相应的简历。企业对简历的管理。企业根据不同的职位设置相应的招聘试卷。求职者进行笔试。企业进行笔试管理。求职者进行面试。企业进行面试管理。录用管理。具体设计企业发布一个职位,求职者根据这个职位来填写相应的简历。企业收到简历后会对简历作出初步的筛选,筛选通过的话求职者可以进入到笔试环节。根据求职者输入的身份证号判断是否有笔试资格,如果有的话根据应聘的职位从试卷生成规则里面拿到一份试卷生成规则,从题库表里面选取相应类型相应数量的题目生成一份试卷。笔试完后,企业会根据笔试成绩对简历作出第二次的筛选,通过的话就可以进入到面试环节。面试通过的话就可以录用了。当然上述只是招聘管理里头的一种情况。面试者也可以跳跃其中的某一环节直接被录用,也可以做第二次笔试,第三次笔试,这主要是通过简历表里头设置的一个状态位来决定的。开发架构软件开发架构的意义对于已经习惯了使用传统的JSP设计方式实现动态网站的程序员,在刚开始接触Struts时经常会出现一种困惑:专业书籍和文章中总是使用StrutsFramework这种说法,Struts通常也被称为是一种Web应用开发的架构(Framework),那么到底什么是架构,软件开发架构的意义又是什么呢?如果将早期的软件开发方式比喻为传统手工业生产方式的话,那么基于软件开发架构的开发方式则是大型现代化工厂生产方式的体现。虽然二者都能够制作出产品,但是在生产效率及产品质量的保证上显然会有巨大的差异。汽车生产厂家在制造一辆汽车时,总是先在各条生产线上制作出不同类型的零件,最终再由专业的技师在专业的组装生产线上将成百上千的零件组装成一台完整的汽车,显然,设计者的主要精力并不是用于重复地制造相同的车轮,相同的方向盘,而是利用现成的车轮组装出一辆辆不同的汽车。同样,开发人员也可以利用软件架构中提供的组建库(如同已经生产好的规范化的汽车核心零部件库),按照既定的组装方式将不同的组建应用在软件产品的各个环节,最终开发出一个完整的,高质量的软件产品。实际上,如果需要,汽车设计者也可以将原有的车轮进行改造,例如涂上不同的颜色,贴上不同的装饰物等。同理,软件开发人员可以在现有组件的基础上进行扩展和改进,这实际上充分地实现了软件开发的可扩展性。组件复用是面向对象编程思想的结晶,而在软件架构的基础上进行开发可以最大限度地实现组件的复用。在大型,多层结构的软件开发项目中,开发和使用具有可重用性,可扩展性,经过良好测试的软件组织,可以使开发者从大量繁琐的代码工作中解脱出来,专注于软件设计和业务逻辑的实现。通常将被验证为有效的,相同类型问题的解决方案进行抽象,即可提取形成一个应用程序框架,即Framework。每一种Framework都有自己的一套明确的实现机制,通常在Framework结构中都会包含一个”命令和控制”组件(“commandandcontrol”component),类似于工业生产中的”控制中心”,开发人员通过它可以很容易地控制,扩充和实现该Framework上的开发结构。Struts架构简介随着Web开发技术的日益成熟,在Web开发开发领域中出现了许多设计好的软件开发框架,Struts就是一种基于MVC经典设计模式的框架,也是当前Web开发中比较成熟的一种框架。经典的MVC模式MVC(Model-View-Controller)模式,即模型-视图-控制器模式,其核心思想是将整个程序代码分成相对独立而又能协同工作的3个组成部分。·模型(Model):业务逻辑层。实现具体的业务逻辑,状态管理的功能。·视图(View):表示层。即与用户实现交互的界面,通常实现数据输入和输出功能。·控制器(Controller):控制层。起到控制整个业务流程(FlowControl)的作用,实现View和Model部分的协同工作。 MVC设计模式中,事件一般是指客户端Web浏览器提交的各种不同请求,这些请求由控制器进行处理,控制器根据事件的类型来改变模型或各个视图,视图也可以接受模型发出的数据更新的通知,依据数据更新的结果调整视图效果,呈现在用户面前。而模型也可以通过视图所获得的用户提交的数据进行具体业务逻辑的处理。模型视图1视图2控制器事件改变改变改变更新更新获得数据模型视图1视图2控制器事件改变改变改变更新更新获得数据获得数据图2-2MVC设计模式的结构Struts1.2开发框架作为基于MVC设计模式的Web应用的一种典型体现,Struts架构实际上是建立在Model2基础上的,对Model,View和Controller都提供了现成的实现组建。a.Controller控制器部分Struts中的Controller控制器部分是通过专门的Servlet来实现的,该Servlet是一个StrutsAPI中提供的ActionServlet类型的实例,ActionServlet类继承了类,因此该类的实例可以和普通的Servlet一样工作,其作用是接收客户端浏览器的请求,然后选择执行相应的业务逻辑,再把响应结果送回到客户端。Action对象是开发者定义的类(该类必须是StrutsAPI中提供的Action类的子类)的实例。在继承该类的过程中开发者可以加入具体业务逻辑或调用业务逻辑模块。Action对象在进行了业务逻辑或调用业务逻辑模块。Action对象在进行了业务逻辑的处理以后会将应用程序流程转到合适的View组件,最终将响应送回浏览器客户端。Struts中提倡Action对象只用来决定”做什么”,相当于一个低层面的控制器,因此也可以将Action归纳为Controller的组成部分。b.Model模型部分MVC系统中的Model模型部分从概念上可以分为两类:系统的内部状态和改变系统状态的动作。Struts中的Model部分一般由JavaBean以及EJB组成。在Struts架构中使用JavaBean来提供具体的业务逻辑,即”怎么做”,对于复杂的系统也可以使用EJB等组件来实现系统状态维护。这种业务逻辑的细分可以增强可以代码的可重用性。c.View视图部分Struts中的View视图部分依然可以采用JSP来实现。此外,Struts还提供了丰富的自定义标记库,View部分使用这些自定义标签同样可以实现与Model部分的有效交互并能够增强显示功能。d.Struts开发环境安装在Tomcat安装完成后,即可将Struts框架工具安装到对应的WEBContainer中。可以通过Struts的二进制发布包安装Struts框架,具体操作步骤:下载二进制发布版将下载的Struts二进制发布包进行解包,将解包目录下的lib目录下的所有.jar文件全部复制到项目目录的WEB-INF/lib下,如果在多个项目中都用到了Struts,则将上述文件直接复制到Tomcat目录下的common/lib下。将对应的lib目录下的文件添加到环境变量CLASSPATH中即可。以上资源可以从获得更多关于Struts安装和相关配置的说明信息。数据持久层数据是软件系统中不可缺少的环节,数据持久化的解决之道也一直是企业计算标准中最有影响力的部分。如今关系型数据库已经稳定地占据着主要的数据库市场,XML技术和XML数据库技术也日渐成熟。持久化数据数据是我们软件开发人员必须考虑的对象。无论你使用哪种技术,借助哪种工具,以及购买哪种软件平台产品,当接受一个实际的问题时,你都需要面对实际的数据,考虑实际数据的各种问题。在这些问题中往往都包含数据持久化的问题,这不仅是因为我们的计算机内存有限,更主要的原是业务逻辑的需要,作为一个接触软件技术,尝试写程序的人,我们要接触各种类型的数据。下面列举了三种常见的数据类型:随机数据这种数据指的是不确定结构,不了解数量,目前也搞不清关系的数据。它听起来很奇怪,但在实际的程序设计中十分常见。例如,从一个震动源传递到计算机采集卡的数据,再比如一个自然物生长过程中的数据。可能有些数据实际上是很有规律的,但是在设计程序时由于对它的了解很少,使它对于我们来说也成了随即的数据了。我没曾经在遇到这种搞不大清楚的数据时,使用很大的数组或者多个链表来表述,不管下一个数据的值是什么,先存储起来再说。有时候当遇到的数据总也摸不到规律,或者越来越多,内存也容纳不下时,就找个文件存放起来,后来发现其实存入文件的方式很不错,起码可以一直继续下去。也许这就是最佳的持久化策略了。属性数据在接触具体的项目开发任务时,更多的时候要接触到属性类型的数据,这些数据来源于对象的属性,当然这些属性之间还存在关系,对于此类数据,似乎最好的持久化方法就是利用关系型数据库表了,在存入数据表的过程中还可以借助Hibernate来提高开发的效率,或者直接使用JDBC来传递SQL语句。这两种方法有些相似但还有细微的差别。XML数据现在很多网络上的应用程序都使用XML类型的数据,或者说是一种树状的数据,如何将这两种数据持久化保存下来呢?一种方法是将XML数据拆分为属性数据,然后存储到关系型数据库中。另一种方式比较新,是将XML数据存储到XML数据库中,在XML数据库中存储这种数据时,数据的结构不变,XML数据在XML数据库中,在XML数据库中以文档对象形式保存,使用XPaht和XQuery查询语言来查询XML数据中的节点数据,或者多个XML文档中的多个节点数据。持久化技术Hibernate的出现,提供了一个符合Java面向对象编程思想,易于使用的数据库持久化解决方案。因此,在目前行业的Java数据库应用项目中,有越来越多的开发人员开始尝试使用Hibernate在数据库外面包裹上一层面向对象的外衣,从而将开发人员从繁琐,重复,技术含量不高的数据库编程中结果出来。Hibernate概述Hibernate在英文中的意思是”冬眠”,从这个角度也可以体会到Hibernate架构下提供的相关技术可以实现度十角状态的持久性保存。在传统的数据库编程中,开发人员要面对大量重复行代码的编写,以实现对不同数据表中的数据的获取,并将获取到的记录数据封装成对象,在处理完成之后,如果需要进行对象状态的存取,需要将对象中的数据拆卸成数据库记录中的对应字段的值,然后向数据库中进行存取。这种工作方式显然没有实现真正意义上的数据存取阶段的面向对象。虽然数据存取过程中的工作步骤是基本固定的,但是由于操作的数据表中字段列表数据的不同,使得开发人员必须要不厌其烦地书写与相应的实体类对应的封装处理过程。而在Hibernate中,类似这种重复性高,工作量大,但是又必须保证高质量完成的体力活,全部由Hibernate接管过去。这对广大的Java开发人员无疑是个非常好的消息。Hibernate本质上是一个面向Java开发环境的对象/关系数据库映射工具。在Hibernate之前,开发人员要将面向对象的软件和关系数据库结合在一起,往往会费长麻烦。而借助Hibernate对象/关系数据库映射技术,可以非常轻松地将以面向对象思想封装的对像的各个状态数据映射到基于SQL的关系模型数据结构中去。JavaJava应用HibernateHQL语句数据库SQL语句XML映射文件图2-3Hibernate工作示意图系统实现准备工作创建表空间创建表空间createtablespacets_bysjdatafile'bysj.dbf'size10Mautoextendon;创建临时表空间createtemporarytablespacett_bysjtempfile'bysj_temp.dbf'size10Mautoextendon;创建用户名为hll,密码hllcreateuserhllidentifiedbyhlldefaulttablespacets_bysjtemporarytablespacett_bysj--为用户分配权限(赋予dba权限)grantconnect,resource,dbatohll连接数据库以用户名为hll的用户账号连接到oracle数据库。连接数据库的时候记得要开启oracle服务和监听两项服务。Hibernate的默认配置文件hibernate.cfg.xml连接数据库。<!--spring的配置文件--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:resource/*/applicationContext*.xml</param-value> </context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>由ContextLoaderListener加载spring的总配置文件applicationContext-web.xml初始化所有的bean。Spring最主要的亮点就是控制翻转和面向切片编程,代码的粗体部分就是面向切面的一个具体体现。项目的basedao继承了spring框架的org.springframework.orm.hibernate3.support.HibernateDaoSupport这个类,这个类默认会注入sessionFactory。从而完成对数据库的操作。项目流程演示具体流程演示图3-1项目以树形结构显示,其中分为简历管理,职位发布,试卷管理,题库管理,考卷管理,在线考试,添加面试,笔试审核,面试管理和录用管理。整个的是一个流程下来的。简历管理流程图: 图3-2简历管理流程图具体步骤演示:图3-3简历列表当点击新增按钮时进入简历添加页面:图3-3简历添加页像标了*的为必填项,如果必填项为空就按添加简历按钮的话,通不过前台的js验证,并附上相依的提示信息图3-4简历添加后可以修改,查看和删除简历。当点击查看按钮时,里面有一个操作下拉框,就是通过改变这个状态位来确定简历的状态,简历的状态有笔试,面试,等待录用和淘汰。图3-5更改简历状态职位发布流程图:图3-6职位发布流程图 接下来就该要发布一个职位了。图3-7职位发布添加 图3-8职位发布列表同样,在职位发布完后可以对职位进行修改,查看,检索和删除。在这里要提的是在列表的第一栏都多了一个checkbox。通过单击状态栏上的删除按钮时可以完成级联删除。当点击修改时,首先根据隐藏域中的id查询职位的信息进行显示:图3-9职位发布修改题库管理流程图:图3-10题库管理流程图 题库管理模块可以添加题目,题目的类型有单选,多选和问答单选图3-11增加单选多选图3-11增加多选问答图3-12增加问答其中答案类型questionType来区分单选,多选和简答。捕捉到单选按钮的值来保存相应类型的题目。configQuestionOption为题目选项属性。一个题目对应对应多个题目选项,为一对多关系。所以用set来定义。通过在hibernate的配置文件中的mapping属性映射<mappingresource="com/fendou/engage/po/ConfigQuestion.hbm.xml"/>然后再java类中运行代码:Configurationconfig=newConfiguration().configure(); SchemaExportse=newSchemaExport(config); se.setFormat(true); se.create(true,true);可以生成t_ConfigQuestions表。试卷管理 流程图 图3-13试卷管理流程图生成试卷生成规则: 添加好题目之后,就可以添加试卷生成规则了。图3-14试卷添加在试卷规则添加页面上,有一个增加规则和删除规则的按钮。可以通过单击它来动态的增加或删除选项。但是增加的上限为3个。同时,在试卷添加页面,还做了一个重要的操作,即添加各类型题目数量的时候,不能多于相应类型题库当中的数量,如果超出了则弹出相应的提示信息。图3-15试卷添加提示信息这是通过dwr来实现的。Dwr的实现原理:通过前台的js函数调用后台的java代码,并且返回一个回调函数。通过这个回调函数来达到局部刷新的功能。整个过程都是异步处理的。要实现dwr必须做以下几件事情:前台页面必须导入dwr的核心类通过调用配置好的java类,调用其方法返回一个回调函数:要配置dwr的java类必须:在文件中配置dwr的核心类在项目目录的web-inf目录下加入dwr的配置文件,配置相关信息通过以上步骤,便可以完成dwr的功能了。在线考试流程图:图3-16在线考试流程图 一切准备工作就绪,现在要开始在线答题了。 答题大体是这样的:根据求职者应聘的职位,找到一份试卷生成规则,再从题库表里面拿到题目生成一份试卷。在线考试的页面:图3-17在线考试入口求职者输入身份证号,开始答题。首先会有一个验证的过程: <formaction="/HRB/onLineCommonExam.do"method="post">表单提交到这个路径里面。这是在struts的配置文件里配置的。Path属性对应spring配置文件当表单提交的时候,会通过这个path属性值找到对应的action作出业务的处理。在线考试页面:图3-18在线考试页面答题完后,会生成一份考卷。考卷列表如下:图3-19考试列表接下来就是要批改试卷了,点击列表右边的“批改试卷图3-20试卷批改1试卷的单选,多选由系统自动的批改,主观题由审题人打分。打分完笔试成绩就出来了。但是方便试卷的审批,批改完的试卷必须要保留。图3-21试卷批改2审批完后,最终成绩就出来了。那么就会在简历信息里面记录笔试的分数。笔试完后,任然可以改变简历的状态。可以重新进行笔试,可以进行面试,也可以直接被录用或淘汰了。但方便演示,还是按照流程来,把简历的状态改为面试。面试管理流程图:图3-22面试管理流程图 点击添加面试记录后,可以填写面试记录了。图3-23面试添加这里有一个点值得一提。就是简历的编号。当单击添加面试记录后会在后台生成简历的面试编号。通过绑定的id值来定位到简历。部分代码如下:同样,在面试管理里面,对简历也提供了查看和修改功能。图3-24面试管理列表录用管理流程图:图3-25录用管理流程图 笔试面试完最后就到了录用管理环节了。到了这环节简历的状态只有两个了,要么被淘汰,要么被录用。不能重新进行笔试或者面试了。这个模块比较简单,录用人根据简历的信息来决定是否进行录用。进行录用会进行两个操作。改变简历的状态把简历入档整个招聘管理完成。图3-26招聘管理技术难点中文乱码由于浏览器中的参数传递是按字节传送,因此英文和数字不会有任何的问题,而中文汉字则由两个字节组成。在项目运行过程中有可能出现乱码。我解决乱码是通过一个过滤器。首先在文件中配置这个过滤器<!--全局过滤--> <filter> <filter-name>Encoding</filter-name> <filter-class>com.fendou.platform.filter.EncodingFilter</filter-class> <init-param> <param-name>charset</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>Encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>EncodingFilter.java:packagecom.fendou.platform.filter;import…;publicclassEncodingFilterimplementsFilter{ Stringcharset=""; publicvoiddoFilter(ServletRequestarg0,ServletResponsearg1, FilterChainarg2)throwsIOException,ServletException{ ServletRequestrequest=(ServletRequest)arg0; ServletResponseresponse=(ServletResponse)arg1; request.setCharacterEncoding(charset); response.setCharacterEncoding(charset); response.setContentType("text/html;charset="+charset+""); arg2.doFilter(request,response); } publicvoidinit(FilterConfigconfig)throwsServletException{ Stringstr=config.getInitParameter("charset"); if(str==null||"".equals(str)) charset="utf-8"; else charset=str; }}这样解决的好处是编码方式是可配置的。比如现在是Utf-8。如果要改为iso8859-1的话,只要修改文件中的<param-value>值。这个过滤器将拦截所有的请求。通过<url-pattern>/*</url-pattern>配置。数据的完整性 我们都知道数据的完整性最主要的体现就是提交的数据不能为空,不能是“脏数据“(借用数据库当中的术语)。例如:年龄本应该是integer类型的,如果输入String类型的话就违背了数据的完整性了。数据的验证除了前台的验证还有服务器端验证。前台的验证比较容易实现,通过js代码。但是前台的验证不是万能的,仅仅凭借前台的验证并不能保证整个项目的安全。还必须结合服务器端验证的双重防护。服务器端的验证是利用了struts框架的一个组件。 在web-inf目录下放置了验证的配置文件系统测试在完成了程序的编写工作后,接下来将进行软件的测试,这里说的软件,并不单单是指程序本身,还包括其他方面。测试和开发一样,也是一项技术性很强的工作,有着很多的技巧。软件测试是软件质量保证的主要活动之一,因此,测试的质量直接影响软件的质量。见文献【9】。测试的定义及目的软件测试就是在软件投入运行前,对软件的需求分析,设计规格说明和编码的最终复审,是保证软件质量的关键步骤。如果要给软件测试下定义,可以这样将,软件测试是为了发现错误而执行程序的过程。测试的目的在于将软件设计时设计者与程序开发者之间理解不一致的地方,功能与需求不一致的地方,不符合逻辑思维的情况都反映给质量控制部门,由质量控制部门调配需求部门统一作出一个明确解答,再由开发人员进行修改和补充。测试的目标是以最少的时间和人力找出软件中潜在的各种错误和缺陷。测试的原则对于相对复杂的产品或系统来说,Zero-Bug是一种理想,Good-Enough是我们的原则。Good-Enough原则就是一种权衡投入/产出比的原则;不充分的测试是不负责任的;过分的测试是一种资源的浪费,同样也是一种不负责任的表现。我们操作的困难在于,如何界定什么样的测试是不充分的,什么样的测试是过分的。目前状况唯一可用的答案是:制定最低通过标准和测试内容,然后具体问题具体分析。测试的方法依据前面所说的测试对象,我们把测试划分为几个方面来进行测试。界面测试界面测试是测试过程中比较简单直观的一种测试方法,只要细心地按界面要求核对就行了。可这快往往是程序开发人员容易忽视和遗漏的地方,也是常常出Bug的地方。下面是界面测试中经常出现的几种Bug:错别字,即界面中的标题或者文本内容中出现了错别字。这种Bug如果测试人员不细心,和难找出来,可能会出现在提示信息或界面中。出现了一些根本读不懂的内容,一般多出现在程序的提示信息和一些较长的文本中。这种情况基本上出现在拼起来显示的提示中,页面的简单陈述是通过变量拼组起来的,通过程序将字一个一个地输出出来。通常是因为程序中的控制错误或是程序开发人员对程序没有进行认真的自测,导致出现这种Bug。程序员自创的词语,,虽然意思对,但不符合界面的标准及需求。这种情况基本上是由于开发人员使用一些专业术语,并且混杂着自己的理解出现Bug,主要是由于开发过程中团队合作没又明确的分工,没有统一的规范用语。页面类似的内容中,明显有字体,字号不同的情况,使界面整体风格看上去不一致,这种情况只出现在没有CSS定义的情况下,或是已经定义的CSS,开发人员在开发过程中没有调用。标题相近的程序及模块,把标题弄混。这种情况多是因为业务方面的定义名称很相似或很类似,并且业务实体方面也很类似,开发人员在开发过程中忽略了开发名称和模块,只单独地实现其功能。功能测试顾名思义,功能测试主要是测试程序模块是否实现了设计中所有要求的功能。功能测试中需要注意的有:查询功能中,有按单一查询条件进行查询的,也有按多个查询条件组合查询的,这里要注意多个查询条件之间的关系,还有一些常识性的问题,比如按月查询,闰年中二月的天数。录入功能中,需要注意的是前台设置的数值长度是否大于后台数值长度,以及前台与后台的数据结构是否相符,很多时候录入功能无法实现是由于这些原因。还有就是必须录入的字段的设置是否有误。测试删除功能中需要注意的是单击”删除”按钮后,一般会出现提示信息,询问是否确定删除。通常情况下,我们单
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024届海南省临高县新盈中学高三假期自主综合能力测试(一)数学试题
- 餐饮住房合同
- 不动产买卖合同解除协议模板
- 毕业生就业协议书入户地址
- 手术对骨骼健康的影响
- 防溺水模拟演练课件
- 山东省烟台招远市(五四制)2024-2025学年九年级上学期期中考试化学试题(含答案)
- 河北省石家庄市栾城区2024-2025学年七年级上学期期中生物学试题(含答案)
- 《化妆棉》规范要求
- 福建省泉州市安溪县2024-2025学年高三上学期11月期中测评试题 数学(含解析)
- 山体爆破施工方案(审核版)
- 普通话培训教案
- 基坑支护(护坡)工程冬季施工方案
- 英语六个简单句基本句型讲解(课堂PPT)
- 江苏省房屋建筑和市政基础设施工程施工招标评标办法
- 新建加油站工程施工组织设计方案
- 余姚农业信息综合服务系统需求说明
- 司法涉案目的评估指南
- 光伏电站消纳利用率计算导则
- 焓熵图(膨胀线)
- 前后鼻音生字表
评论
0/150
提交评论