已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
河南机电高等专科学校毕业论文目 录1 绪论11.1 选题背景11.1.1 办公自动化概述11.1.2 中小企业办公模式的现状21.2 研究意义31.3 设计技术及开发环境41.3.1 设计技术41.3.2 开发环境71.4论文的组织结构82 OA系统的整体设计92.1 概述92.1.1 概念及功能92.1.2 软件开发流程92.1.3 功能模块92.2 办公自动化OA的整体设计92.2.1 分层92.2.2 所用技术102.2.3 开发环境102.2.4 代码规范102.2.5 一些约定102.2.6 项目计划112.3 技术可行性112.3.1 Struts2页面技术122.3.2 Spring管理技术122.3.3 Hibernate技术123 系统功能整体设计143.1 系统整体功能设计143.2 流程说明143.3 流程总结:设计实体153.4 准备环境163.4.1创建数据库,要注意编码163.4.2 创建数据表163.5 新建web工程,并进行配置。173.5.1配置工具173.5.2配置格式化的代码样式173.5.3 MyEclipse工具使用说明183.6 配置数据库183.7基础功能183.7.1 设计BaseDao接口与BaseDaoImpl类183.8 分析增删改查功能194 系统功能模块的实现214.1登录模块214.2 系统管理模块244.2.1 岗位管理244.3 论坛管理285 系统功能的测试345.1功能测试出现345.2性能测试345.3测试计划355.4 测试用例355.4.1对身份验证功能进行测试355.5测试结果356 系统的不足及改进设想36结束语37致 谢38参考文献391 绪论中小企业办公自动化管理系统(OA),是伴随着Internet技术在各个领域的广泛应用,和各行各业企业信息化建设步伐的加快应运而生。当代社会已经进入信息时代,信息技术革命使社会的各个领域都发生了翻天覆地的变化,每个企业都必须紧跟时代的步伐,加强企业竞争力和提升现代化企业的管理能力,以适应整个社会的发展变化。企业对信息需求的增长,使计算机、网络技术已经渗透到企业的日常工作中。传统的企业内信息的交流方式早已不能满足企业对大量信息的快速传递与处理的需求,中小企业办公自动化管理系统的应用满足了企业的办公网络化、自动化的管理需求,提高了企业内部的管理水平,进而全面提升了企业在市场竞争中的综合竞争力。1.1 选题背景1.1.1 办公自动化概述办公自动化,英文Office Automation,简称OA,是办公信息处理的自动化,它利用先进的技术,使人的各种办公业务活动逐步由各种设备、各种人、机信息系统来协助完成,达到充分利用信息,提高工作效率和工作质量,提高生产率的目的。办公自动化由70年代末80年代初在我国提出,到现在已有近二十年的发展历史。由于办公自动化技术的不断发展,办公自动化新产品不断的出现,办公自动化的内涵也不断地丰富和发展。随着网络的高速发展,网络OA系统逐渐受到关注。一些大型企业集团(例如联想、海尔、苹果)正致力实现高层次的网络办公自动化,这将为他们节省大量的人力资源,节省大量的办公费用,大幅度提高办公效率。开发网络办公系统的市场前景是广阔的。大型企业需要高层次的网络办公自动化,他们往往会选择大型的软件公司合作开发,所需的开发费用和维护费用也是非常高昂的。这些高昂的费用并非大多数中小企业能承受得起的。中小型企业存在一个很大的低成本网络OA系统的需求,而我们可以开发这些低成本OA系统来满足这个需求。日常工作的所有内容都可以归入OA处理的范畴,如文字处理、申请审批、办公用品管理、公文管理、会议管理、资料管理、知识管理、电子邮件等等,总之只要是能够对办公有用的功能都可以有。(1) 传统办公模式图1-1 传统办公模式(2)网络办公模式图1-2 网络化办公模式转功能都是核心功能。同时企业办公主要是一个文件流转的过程,所有的办公事务都可以抽象成一个数据库对象。(3)WEB方式的办公自动化系统目前办公自动化系统较成熟的模式是客户/服务器方式,而新一代的办公自动化系统则应是Internet/Intranet方式,即B/S(Browser/Server,B/S)结构,才更能适应目前及未来的要求。1.1.2 中小企业办公模式的现状大部分中小型企业自成立至今,办公模式为传统的办公模式并主要以纸介质为主,在信息革命的浪潮中,显然已经远远不能满足高效率、快节奏的现代工作和生活的需要。如何实现信息处理的自动化和办公的无纸化逐步得到了公司领导的重视。而今公司普遍使用计算机来提高员工的工作效率,但是在需要许多员工一起协同工作的现代工作环境中,公司更需要提高整体的工作效率。利用网络通讯基础及先进的网络应用平台,建设一个安全、可靠、开放、高效的信息网络和办公自动化、信息管理电子化系统,为管理公司提供现代化的日常办公条件及丰富的综合信息服务,实现档案管理自动化和办公事务处理自动化,以提高办公效率和管理水平,实现公司各部门日常业务工作的规范化、电子化、标准化,实现信息的在线查询、借阅。最终实现“无纸”办公。1.2 研究意义应该说没有人怀疑计算机的出现给办公室职员带来的便利,但是对现代的办公自动化而言,其目的己经不局限于减轻员工的工作量,而是要将员工从繁琐的事务性工作中解放出来,用更多的精力去关注最重要的事情,从而提高企业的效率,增强企业的综合竞争能力。在这种办公模式下,企业的组织结构能够得到简化,各个部门在信息共享的基础上进行协作,便于明确各个部门甚至每个员工的责任,而决策层可以迅速综合来自各个方面的信息,并以此为依据制定企业的战略决策。从这个意义上讲,在市场竞争日趋白热化的今天,办公自动化己经不再是一种手段、一种工具,而成为决定企业生存发展的命脉。在传统的办公模式中,由于缺少重要的信息传递和工作流程环节,办公的各个部门之间无法实现信息共享和信息集成,从而难以实现各个部门之间的高效协作。在日常的办公过程中,比较容易出现以下的差错:一是各部门的信息传递和事务交接仍然由人工完成,容易出现差错;二是上下级和部门之间无法实现协同工作,难以及时沟通;三是信息和工作流程相互分离,缺少至关重要的随时记录,使工作监控和评估困难重重。可以想象,掺杂着如此大量的人工操作过程的事务处理方式根本无法适应现代化办公模式的需要。随着信息技术的发展和国内信息技术应用水平的提高,在办公过程中,传统的工作方式和审批模式己经难以满足新的需求,实现办公自动化已经是提高政府机关和企事业单位办公效率,规范化管理的必然趋势。办公自动化系统的带来的好处有:(1) 信息传递与沟通交流顺畅排除因职能、职位、距离等原因造成的信息联络不畅而带来的企业发展羁绊,通过构建内部通讯、信息发布与交流平台,实现多途径的联络与沟通,减少信息在途时间,提高信息的时效性,与此同时,缩短领导与职员之间,各部门之间的距离。(2) 规范工作管理,提高整体效率解决了跨地域跨部门多岗位间的业务处理诸多问题,有效避免工作中出现的脱节、延误、错办等情况,杜绝职责不清、工作推脱等怠工现象,实现网上协同办公,增强组织协调能力,提高团队协作能力。同时,加强了领导实时了解事务状态,实时掌控工作进度,强化了过程控制与监督,加强了工作管理。(3) 整合信息资源,实现知识管理打破“信息孤岛”,彻底改变文件丢失遗漏、管理分散、查找不方便等现象,解决因人事变动导致经验流失等问题,通过知识管理,有效整合并积累各类资源,实现再利用。(4) 增强凝聚力,提高响应能力在降低管理成本,促进管理进步的同时,能够培养全员信息化关注与参与意识,激发掌握和利用先进信息技术的热情,提高专业素质,形成全新的企业文化。办公自动化是信息社会的一种新型办公方式,它将现代化办公和计算机网络功能结合。随着信息技术的发展,办公自动化在行政企事业单位的管理、经营活动中发挥着日益重要的作用。通过网络,组织机构内部的员工可跨越时间、地点协同工作。通过办公自动化系统所实施的交换式网络应用,使信息的传递更加快捷和方便,从而极大地扩展了管理手段,实现了运营的高效。1.3 设计技术及开发环境1.3.1 设计技术自从Servlet技术产生以来,J2EE的Web开发技术与开发框架便层出不穷。这些技术和框架的产生,给我们的开发带来方便,此系统就是通过使用Struts2.1+Spring2.5+Hibernate3.3+JBPM3+Freemarker+AJAX等当前流利的框架技术实现的一个OA办公自动化系统。(1) Struts2页面技术Struts 1框架以ActionServlet作为核心控制器,整个应用由客户端请求驱动。当客户端向Web应用发送请求时,请求将被Struts 1的核心控制器ActionServlet拦截,ActionServlet根据请求决定是否需要调用业务逻辑控制器处理用户请求(实际上,业务逻辑控制器还是控制器,它只是负责调用模型来处理用户请求),当用户请求处理完成后,其处理结果通过JSP呈现给用户。对于整个Struts 1框架而言,控制器就是它的核心,Struts 1的控制器由两个部分组成:核心控制器和业务逻辑控制器。其中核心控制器就是ActionServlet,由Struts 1框架提供;业务逻辑控制就是用户自定义的Action,由应用开发者提供。对于大部分用户请求而言,都需要得到服务器的处理。当用户发送一个需要得到服务器处理的请求时,该请求被ActionServlet拦截到,ActionServlet将该请求转发给对应的业务逻辑控制器,业务逻辑控制器调用模型来处理用户请求;如果用户请求只是希望得到某个URL资源,则由ActionServlet将被请求的资源转发给用户。Struts 2与Struts 1相比,确实有很多革命性的改进,但它并不是新发布的新框架,而是在另一个赫赫有名的框架:WebWork基础上发展起来的。从某种程度上来讲,Strut2没有继承Struts 1的血统,而是继承了WebWork的血统。或者说,WebWork衍生出了Struts 2,而不是Struts 1衍生了Struts 2。因为Struts 2是WebWork的升级,而不是一个全新的框架,因此稳定性、性能等各方面都有很好的保证;而且吸收了Struts 1和WebWork两者的优势,因此,是一个非常值得期待的框架。(2) Spring管理技术Spring是一个开源框架,目前在开源社区的人气很旺,被认为是最有前途的开源框架之一。她是由Rod Johnson创建的,她的诞生是为了简化企业级系统的开发。说道Spring就不得不说EJB,因为Spring在某种意义上是EJB的替代品,她是一种轻量级的容器。用过EJB的人都知道EJB很复杂,为了一个简单的功能你不得不编写多个Java文件和部署文件,他是一种重量级的容器。Spring 的核心是个轻量级(Lightweight )的容器(Container ),它是实现IoC(Inversion of Control)容器、非侵入性(No intrusive )的框架,并提供AOP(Aspect-oriented programming )概念的实现方式,提供对持久层(Persistence )、事务(Transaction)的支持,提供MVC Web 框架的实现,并对一些常用的企业服务API(Application Interface) 提供一致的模型封装,是一个全方位的应用程序框架(Application framework ),除此之外,对于现存的各种框架(Struts、JSF、Hibernate 等),Spring 也提供了与它们相整合的方案(3) javascript技术JavaScript是一种基于对象(Object)和事件驱动(EventDriven)并具有安全性能的脚本语言。使用它的目的是与HTML超文本标记语言、Java脚本语言(Java小程序)一起实现在一个Web页面中连接多个对象,与Web客户交互作用。从而可以开发客户端的应用程序等。它是通过嵌入或调入到标准的HTML语言中实现的。它的出现弥补了HTML语言的缺陷,它是Java与HTML折衷的选择, JavaScript是依赖于浏览器本身,与操作环境无关,只要能运行浏览器的计算机,并支持JavaScript的浏览器就可正确执行。从而实现了“编写一次,走遍天下”的梦想。实际上JavaScript最杰出之处在于可以用很小的程序做大量的事。无须有高性能的电脑,软件仅需一个字处理软件及一浏览器,无须WEB服务器通道,通过自己的电脑即可完成所有的事情。(4) AJAX技术AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。Ajax不是一个技术,它实际上是几种技术,每种技术都有其独特这处,合在一起就成了一个功能强大的新技术。本系统主要使用XMLHttpRequest进行异步数据接收,即充当控制器的作用。(5) Hibernate技术在今日的企业环境中,把面向对象的软件和关系数据库一起使用可能是相当麻烦、浪费时间的。Hibernate是一个面向Java环境的对象/关系数据库映射工具。对象/关系数据库映射(object/relational mapping (ORM)这个术语表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。 Hibernate不仅仅管理Java类到数据库表的映射(包括Java数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和JDBC处理数据的时间。 Hibernate的目标是对于开发者通常的数据持久化相关的编程任务,解放其中的95%。对于以数据为中心的程序来说,它们往往只在数据库中使用存储过程来实现商业逻辑,Hibernate可能不是最好的解决方案;对于那些在基于Java的中间层应用中,它们实现面向对象的业务模型和商业逻辑的应用,Hibernate是最有用的。不管怎样,Hibernate一定可以帮助你消除或者包装那些针对特定厂商的SQL代码,并且帮你把结果集从表格式的表示形式转换到一系列的对象去。1.3.2 开发环境(1) JDK软件我们要开发J2EE的系统,却需要安装的是J2SE。J2SE的JDK是开发任何Java系统必须安装的工具包,而J2EE是指EJB、JSF等这些工具包,在不需要开发这些功能时是不需要安装的。(2) 数据库软件MySQLMySQL是最受欢迎的开源SQL数据库管理系统,它由MySQL AB开发、发布和支持。MySQL服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置(mass-deployed)的软件中去。它因为以下优点而广受欢迎。MySQL是一个数据库管理系统MySQL是一个关系数据库管理系统,MySQL是开源的MySQL服务器是一个快捷的、可靠的和易于使用的数据库服务器MySQL服务器工作在客户服务器或嵌入系统中有大量的MySQL软件可以使用在此系统中我们选用5.1.4进行开发。(3) Web服务器TomcatTomcat是Apache-Jarkarta的一个子项目,是一个免费的、开放源码的、支持JSP和Servlet技术的容器,它同时又是一个Web服务器软件。Tomcat很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能。Tomcat是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。在本系统中我们选用稳定版本Tomcat 6.0进行开发。(4) 集成开发工具Eclipse+MyEclipse是目前最流行的Java集成开发工具。Eclipse一经出现就以其快速、丰富的特性赢得了认可,其主要的属性有快速的性能、重构性能、快速修复错误、调整组织导入包、弹出窗口进行代码自动装配。由于功能强大,Eclipse一度成为Java IDE领域的霸主。它能够很好地与MySQL、Tomcat进行集成。本系统中我们选用MyEclipse8.0作为Eclipse的扩展开发工具。1.4论文的组织结构第一部分:开发背景。介绍了论文的选题背景、主要内容和研究意义。第二部分:OA办公系统的需求分析。介绍了系统的开发流程及所用技术。第三部分:OA系统的整体设计。对整个系统的结构和功能的介绍。第四部分:系统的功能实现。对登录、注册页面,以及浏览、查看帖子等功能实现的介绍。第五部分:系统测试。分析测试时可能遇到的问题及原因。第六部分:总结。对整个设计总结并分析不足。62 OA系统的整体设计可行性是系统开发的一项关键步骤,它是通过对整个系统的需求,技术及开发方法,以及开发人员,所需资金的综合考虑以评估对于该系统的开发是否符合实际。可行性分析包括:组织和管理上的可行性、技术可行性、经济可行性。2.1 概述2.1.1 概念及功能OA是Office Automation的缩写,OA系统是处理组织内部的事务性工作、辅助管理、提高办公效率的系统。 功能:日常工作的所有内容都可以归入OA处理的范畴,如文字处理、申请审批、办公用品管理、公文管理、会议管理、资料管理、知识管理、电子邮件等等,总之只要是能够对办公有用的功能都可以有。要根据用户的需求确定具体要有哪些功能。2.1.2 软件开发流程(1) 需求调研分析(2) 设计(概要设计、详细设计)(3) 编码(4) 测试(5) 部署与维护2.1.3 功能模块要做的具体功能模块有4个:组织机构管理、系统权限、内部论坛、审批流转。2.2 办公自动化OA的整体设计2.2.1 分层 View(表示层)Struts2, JQueryService(业务层)Spring, JBPMDao(数据访问层,处理层)Hibernate说明:上面层调用下面层,层与层之间使用接口。每一层中除了下一层的接口外,不能调用其层特有的类或接口。层与层之间传递数据可以使用Domain。2.2.2 所用技术Struts2 + Spring + Hibernate + jQuery + JBPM + JUnit2.2.3 开发环境操作系统Windows XP开发工具MyEclipse 8.6Eclipse、NetBeans、IntelliJ idea数据库MySQL 5.0.22Web容器Tomcat 6.0 浏览器IE 62.2.4 代码规范命名:使用驼峰命名法。类、接口:每个单词的首字母大写。例:MyDateConverter变量、方法:第一个单词的首字母小写,其他单词的首字母都大写。例:myDateConverter常量:全部字母都大写,单词之间使用_隔开。例,DEFAULT_PAGE_SIZE使用有意义的名称,慎用缩写。注释:在代码中加入适当的注释:说明步骤,与说明非简单逻辑。空行:在代码中加入适当的空行,就像写文章时要分段一样(增强可读性)。要格式化代码、一个java文件中的代码不要过多、一个方法中的代码不要过多。总之,要保证代码的有效、清晰、简洁。有效:这是第一目标,代码要是可以解决问题的。清晰:在有效的前提下,让代码结构与思路清晰。简洁:代码与逻辑应尽量的简单,不要是给别人讲别人都听不明白。2.2.5 一些约定工程中所有的文件都采用utf-8编码。所有的页面都是使用utf-8编码,这样方便解决乱码问题。乱码一般情况下是乱用编码产生的。实体的主键属性的类型使用Long型。2.2.6 项目计划如图2-1所示:图2-1项目计划2.3 技术可行性基于中小型企业的办公自动化系统的开发采用了先进成熟并且符合实际应用的开发方法,广泛应用于网站开发的网页开发工具Dreamweaver,MyEclipse,动态网页开发技术JSP,提供用户全新体验的AJAX技术,功能强大的数据库管理工具MySQL,采用最新最流行的框架技术Struts+Spring+Hiberate+AJAX+JBPM+Freemarker等,结合自己的实际开发能力,可以开发出较为完善的办公自动化系统。(1) 应解决的主要问题及技术要求(2) 收集系统开发所使用的足够的信息。(3) 按实际应用的可行性划分模块,确定模块功能。(4) 建立完善的数据库支持环境。(5) 使用JSP语言实现前台页面视图,使用AJAX技术实现数据与页面的整体实现,并实现与数据库之间的各项操作。(6) 各模块功能的协调及信息的沟通。(7) 各框架之间的整合,尤其是JBPM和SSH的整合。(8) JBPM复杂流程的实现,流程图。2.3.1 Struts2页面技术Struts 1框架以ActionServlet作为核心控制器,整个应用由客户端请求驱动。当客户端向Web应用发送请求时,请求将被Struts 1的核心控制器ActionServlet拦截,ActionServlet根据请求决定是否需要调用业务逻辑控制器处理用户请求(实际上,业务逻辑控制器还是控制器,它只是负责调用模型来处理用户请求),当用户请求处理完成后,其处理结果通过JSP呈现给用户。对于整个Struts 1框架而言,控制器就是它的核心,Struts 1的控制器由两个部分组成:核心控制器和业务逻辑控制器。其中核心控制器就是ActionServlet,由Struts 1框架提供;业务逻辑控制就是用户自定义的Action,由应用开发者提供。2.3.2 Spring管理技术Spring是一个开源框架,目前在开源社区的人气很旺,被认为是最有前途的开源框架之一。她是由Rod Johnson创建的,她的诞生是为了简化企业级系统的开发。说道Spring就不得不说EJB,因为Spring在某种意义上是EJB的替代品,她是一种轻量级的容器。用过EJB的人都知道EJB很复杂,为了一个简单的功能你不得不编写多个Java文件和部署文件,他是一种重量级的容器。2.3.3 Hibernate技术在今日的企业环境中,把面向对象的软件和关系数据库一起使用可能是相当麻烦、浪费时间的。Hibernate是一个面向Java环境的对象/关系数据库映射工具。对象/关系数据库映射(object/relational mapping (ORM)这个术语表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。 对于以数据为中心的程序来说,它们往往只在数据库中使用存储过程来实现商业逻辑,Hibernate可能不是最好的解决方案;对于那些在基于Java的中间层应用中,它们实现面向对象的业务模型和商业逻辑的应用,Hibernate是最有用的。不管怎样,Hibernate一定可以帮助你消除或者包装那些针对特定厂商的SQL代码,并且帮你把结果集从表格式的表示形式转换到一系列的对象去。3 系统功能整体设计3.1 系统整体功能设计表3-1 功能整体设计表模块功能说明组织与用户管理岗位管理增删改查客户端表单验证树状结构的设计与展示部门管理用户管理系统权限初始化权限权限数据,超级管理员分配权限给角色分配权限验证权限拦截每一个action请求,验证用户是否有权限访问网上交流-论坛版块管理用于对帖子进行分类看帖发帖回帖可以有很多回帖属于某个版块属于某个主帖文章管理增删改查审批流转(工作流)表单模板管理嵌套在系统流程当中,描述程序的开发流程工作流程审批流程管理审批流转表单查询3.2 流程说明(1) 充分了解需求,包括所有的细节,需要知道要做一个什么样的功能(2)设计实体/表正向工程:设计实体、映射文件 建表反向工程:设计表 映射文件、实体(3)分析功能分析到每个请求的粒度。得到的结果是我们需要处理多少种请求,其中每种请求对应一个Action方法。(4)实现功能创建Action,并定义出其中的方法。实现Action方法,并创建出所用到的新的Service方法。实现Service方法,并创建出所用到的新的Dao方法。实现Dao方法。创建并完成JSP页面。测试、运行完成3.3 流程总结:设计实体(1)有几个实体?一般是一组增删改查对应一个实体。(2)实体之间有什么关系?一般是页面引用了其他的实体时,就表示与这个实体有关联关系。(3)每个实体中都有什么属性?主键。一般属性。分析所有有关的页面,找出表单中要填写的或是在显示页面中要显示的信息等。特殊属性:为解决某问题而设计的属性。比如要显示年龄,但不会设计一个int age字段,而是一个Date birthday字段,年龄是在显示时实时计算出来的。关联关系属性。在类图中,关联关系是一条线,有两端,每一端对应个表达此关联关系的属性。有几个端指向本类,本类就有几个关联关系属性。完成3.4 准备环境3.4.1创建数据库,要注意编码使用MySql数据库。创建数据库时,要注意编码要支持中文。建表语句如下:create database itcastoa default character set utf8;show create database itcastoa;说明:需要先运行Mysql的配置向导,把编码配为GBK或UTF8。如果配成UTF8,在mysql命令行客户端中就有乱码,所以最好用GBK。3.4.2 创建数据表(1)用户表功能是统计登录管理的账户,不同的用户登录后显示的页面不同,用户表如图3-2所示:图3-2 用户表信息(2)角色表功能是用来统计每个用户具备哪些角色及操作的功能。如图3-3所示:图3-3 角色表信息3.5 新建web工程,并进行配置。3.5.1配置工具配置快捷键(1) 把Content Assist设为Alt+/(2) 把Word Completion 设为Alt+.(3) 其他常用快捷键说明:如表3-4所示:表3-4 快捷键Alt+/Content Assist代码提示Ctrl+T显示类的继承结构Ctrl+O列出类中的成员(成员变量、方法等)Ctrl+/注释/取消注释Ctrl+Shift+O导入要使用的包、并去除不使用的包Ctrl+Shift+F格式化当前文件中的代码/格式化选中的代码Ctrl+Alt+Up复制当前行到下面Ctrl+Alt+Down复制当前行到上面Ctrl+D删除当前行/删除选中文本占的所有行Shift+Enter相当于按End后再按Enter配置文件的默认编码设置工程的默认编码为UTF-8。配置JSP的默认编码为utf-83.5.2配置格式化的代码样式(1)使用Ctrl+Shift+F可以格式化代码。在WindowPreferencesJavaCode StyleFormatter中可以设置代码样式。 要把Java代码与注释的行宽设为130。(其他使用默认样式)(2)搜索XML Sources,修改xml的行宽为130。(不考虑打印的情况)3.5.3 MyEclipse工具使用说明导入工程时可以直接选择一个zip文档:FileImportExisting Projects into Workspace-Select archive file。工程改名后,发果发布到Tomcat下,对应的应用的名称不一定改变。这个名称是在MyEclipse Web中的Web Context-root中配置的。新建一个Web Project,并设置工程的编码为UTF-8。3.6 配置数据库修改Hibernate.cfg.xml中的数据库连接信息。并在hibernate.cfg.xml中做如下配置:trueupdate3.7基础功能3.7.1 设计BaseDao接口与BaseDaoImpl类每个实体都应有一个对应的Dao,他封装了对这个实体的数据库操作。例实体Dao接口实现类=User- UserDao- UserDaoImplRole- RoleDao- RoleDaoImplDepartment- DepartmentDao- DepartmentDaoImplArticle- ArticleDao- ArticleDaoImpl.图3-5 实体表之间关系图说明:实体的Dao接口要继承BaseDao接口。Dao的实现类要继承DaoImplBase类。也可以不继承指定的接口或类,这样就要自己写相应的方法。T getById(Long id)与List getByIdList(Long idList)不要合并为List getById(Long. ids),因为获取一个对象时也是返回List,不方便。3.8 分析增删改查功能增删改查共4个功能,需要6个请求。我们把一组相关的功能放到一个Action中,在这里就是一个Action中应有增删改查对应的6个方法:作用方法返回值页面-列表 list()listlist.jsp删除delete()toList添加页面addUI()addUIaddUI.jsp添加add()toList修改页面editUI()editUIeditUI.jsp修改edit()toListtoList结果的配置roleAction_list4 系统功能模块的实现对OA系统进行系统分析、数据库设计之后,本章将主要介绍系统各功能模块的设计及其实现。软件所实现的功能强弱是衡量一个软件的最根本的标准。通过对系统的全面分析并结合调研的情况,确定了本系统的功能模块图。我们先从系统总体结构设计介绍,接着分别对公用模块、客户界面、管理对功能模块加以描述。4.1登录模块用户和管理员都可以在此登陆,管理员只有通过这个窗口登陆后才拥有管理权限,用户只有通过此窗口登陆后才拥有用户的一些权限。用户登录页面如图4-1所示:图4-1 用户登录页面登录页面实现的部分代码如下:PublicclassCheckPrivilegeInterceptor extends AbstractInterceptor public String intercept(ActionInvocation invocation) throws Exception /获取当前登录用户Useruser=(User) ActionContext.getContext().getSession().get(user);/获取当前访问的URL(对应权限的URL)Stringurl=invocation.getProxy().getNamespace() + invocation.getProxy().getActionName();if(url.startsWith(/)url = url.substring(1);/一、当前未登录用户if(user = null)if(url.startsWith(userAction_login)/userAction_login,userActionUI/如果当前使用的就是登录功能,则放行return invocation.invoke();else/如果当前使用的是不登录功能,就转到登录页面return loginUI;/二、当前已登录用户elseif(user.hasPrivilegeByUrl(url)/如果有权限,就放行return invocation.invoke();else/如果没有权限,就转到提示页面。return noPrivilegeError;/检测本用户是否有指定名称的权限public boolean hasPrivilegeByName(String name)/如果是超级管理员,就有所有权限if(isAdmin()return true;/如果是其他用户,则有权限时才返回truefor(Role role : roles)/z循环当前用户的角色for(Privilege privilege : role.getPrivileges()if(privilege.getName().equals(name)return true;return false;/判断本用户是否是超级管理员public boolean isAdmin() return admin.equals(loginName); /检测本用户是否有指定url的权限public boolean hasPrivilegeByUrl(String url) /如果是超级管理员,就有所有权限if(isAdmin()return true;/如果有UI后缀,先去掉if(url.endsWith(UI)url = url.substring(0, url.length() - 2);/如果本URL不需要控制,则返回TrueListallPrivilegeUrls=(List) ActionContext.getContext().getApplication().get(allPrivilegeUrls);/需要控制的权限URL集合if(!allPrivilegeUrls.contains(url)return true;/如果是其他用户,则有权限时才返回truefor(Role role : roles)/z循环当前用户的角色for(Privilege privilege : role.getPrivileges()if(url.equals(privilege.getUrl()return true;return false;4.2 系统管理模块4.2.1 岗位管理岗位管理模块主要就是实现系统的添加、删除、修改和设置权限。页面如图4-2所示:图4-2 岗位管理页面部门管理、用户管理模块主要就是实现系统的添加、删除、修改和设置权限。页面如图4-3所示:图4-3 部门管理页面用户管理模块主要就是实现系统的添加、删除、修改和设置权限。页面如图4-4所示:图4-4 用户管理模块实现代码如下:/* 列表list()listlist.jsp删除delete()toList添加页面addUI()addUIaddUI.jsp添加add()toList修改页面editUI()editUIeditUI.jsp修改edit()toList */ControllerScope(prototype)public class RoleAction extends ModelDrivenBaseAction /*Resourceprivate PrivilegeService privilegeService;*/private Long privilegeIds;/* 列表 */public String list() throws Exception List roleList= roleService.findAll();System.out.println(roleList);ActionContext.getContext().put(roleList, roleList);/getModel();return list;/* * 删除 */public String delete() throws Exception roleService.delete(model.getId();return toList;/* * 添加页面 */public String addUI() throws Exception return addUI;/* * 添加 */public String add() throws Exception /1、新建对象,并设置属性Role role = new Role();role.setName(model.getName();role.setDescription(model.getDescription();/2、保存roleService.save(model);return toList;/* * 修改页面 */public String editUI() throws Exception /准备回显的数据Role role = roleService.getById(model.getId();ActionContext.getContext().getValueStack().push(role);return editUI;/* * 修改 */public String edit() throws Exception /1、从数据库中取出原对象Role role = roleService.getById(model.getId();/2、设置要修改的属性role.setName(model.getName();role.setDescription(model.getDescription();/3、更新数据库roleService.update(role);return toList;/* * 设置权限页面 */public String setPrivilegeUI() throws Exception /准备顶级权限的数据/List privilegeList = privilegeService.findAll();/ActionContext.getContext().put(privilegeList, privilegeList);List topPrivilegeList = privilegeService.findTopList();ActionContext.getContext().put(topPrivilegeList, topPrivilegeList);/准备回显的数据Role role = roleService.getById(model.getId();ActionContext.getContext().getValueStack().push(role);if(role.getPrivileges().size() 0)privilegeIds = new Longrole.getPrivileges().size();int index = 0;for(Privilege privilege : role.getPrivileges()privilegeIdsindex+ = privilege.getId();return setPrivilegeUI;/* * 设置权限 */public String setPrivile
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 深度解析(2026)《GBT 4324.25-2012钨化学分析方法 第25部分:氧量的测定 脉冲加热惰气熔融-红外吸收法》
- 深度解析(2026)《GBT 4074.21-2018绕组线试验方法 第21部分:耐高频脉冲电压性能》
- 2026年人教版小学二年级语文上册扩写句子基础训练卷含答案
- 2026年人教版初中七年级语文下册现代文概括内容卷含答案
- 深度解析(2026)《GBT 3374.2-2011齿轮术语和定义 第2部分:蜗轮几何学定义》
- 《JBT 10761-2020土方机械 压路机压实度测量仪》专题研究报告
- 《数据分析与可视化》习题4分析电商平台店铺销售数据习题及答案
- 2026高一化学上册第一二三单元第一次月考含答案及解析
- 《JBT 10506-2005内燃机 增压空气冷却器 技术条件》专题研究报告
- 2025至2026学年八年级政治下册第一次月考含答案及解析
- 【实用资料】马克思主义基本原理绪论PPT
- 贝叶斯公式课件
- 污水处理设备点检表
- 刑法案例分析课件
- 城市景观设计
- GB/T 39859-2021镓基液态金属
- GB/T 22923-2008肥料中氮、磷、钾的自动分析仪测定法
- GB/T 1921-2004工业蒸汽锅炉参数系列
- GB/T 18342-2001链条炉排锅炉用煤技术条件
- 2023年怀化市城市发展集团有限公司招聘笔试模拟试题及答案解析
- 静电防护安全知识精选优秀课件
评论
0/150
提交评论