




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE本科生毕业设计(论文)(2011届)基于SSH框架的公司内务管理系统的分析与设计基于SSH框架的公司内务管理系统的分析与设计摘要:文章首先论述了公司内务管理系统的概念和国内外的应用现状,通过对本公司内务管理现状的分析,针对其存在的不足,设计出符合本公司业务流程的内务管理系统。旨在通过本内务管理系统,提高公司的内务管理效率,降低成本,解决业务量和人员数量迅速增长所带来的问题,提高公司的经济效益。关键词:内务管理系统;分析与设计TheAnalysisandDesignofInteriorManagementSystemofCompanyBasedonSSHFrameworkAbstract:Thisarticlefirstdiscussestheconceptofinteriormanagementsystemofcompanyandthestatusofapplicationathomeandabroad.Throughtheanalysisofthecurrentsituationoftheinteriormanagementofourcompany,inviewofthedeficiency,designedtheinteriormanagementsysteminaccordancewiththecompanybusinessprocess.Throughthisinteriormanagementsystemtoenhancethecompany'sinteriormanagement,efficiencyandreducethecost,solvetheproblembroughtaboutbytherapidgrowthquantityofportfolioandpersonnelthequestion,enhancebenefitofthecompany'seconomic.Keywords:thesystemofinteriormanagement;AnalysisandDesign.
目录TOC\o"1-2"\h\z\u引言 1一、绪论 1(一)公司内务管理系统的概念和应用现状 1(二)目前国内企业级开发技术 2二、公司内务管理系统需求分析 2(一)需求分析 2(二)主要功能设计 3三、数据库的分析与设计 7(一)数据库需求分析 7(二)数据库设计 8四、系统设计 11(一)系统概述 11(二)系统框架设计 12(三)开发环境 16(四)JSP技术 16五、系统开发关键技术 17(一)分页功能实现 17(二)文档上传 19(三)动态插入html 20六、开发总结与展望 21参考文献 22致谢 23PAGE23基于SSH框架的公司内务管理系统的分析与设计引言内务管理系统是一个企业不可缺少的部分,它对于管理者对企业的管理起着关键的作用。但一直以来很多公司对于公司的管理还停留在人力的基础上,这种管理方式效率低下,事情一多时间一紧就容易混乱,这对公司的管理和运作带来了不少的困难。近年来,全球的信息技术发展迅猛,特别是以计算机互联网络Internet为主的计算机网络及其应用系统在全球迅速的推广和使用,使人们处理事务和获取信息的方式发生了巨大的变化,深刻地影响着人们的生活、学习和工作。并随着经济和社会的飞速发展,公司的软硬件环境也发生着巨大的变化。公司人员增多,业务量增多,各种信息流也急剧增多,这对公司来说既是机遇,更是挑战,传统的管理模式已经不再适应[1]。作为计算机应用的一部分,使用计算机对公司内务进行管理,比手工管理更有优势。例如,存储量大、检索速度快、安全、成本低。这些优势可以极大地提高内务管理的效率,达到公司管理的正规化、科学化。因此,公司内务管理系统是顺应时代发展潮流,实现管理科学化、正规化的重要措施,为处理公司内务管理提供有力的保证。一、绪论(一)公司内务管理系统的概念和应用现状内务管理就是企业内部事务管理的简称,主要包括行政、财务、人事、考勤等,不包括技术性的管理。内务管理系统旨为处理企业内部事务管理,提高企业管理的效率、可靠性、安全性,降低成本的管理系统。内务管理系统在国外已非常普及,尤其是在美国、欧洲和日本等发达国家,他们起步早、发展速度快,依托先进的通信技术、计算机技术等,内务管理系统技术正不断地被提升,所涉及的行业也不断地在扩张。在国内,内务管理系统也日趋成熟,不断被应用,所涉及的行业也在迅速扩张。例如,酒店内务管理系统、图书馆内务管理系统、学生宿舍内务管理系统、社区服务内务管理系统、警队内务管理系统甚至出现了载人航天器的内务管理系统等等举不胜举。由此可见,内务管理对于各行各业都起着至关重要的作用,内务管理系统能够很好的解决内务管理问题,已经被人们广泛的认同,它正不断地被应用到各行各业的工作中,并且快速的发展着。(二)目前国内企业级开发技术J2EE技术J2EE技术在国外已经得到了广泛的应用,在大型企业中随处可见。而在国内,J2EE才刚刚兴起,并不断地被越来越多的企业所应用,并且体会到了J2EE技术有带来的变化。企业级开发所涉及的事务繁杂,信息量大,业务流程多,用户数量庞大,系统的安全性对其具有很重要的意义。作为企业级的应用,系统的功能不但要强大,运行要稳定,还必须能够满足今后企业业务需求的变化所带来的各种问题,便于维护和扩张。为了满足企业级应用的需求,Sun公司推出了J2EE技术。该技术客服了传统的Client/Service模式的弊病,迎合了Browser/Service架构的潮流,为应用Java技术开发服务器端应用提供一个平台独立的、可移植的、多用户的、安全和基于标准的企业级平台,从而简化企业级应用的开发、管理和部署。MVC架构作为J2EE企业级应用体系架构的主体,是Model/View/Control的缩写。它将代码分成业务逻辑层、控制层、用户界面,增强了代码的扩展性和稳定性。由于代码分为了三个层,开发人员可以同时进行三个层代码的编写和设计,小组成员也可以根据自己擅长选择开发的模块,可以大大提高项目开发的进度。二、公司内务管理系统需求分析(一)需求分析近年来随着公司的发展,公司的业务量和员工数量正在大幅速增长,目前规划在3年内从600人扩张到3000人,员工数量的急剧增长给公司的内务管理带来了一定的难度,而GE部门又是本公司最大的部门,拥有300位多员工,为了适应员工数量增长在内务管理上所引发的各种问题,急需一个内务管理系统来进行管理。以下为主要需求:1、活动管理:GE部门每星期都会有各种各样的活动(比如爬山,烧烤,还有运动会等等)。目前活动都是通过发邮件通知,然后再一个个去问,通过纸张记录报名的员工。这样费时又费力,所以需要一个具有发布活动和报名的功能的系统。2、文档上传、搜索以及下载:员工数量的大幅上涨必定伴随着新员工的大量涌进,而GE部门又是杭州区最大的部门,并且公司的流程很多很复杂,新员工刚到来时根本不知道要做什么怎么做,老员工也不会有很多时间来帮助新员工,所以就需要一个可以让他们查询相关内容的系统。(二)主要功能设计公司内务管理系统的功能图如图2-1所示:公司内务管理系统公司内务管理系统后台前台后台前台登录活动查看及报名员工管理任务管理活动发布文档发布信息查询登录活动查看及报名员工管理任务管理活动发布文档发布信息查询个人信息图2-1公司内务管理系统功能图详细功能介绍:1、前台(1)登录:员工可以在登录页面通过输入自己的员工号和密码进行登录,后台主页会根据登录的权限来显示不同的页面。普通员工显示为个人主页、信息查询、文档发布和活动发布,普通员工以上显示为个人主页、员工管理、任务管理、信息查询、文档发布和活动发布。(2)活动查看及报名:首页显示已发布的并被审核通过的各类活动,员工可以查看活动的具体信息以及参加报名的员工,登录后亦可以参加报名。功能如图2-2所示:活动查看活动查看及报名查看活动报名查看活动报名情况况活动查看活动报名图2-2活动查看及报名功能图2、后台:(1)个人信息:此模块用来提供给员工编辑自己的信息,比如修改初始密码、上传照片以及其他信息的填写。功能如图2-3所示:个人信息个人信息编辑其他个人信息修改密码上传照片编辑其他个人信息修改密码上传照片图2-3个人信息功能图(2)信息查询:登录后可点击信息查询页面,此页面为用户提供一个搜索输入框,在此搜索输入框内可以输入关键字进行查询,查询结果以条目形式显示,可点击查看详细信息,假如在详细信息页面附有附件,可点击下载。功能如图2-4所示:信息查询信息查询信息查询详细信息查看信息查询详细信息查看图2-4信息查询功能图信息查询页面如图2-5所示:图2-5信息查询页面文档下载页面如图2-6所示:图2-6文档下载页面(3)文档发布:此模块员工可以上传各种文件,比如PPT、Word文档、Flash、Media和各类图片等等,并附有编辑器可供用户编辑内容。每个文档都有相应的主题,可在信息查询页面被查询和下载。功能如图2-7所示:文档发布文档发布其他编辑信息文档上传其他编辑信息文档上传图2-7文档发布功能图(4)活动发布:此模块分为活动发布和我的活动两个模块,活动发布用来发布各类活动,我的活动可以查看自己发布的所有活动和本人发布活动的报名情况。功能如图2-8所示:活动发布活动发布活动发布我的活动我的活动报名情况活动发布我的活动我的活动报名情况图2-8活动发布功能图(5)任务管理:此模块用来管理各种活动,且只有普通员工以上的级别才能看到。例如在活动发布页面发布的活动会先在此页面显示,只有当被审核通过后,才会显示到前台首页。审核人也可以查看自己一共审核通过了多少活动以及拒绝了多少活动。功能如图2-9所示:任务管理任务管理任务审批审批结果查看任务查看任务审批审批结果查看任务查看图2-9任务管理功能图(6)员工管理:该模块用来管理员工信息,本内务管理系统没有注册功能,员工的信息由项目经理通过登录后台后在员工管理页面处添加,用户名为员工号,初始密码都一致。项目经理的用户名和密码直接通过数据库添加。只有普通员工以上的级别才能看到,主要用来添加用户名和密码。员工管理页面如图2-10所示:图2-10员工管理页面三、数据库的分析与设计(一)数据库需求分析该模块主要研究用户在实际运用中会有哪些具体操作、操作权限以及操作的方法等等。通过多次讨论我们得知,不同权限的用户可得知不同的信息和进行不同的操作。1、普通员工需得的信息:(1)活动情况:本人发布的活动内容和具体信息,参加报名某活动的的员工信息。(2)文档上传:本人发布的文档内容和具体信息,以及该文档目前被审批的情况(文档发布审批需经过PL(项目Leader)/PM(项目经理)两步流程),发布者可看到每个发布文档目前已经审批到哪一步。2、普通员工以上级别的用户需得的信息:需要本人审批的活动,包括活动审批和文档审批。3、普通员工的操作:(1)修改自身的信息,如密码、生日、性别等等。(2)添加活动内容信息,如活动的主题、举行日期、具体的活动内容等等。(3)添加文档信息,如文档的主题、文档内容、具体的文档等等。4、普通员工以上级别用户的操作:添加员工信息,如用户名、密码等。(二)数据库设计本系统使用Oracle作为数据库,其在数据库管理功能、完整性检查、安全性、一致性方面都表现良好,并且支持大量多媒体数据及提供了新的分布式数据库能力。是一款功能非常强大的数据库。数据库设计(DatabaseDesign)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。在数据库领域内,常常把使用数据库的各类系统统称为数据库应用系统。根据以上的需求分析,系统数据库中与活动相关的表格的设计结果如表3-1、表3-2、表3-3、表3-4、表3-5、表3-6所示。表3-1ANYUSER.ANY_ROLE(用户角色种类表)中文解释字段名字段类型备注用户角色种类号ROLE_IDNUMBER<pk>用户角色编码ROLE_CODEvarchar(20)用户角色描述ROLE_DESCvarchar(50)创建日期CREATE_DATEDATE创建人CREATE_BYvarchar(50)更新日期UPDATED_DATEDATE更新人UPDATED_BYvarchar(50)表3-2ANYUSER.ANY_EMP_ROLE(用户角色表)中文解释字段名字段类型备注用户员工号EMPLOYEE_IDNUMBER用户角色种类号ROLE_IDNUMBER表3-3ANYUSER.ANY_EMPLOYEES(用户信息表)中文解释字段名字段类型备注用户员工号EMPLOYEE_IDNUMBER<pk>用户员工号EMPLOYEE_NONUMBER员工中文名字EMPLOYEE_NAME_CHNvarchar(50)手机号码CELL_NUMBERvarchar(50)开始工作日期START_WORK_DATEvarchar(50)员工英文名字EMPLOYEE_NAME_ENGvarchar(50)座机号码TELL_NUMBERvarchar(50)加入TCS日期JOIN_TCS_DATEvarchar(50)离开TCS日期OUT_TCS_DATEvarchar(50)国家编号COUNTRY_IDNUMBER城市编号CITY_IDNUMBER个人描述SUMMARYvarchar(50)密码PASSWORDvarchar(50)TCS邮件TCS_MAILvarchar(50)加入GE部分日期JION_GE_DATEvarchar(50)表3-4ANYUSER.ANY_EVENT_LIST(活动列表)中文解释字段名字段类型备注活动号EVENT_IDNUMBER<pk>活动名称EVENT_NAMEvarchar(50)活动描述EVENT_DESCvarchar(200)开始时间START_DATEDATE结束时间END_DATEDATE费用REAL_COSTNUMBER费用出支单位REAL_COST_UNITvarchar(50)活动发布状态STATUS_IDNUMBERANYUSER.ANY_LOOK_UP<fk>活动发布人APPROVE_BY_IDNUMBER活动审批人ARRANGE_BY_IDNUMBER表3-5ANYUSER.ANY_LOOK_UP(活动审批状态表)中文解释字段名字段类型备注状态编号LOOKUP_IDNUMBER<pk>状态描述LOOKUP_DESCvarchar(50)状态类型LOOKUP_TYPEvarchar(50)创建人CREATED_BYDATE创建日期CREATED_DATEvarchar(20)更新人UPDATED_BYDATE更新日期UPDATED_DATEvarchar(50)表3-6ANYUSER.ANY_EVENT_EMPLOYYE(活动报名表)中文解释字段名字段类型备注活动编号EVENT_IDNUMBER报名的员工号JOIN_EMPLOYEE_IDvarchar(50)报名日期ENROLL_DATEvarchar(50)用户权限表关系图:图3-1用户权限表关系图ANYUSER.ANY_EMPLOYEES表的主键EMPLOYEE_ID和ANYUSER.ANY_EMP_ROLE表的主键ROLE_ID作为ANYUSER.ANY_EMP_ROLE表外键。ANYUSER.ANY_LOOK_UP表的主键作为ANYUSER.ANY_EMPLOYEES的外键。ANYUSER.ANY_EMPLOYEES表的COUNTRY_ID、CITY_ID和LOCATION_ID字段都来自于ANYUSER.ANY_LOOK_UP表。ANYUSER.ANY_LOOK_UP是状态表,包含各种状态,比如员工所在城市、国家,或者活动发布、文档发布所进行的状态,比如是被拒绝或者通过等等。活动发布于审批表关系图:图3-2活动发布于审批表关系图ANYUSER.ANY_EVENT_EMPLOYYE是活动报名表,ANYUSER.ANY_EVENT_LIST的主键EVENT_ID和ANYUSER.ANY_EMPLOYEES的主键EMPLOYEE_ID作为ANYUSER.ANY_EVENT_EMPLOYYE的外键。ANYUSER.ANY_EMPLOYEES的主键EMPLOYEE_ID也作为ANYUSER.ANY_EVENT_LIST的外键分别表示为活动发布人和活动审批人。四、系统设计(一)系统概述随着Internet技术的不断进步,Web信息发布和检索技术迅速发展起来,系统体系结构由原来的C/S主从结构发展到了B/S(Brower/Server/DBServer)多级分布结构,B/S结构极大的减轻了客户机的工作,将主要工作放在服务器端,对数据库的访问和应用程序的执行都在服务器完成,本内务管理系统也采用B/S结构。其工作原理图如下:BrowerWebServerDatabaseServer图4-1B/S结构原理图采用B/S结构相比于C/S结构不必要开发专门的客户端软件,所有代码都在服务器端,客户只需要使用浏览器即可,操作十分方便,并且系统运行稳定、安全、可靠、可扩展强。(二)系统框架设计本系统采用当前最热门的SSH框架来进行开发。SSH框架整合开发是指整合Struts,Spring,Hibernate三大主流框架来进行开发,使用Spring的(IOC)容器来负责创建和管理组件,包括业务控制器,业务逻辑组件和DAO层组件。这些组件都处于Spring的(IOC)容器中,实现了层间低耦合,具有高扩展性、高性能和高安全性的特点,使J2EE企业级开发更加快速。其架构图如下:图4-2:SSH体系结构图以本系统的活动发布为例:用户可以在活动发布页面(Web浏览器)输入活动名称、活动日期、活动地点及具体活动内容信息,当点击提交按钮后,Web浏览器端的信息首先会提交给Struts框架中的Action(控制器),该控制器负责接收来自ActionServlet的请求,并根据该请求调用模型的业务逻辑方法(Service)处理请求,业务逻辑方法再去调用Dao方法(持久层)实现对数据库的操作。而Struts和Hibernate都是配置在Spring中的ApplicationContext.XML配置文件中,由Spring来控制,以下具体说明三大框架在系统中的应用。首先来阐述Struts框架在本系统中如何进行业务逻辑控制,Struts框架是一种符合MVC范例的JSP开发技术,是对JSP开发技术的继承和发展,包含了丰富的标记库和独立于该框架工作的实用类程序。它将页面显示,业务逻辑和数据处理的功能在逻辑上分开,降低耦合。它包含一个controllerservlet,能将用户的请求发送到相应的action对象,然后选择相应的JSP文件返回客户端。Struts框架体系结构如图4-3所示:业务逻辑Action业务逻辑Action控制器ActionServlet请求调用浏览器配置文件浏览器配置文件Struts-Config.xml模型Aplicationstate模型Aplicationstate视图JSP视图JSP响应图4-3struts体系结构Struts框架包含三个部分:(1)模型Model:由ActionForm和JavaBean组成,其中ActionForm用于封装用户的请求参数,封装成ActionForm对象,该对象被ActionServlet转发给Action,Action根据ActionForm里面的请求参数处理用户的请求。JavaBean则封装了底层的业务逻辑,包括数据库访问等。例如在本系统中EventAction是用来处理所有与活动有关的事务的类,其中有一个doadd()方法用来添加活动。假如在JSP页面提交了一个action名为event_doadd.action的页面(action名配置在struts.xml中<actionname="event_*"class="eventAction"method="{1}">eventAction又配置在Spring框架中),ActionServlet则会进行控制,进而判断出要去调用哪一个action类,这里调用的是EventAction类,而ActionForm能够获取该JSP页面提交的所有信息并传给这个action类,可以在该Action中定义一个属性为AnyEventList类型的变量,privateAnyEventListevent它的getEvent()会自动获得来自JSP有关AnyEventList类型的所有信息并附值给event,只需如下代码就可以实现对Service的调用。publicStringdoadd(){ intresult=service.add(event);}(2)View部分(视图JSP):该部分采用JSP实现。Struts提供了丰富的标签库,通过标签库可以减少脚本的使用,自定义的标签库可以实现与Model的有效交互,并增加了现实功能。(3)Controller组件(ActionServlet):在Struts中,ActionServlet发挥了一个控制器的作用,用于接受用户请求,并选择相应的业务逻辑,然后把相应结果送回客户端,在本系统中的例子已经在Model部分阐述。Hibernate(持久层)在本系统中实现对数据库的操作,Hibernate作为一种开放源代码的对象-关系映射(ORM)框架,实现了对JDBC的轻量级对象封装,使JAVA程序员可以方便的用对象编程的思想将持久性对象映射到关系数据库,而不必花大量的开发时间去更新和维护复杂的数据持久层。它自身通过properties配置文件和XMLMapping影射文件将类影射到数据库,而不必使用JDBC和SQL进行数据的操作,实现对关系数据库的持久化操作。Hibernate框架架构如图4-4所示:应用层应用层持久层持久层HibernateHibernateXMLMappingXMLMapping配置文件数据库数据库图4-4Hibernate体系结构图由于Hibernate的封装大大的简化了本系统对数据库的操作。Hibernate的核心为上图的持久层一共有5个接口,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五个核心接口在本系统中的具体应用分别加以介绍。(1)Session接口:Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句),相当于JDBC中的Connection。在纯Hibernate框架中Session负责调用述据的存储,例如添加活动可以写成Session.save(event);而在SSH框架中便可以写成getHibernateTemplate().save(event);不需要再去获得Session,因为在Spring中DAO类继承了HibernateDaoSupport类,而在HibernateDaoSupport类里面有个属性hibernateTemplate;不过两者最终调用的都是Session.save()方法。(2)SessionFactory接口:SessionFactory接口负责初始化Hibernate,配置在hibernate.cfg.xml中具体配置信息见Configuration接口,用来获得Session。(3)Configuration接口:Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象,对于纯Hibernate框架而言,该接口配置在hibernate.cfg.xml中,在该xml配置文件中name属性固定,程序员只需根据各自数据库的具体链接,例如数据库地址、用户名、密码等给value赋于相应的值即可,具体配置如下:<hibernate-configuration> <session-factory> <propertyname="driverClassName" value="oracle.jdbc.driver.OracleDriver">//数据库驱动类 </property> <propertyname="url" value="jdbc:oracle:thin:@99:1521:icamchn199">//数据库链接地址 </property> <propertyname="username"value="icam"></property>//用户名 <propertyname="password"value="icam"></property>//密码 </session-factory></hibernate-configuration>在SSH框架中配置在配置有所不同,在介绍Spring框架时再做介绍。(4)Transaction接口:Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。在本系统中没有涉及。(5)Query和Criteria接口:Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。例如要查询AnyWorkflowList中wkfId的最大值:Queryq=getHibernateTemplate().getSessionFactory().openSession() .createQuery("selectmax(wkfId)fromAnyWorkflowList");Spring框架的核心是反转控制模式(IOC:InversionofControl)和面向方面编程(APO:Aspect-OrientedProgramming)的实现解决了许多在以往J2EE应用开发中的常见问题。Spring使用IOC来实现松耦合,减轻组件之间的依赖关系。简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。这里讲在Spring框架中对于Struts框架里eventAction的配置,具体配置如下:<beanname="eventAction"class="com.tcs.gedev.anysearch.action.EventAction"scope="prototype">//class对应的是该eventAction的具体物理路径<propertyname="service"ref="eventservice"/>//在该Action中配置Service</bean><beanid="eventservice"class="com.tcs.gedev.anysearch.active.serviceimpl.EventServiceImpl"><propertyname="eventdao"ref="eventdao"></property>//在该Service中配置Dao</bean><beanid="eventdao"class="com.tcs.gedev.anysearch.active.daoimpl.EventDaoImpl"><propertyname="sessionFactory"ref="sessionFactory"></property></bean>//在该Dao中配置数据库连接工具sessionFactory对于数据库连接的配置如下: <beanid="dataSource" class="mons.dbcp.BasicDataSource"> <propertyname="driverClassName" value="oracle.jdbc.driver.OracleDriver">//数据库驱动类 </property> <propertyname="url" value="jdbc:oracle:thin:@99:1521:icamchn199">//数据库链接地址 </property> <propertyname="username"value="icam"></property>//用户名 <propertyname="password"value="icam"></property>//密码 </bean> <beanid="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <propertyname="dataSource"> <refbean="dataSource"/>//将上述的dataSource配置给sessionFactory </property></bean>通过以上配置Sping可以把很多东西放在它的容器里进行管理,减轻组件之间的依赖关系,降低耦合。(三)开发环境1、软件环境:操作系统:MicrosoftWindowsXP开发软件:MyEclipse8.0数据库:Oracle9iPL/SQL2、硬件环境:XP系统计算机一台(四)JSP技术本系统Web浏览器页面采用JSP,JSP(JavaServerPages)是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。五、系统开发关键技术(一)分页功能实现1、JavaBean:Hibernate有自带的分页查询功能,我们可以查询往方法里外加传入offset(从第几条记录开始查询)和length(一次查几条)这两个参数,Hibernate每次只需查询从offset记录数开始的length长度条数的记录,而不必在点击下一页时每次都去查询出所有的记录再进行分页。publicPageBeanqueryForPage(intpageSize,intpage,Object[]values){intallRow=eventlistdao.selectneedapprovecount(values);//总记录数inttotalPage=PageBean.countTotalPage(pageSize,allRow);//总的页数finalintcurrentPage=PageBean.countCurrentPage(page);//当前页数finalintoffset=PageBean.countOffset(pageSize,currentPage);//当前页开始记录finalintlength=pageSize;//每页显示的记录条数List<AnyEventList>list=eventlistdao.findNeedApproveactive(hql,offset,length,values);//"一页"的记录PageBeanpageBean=newPageBean();//new一个PageBean对象pageBean.setPageSize(pageSize);//设置pageSizepageBean.setCurrentPage(currentPage);//设置currentPagepageBean.setAllRow(allRow);//设置allRowpageBean.setTotalPage(totalPage);//设置totalPagepageBean.setList(list);//设置list,list为查询结果集returnpageBean;//只返回给Action};2、Action:publicStringtolist(){intpage=this.getPage();//来自JSP页面,值为当前页数PageBeanpagebean=eventservice.queryForPage(5,page,values);//pagebean的值由JavaBean返回getRequest().setAttribute("pagebean",pagebean);//在JSP页面可以获得pagebean的值};3、JSP页面:<table><tr><%if(1==((PageBean)request.getAttribute("pagebean")).getCurrentPage()){%>//如果当前页数等于1<tdwidth="150px">第一页上一页</td><%}%><%if(1!=((PageBean)request.getAttribute("pagebean")).getCurrentPage()){%>//如果当前页数不等于1<tdwidth="150px"><ahref="index_tolist.action?page=1">第一页</a><ahref="index_tolist.action?page=${pagebean.current1}">上一页</a></td><%}%><%if(((PageBean)request.getAttribute("pagebean")).getTotalPage()!=((PageBean)request.getAttribute("pagebean")).getCurrentPage()){%>//如果总的页数不等于当前页数<tdwidth="150px"><ahref="index_tolist.action?page=${pagebean.currentPage+1}">下一页</a><ahref="index_tolist.action?page=${pagebean.totalPage}">最后一页</a></td>//page值会被Ation获取<%}%><%if(((PageBean)request.getAttribute ("pagebean")).getTotalPage()==((PageBean)request.getAttribute("pagebean")) .getCurrentPage()){%><td>//如果总的页数等于当前页数下一页最后一页</td><%}%></tr></table>分页数据流程图:JavaBeanAction类JSP页面(4)(3)JavaBeanAction类JSP页面(1)(2)图5-1分页数据流程图(1)Jsp页面通过链接<ahref="index_tolist.action?page=${pagebean.current1}">上一页</a>将page值传到对应的Action中。(2)Action调用相应的Service方法再去调用与之配对的Dao(JavaBean)方法,将Page值与其他需要的值传给Dao方法,例如PageBeanpagebean=eventservice.queryForPage(5,page,values)传了三个参数给Dao方法。(3)Dao中的queryForPage()方法会通过returnpageBean,将查询值返回给Action。(4)Action中通过getRequest().setAttribute("pagebean",pagebean)此方法将值传给JSP页面。分页显示如图5-2所示:图5-2分页显示(二)文档上传文档上传主要涉及三个类File、InputStream及FileOutputStream,File主要用来设置上传路径,InputStream用来获得上传的文件信息,而FileOutputStream可以将InputStream获得的文件信息写到File配置的路径中。publicvoidprocessUploadedFile(FileItemitem,HttpSessionsession){StringfileName=item.getName().substring(item.getName().lastIndexOf("\\")+1);//获得上传文件的文件名Filefile=newFile("D:/upload/",fileName);//创建File对象,将上传得文件保存到D:\\upload文件夹下InputStreamin;try{in=item.getInputStream();//获得输入数据流文件FileOutputStreamout=newFileOutputStream(file);//将该数据流写入到指定文件中byte[]buffer=newbyte[4096];//Toholdfilecontentsintbytes_read;while((bytes_read=in.read(buffer))!=-1)//ReaduntilEOF{out.write(buffer,0,bytes_read);//每次写入buffer长度,偏移量为0,已经写入的长度bytesRead+=(long)bytes_read;}}};文档上传页面如图5-3所示:图5-3文档上传(三)动态插入html通过JS动态的调用不同的框架页面,当点击某个链接如个人设置时,会触发一个JS方法,该方法会去动态的调用与个人设置相关的JSP页面,而不必刷新整个页面。JSP代码<liid="man_nav_1"onclick="list_sub_nav(id,'个人首页')"class="bg_image_onclick">个人首页</li><liid="man_nav_2"onclick="list_sub_nav(id,'个人设置')"class="bg_image">个人设置</li>functionlist_sub_nav(Id,sortname){ showInnerText(Id);//调用showInnerText()方法,并将ID传入 showInnerJsp(Id);//调用showInnerJsp()方法,并将ID传入}functionshowInnerJsp(Id){ varswitchId=parseInt(Id.substring(8));//取id的第8位取出来的值为1、2、3等。 varshowText="对不起没有信息!";//默认信息 switch(switchId){ case1://switched等于1 showText="后台管理系统!";//根据id对showText附值 break;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度冲孔桩机操作员岗位安全教育与责任书
- 2025版两人合伙创办艺术画廊合作协议范本
- 2025房产销售经理培训与职业发展规划合同
- 地理信息技术在2025年初中地理学业水平考试中的应用模拟试题解析
- 二零二五年住宅租赁合同补充协议书
- 2025年长春市事业单位招聘考试综合类专业能力测试试卷(物流类)
- 2025版智能穿戴设备研发计件工资劳动合同参考范本
- 二零二五年度个性定制装修合同保密条款
- 二零二五年度二手车买卖合同特别关注车辆交易合同格式
- 2025版互联网金融服务保证担保借款合同书
- GB/T 45236-2025化工园区危险品运输车辆停车场建设规范
- 川教版信息技术七年级上册全册教案
- 眼外伤病人的护理查房
- 广东省工程勘察设计服务成本取费导则(2024版)
- 学校食堂配送服务方案
- 2025年绿色能源项目合作协议范本3篇
- 计算机应用基础培训课件
- DB37T 3657-2019 地质灾害治理工程设计技术规范
- 2022浪潮英信服务器NP5570M5用户手册 V1.0
- T-CBIA 010-2024 营养素饮料标准
- 绿色建筑绿色建材应用比例计算报告
评论
0/150
提交评论