基于Java的OA系统的设计与实现

2023-10-27

源码及论文下载:http://www.byamd.xyz/tag/java/

摘 要

学习和研究办公自动化中涉及到的知识和技术是实现办公自动化系统的前提条件。通过学习研究,掌握了其中的关键技术之后,结合自身的理解,对其做出了相应的表述。同时也成功的实现了系统中涉及到的一些模块。这些实现了的功能模块,在日常办公中都能被用到。具有一定的实用价值。

办公自动化(Office Automation,OA)的诞生离不开科技不断发展的趋势推动,虽然今天它已趋于完善。但在信息蓬勃发展的今天依旧是一项非常活跃和具备顽强生命力的技术。办公自动化在企业当中的应用具有无法取缔的重要意义。对办公自动化的学习和研究是有必要的。

办公自动化有很多的优点:避免对资源不必要的浪费,节约成本,高效管理等,它能让管理变得规范和科学。在查阅了很多与OA系统相关的资料后,对其进行了深入的学习。在了解到办公自动化现在的发展状况后,对学习和研究它的现实意义进行了深入的分析。

为了开发出更加完善的系统,本文以J2EE为技术基础,企业级的MVC设计模式为前提,科学的对系统进行了分析,阐述了OA系统的核心技术及其他工具的使用。在掌握Spring、SpringMVC、Mybatis等框架技术之后,运用Maven工具进行项目的管理,为办公自动化系统的开发做了充足的准备。

关键词:办公自动化,J2EE,Maven,SSM

*
*

Design and implementation of OA system based on Java

Abstract

Learning and studying the knowledge and technology involved in oa is the precondition to realize oa system. Through study and research, master the key technology, combined with their own understanding, make the corresponding expression. At the same time, some modules involved in the system have been successfully implemented. These realized the function module, can be used in the daily office. It has certain practical value.

The birth of Office Automation (OA) is driven by the continuous development of science and technology, although it has been improved today. However, it is still a very active and tenacious technology in today’s information boom. The application of office automation in enterprises is of great significance. The study and research of office automation is necessary.

Office automation has many advantages: avoid unnecessary waste of resources, save costs, efficient management, etc., it can make management become standardized and scientific. After consulting a lot of materials related to OA system, I made an in-depth study of it. After understanding the current development of office automation, the practical significance of learning and studying it is analyzed in depth.

In order to develop a more perfect system, this paper takes J2EE as the technical basis and the enterprise-level MVC design pattern as the premise, scientifically analyzes the system, and expounds the use of OA system’s core technology and other tools. After mastering Spring, SpringMVC, Mybatis and other framework technologies, I used Maven tool to manage the project and made sufficient preparation for the development of office automation system.

Key words: Office Automation, J2EE, Maven,SSM

第一章 前言

在技术发展和社会需求变更的推动下,办公自动化也在不断的成熟起来。随着信息爆炸时代的来临,为了挖掘、分析、传输和存储人们日常生活中所产生的各种数据以分析其潜在价值。各种技术的发展日新月异,其中通讯技术的发展尤为迅猛(5G已不在停留在概念上)。分布式数据库也得到了广泛的运用。这些技术的发展使得办公自动化有了更大的提升空间。

公文在传统的办公模式下,多是手工传递处理,这种方式存在安全性不足、信息难以进行统计和分析等弊端,最主要的还是协同办公难以实现。跟传统的办公模式相比,办公自动化有着效率高、资源共享及时、以及节约成本等优势。

现在的办公自动化系统,不止能为管理者的决策提供科学和正确的指导,还能提高领导的管理水平,同时推动了各个单位的信息化建设的进程。办公自动化在各个单位中都起着举足轻重的作用。

随着技术的发展和社会的进步,办公自动化的内涵和外延也在不断的发生变化。也就是说它是一个动态的定义。为了应对现代化办公模式及其需求的不断发展,这就对办公自动化的整体系统结构和处理能力以及运作平台提出了越来越高的要求。办公自动化是信息时代发展下的必然产物。在协同办公理念深入人心的当今社会,办公自动化的使用程度将成为一个国家现代化进程的重要指标和衡量标准。

1.1项目背景

目前国内外还存在着很多日常办公运用手工操作的企业和单位。这样将导致大量的信息不能得到及时的共享和充分的利用。而且随着时间的推移,不断累积的信息将成为企业和单位的一种负担,光是对信息的管理、分类、索引、利用就极其困难,对于企业和单位来说不仅是一种时间成本的投入,还是对人力和财力的损耗,最重要的是工作效率低下,决策者还难以从中挖取出有用的数据来用作决策的依据。长此以往,信息的不断累积对企业和单位来说将是有百害而无一利的。办公自动化的意义自然不言而喻。

过去的办公自动化系统,在当时的技术条件限制下存在很多的缺陷,早已不能胜任现代办公的需求。集成化程度低,不能实现充分的资源共享,系统韧性差等因素成为了其致命的缺点。特别是过去的这些办公软件,大都是静态的。由于不能适应信息时代的需求,导致了它们的应用范围有很大的局限性,应用效果也很差。因此在信息化时代下的办公自动化系统需要具备更强劲的功能。在降低企业成本,充分利用企业内部资源,加快业务流程,显著提高工作效率和应对环境变化等方面都要有良好的表现。

1.2 OA简介

办公自动化简称为OA(Office Automation)是集计算机科学、通讯技术、系统科学、行为科学为一体的综合性技术。现代的办公自动化系统采用的是Internet/Intranet技术,基于工作流的概念,使得企业内部的员工能够方便快捷地共享信息,高效地协同工作;改变传统复杂、低效的手工办公方式,以实现迅速、全方位的信息采集和信息处理,为企业的管理和决策提供科学的依据。企业实现办公自动化的程度也是衡量其实现现代化管理的标准。办公自动化不仅兼顾个人办公效率的提高,更重要的是能够实现群体系统工作。凭借网络,这种交流和协调几乎可以在瞬间完成。

1.2.1 办公自动化的国内外研究情况

不管在过去还是在现在,办公自动化的核心都是公文处理。由于公文处理本身的特性限制,这对办公自动化系统在公文处理的流程控制方面提出了更高的要求。

目前的办公自动化系统在企业中得到了广泛的运用,它的工作流管理自然也就延伸到日常办公,和事务处理流程中去了,比如会议的管理、财务报销审批、休假审批等等。

办公自动化系统通过对工作流的管理,使得公文在流转、审批、发布等方面极大的提高了其效率。实现了办公管理的规范化和信息管理的规范化,极大的降低了企业的运行成本。

现在国内主流的OA系统有泛微、蓝凌等,其主要功能模块见图1.1和图1.2:

img

图2.1 泛微OA系统功能模块图

img

图2.1 蓝凌OA系统功能模块图1

img

图2.2 蓝凌OA系统功能模块图2

国外OA系统的代表有EGroupware,其主要功能模块如图2.3所示:

img

图2.3 EGroupware OA系统功能模块图

对比分析上图可以看出,这些OA系统中都有流程管理这个模块。要实现对这个模块的管理,还需要有相应的软件系统作为支撑。即工作流管理系统(WFMS),工作流管理系统的主要作用是:调用和管理业务过程中的各种活动的先后顺序和资源,以此达到自动化办公的目的。

1.2.2 本文的主要内容及章节安排

本文对办公自动化进行了分析和研究、并且还将JBPM(Java Business Process Management)和SSM框架技等技术应用在了办公自动化领域中,通过Maven这样的项目管理利器来对项目进行管理,从一定程度上保证了系统整体架构的稳定性和具体实现代码的鲁棒性,致力于实现系统各个模块之间的“高内聚、低耦合”度,使得系统各个模块的复用程度、系统功能的扩展性和可维护性都得以提高;通过使用管理工具Maven还可以轻松的实现对系统中各个模块的管理。

本文的章节安排和主要的研究内容所下所述:

第一章节:前言主要概述了本文的研究背景和这个课题在国内外的研究情况,并且还通过对项目背景的简述,说明了对办公自动化进行研究的意义。

第二章节:主要是相应架构技术和开发环境的概述,首先介绍了所要用到的相关技术的理论知识,然后对Spring、SpringMVC、Mybatis等框架的运行机制进行分析,它们是构建OA系统的关键技术。

第三章节:这一章节对系统开发进行了必要的分析,为系统设计环节提供了相应的理论基础。

第四章节:系统设计是实现系统开发的主要环节和前提条件,对办公自动化系统的主要模块进行了详细的分析和设计,为后续的具体实现奠定基础。

第五章节:对系统的具体实现也作了简要描述叙述的同时,还对开发环境的搭建,框架的整合进行了简要的说明,在系统实现章节附录了相应模块的核心代码。

第六章节:总结全文,同时对系统的进一步提升和完善提出改进意见。

第二章 系统架构技术的研究及简单的环境搭建概述

2.1 Web应用体系结构

技术总是在不断发展和进步的,企业级应用程序的架构也不例外,在多年的发展演进过程中,它的设计思想也产生了巨大的变化。分析它的发展历史,可以发现:在大型机和个人计算机盛行的时期,很多的应用程序都是运用的两级体系结构,在这种结构中,服务端的主要职责是数据的存储和检索,而绝大多数的业务逻辑还交由客户端来进行处理。随着应用程序中需求的增多,其中包含的业务逻辑变得越来越复杂的时候,客户端就显得不堪重负啦,为了减轻客户端的压力而将系统中的业务逻辑剥离出来,形成单独的一部分,就这样衍生出了三层体系结构。

三层体系结构的划分如图2.1所示。

img

图2.1 Web应用三层架构图

(1) 表现层:可以理解为jsp、html等页面。

(2) 业务逻辑层:主要任务是对程序中与业务流程进行处理,为前端页面提供相应的业务服务。

(3) 数据持久层:主要是对数据进行存储。

运用这样的三层结构,可以实现让每一层在功能实现上有一个清晰的界限,这样三层之间是相互分离的,但它们之间存在彼此进行通信和交互的接口。

软件开发采用这种三层体系结构,可以让软件系统在可扩展性、可复用性、和安全性上得到很到的提升,还也有助于系统易管理性的提高。

2.2 B/S架构介绍

B/S架构是一种对C/S架构进行改进后的架构,它不需要安装任何专门的软件,对操作系统也没有任何限制,由于只需要客户端上具备浏览器就行,这种架构实现了客户端的统一和平台无关性。在这种模式下,系统功能的核心实现集中在了服务器上,这样可以简化系统的开发、维护和使用。

使用架构,可以使得软件维护和升级方式变得简单,由于浏览器就是它的客户端,所以根本不需要做任何的维护,只需要对服务器进行管理即可。用户量的增多也不会对它的升级维持产生影响。甚至还可以实现远程维护、升级和共享。管理人员只需要管理服务器就行了,软件的维护成本较低。

也正是因为B/S架构的特性,所以客户机越来越“廋”,但服务器却因此变得越来越“胖”,在这种架构之下,服务器运行数据的负荷较重,为避免发生服务器“崩溃”,造成无法弥补的损失。使用这种架构往往需要配备数据库存储服务器来以防万一。

2.3 j2EE简介和JDK的安装配置

Java编程主要有三个方向:Java SE(Java Platform , Standard Edition),它是Java中的基础部分,也称J2SE,主要用于桌面开发,同时它也是Java EE(Java Platform , Enterprise Edition)的基础。Java EE也称为J2EE主要应用于Web开发。最后一个是Java ME(Java Platform , Micro Edition)也称J2ME,主要应用于移动端的开发。

J2EE这种技术架构,它有很多组件,主要用来简化和规范系统的开发和部署,从而可以提高代码的移植性、安全性和复用性。因为它是Java技术中的一部分,所以Java语言所具备的特点它也都具备,面向对象、高性能、跨平台(操作系统)的。而且“一次编译,到处运行”。

俗话说:“工欲善其事,必先利其器”,如果想要通过使用J2EE架构进行系统开发,首先需要进行JDK(Java Development Kit)的安装及其配置。具体的安装配置如下:

下载JDK的安装包:虽然JDK是sun公司开发的产品,但由于sun公司已经被Oracle公司收购,在下载安装包的时候需要到Oracle官网上去根据自己的操作系统进行下载。具体的下载过程就不再赘述,接下来说一下JDK的环境变量的配置方式。

我的电脑à系统属性à高级系统设置à环境变量à新建

变量名: 变量值:

JAVA_HOME D:\DEV\jdk1.8(具体配置视安装目录而定)

CLASSPATH .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; (固定写法)

最后在path路径中添加变量值:%JAVA_HOME%\bin和%JAVA_HOME%\jre\bin即可。

测试:运用组合键“win+r”输入CMD命令进入控制台,然后在控制台输入

java–version、java、javac等命令进行测试。

得到图2.2、图2.3和图2.4所示则表示JDK安装配置成功。

img

图2.2 JDK安装配置测试图1

img

图2.3 JDK安装配置测试图2

img

图2.4 JDK安装配置测试图3

2.4 Jsp简介

Jsp(Java Server Page)是一种动态网页的综合性技术。它的产生是由于程序员在开发的过程中发现,Servlet用来做界面非常的不方便。于是就想到了用一种新的技术来做界面,就这样Jsp技术就出现了。Jsp技术可以用下面这个公式来进行表示:公式:Jsp=html+java片段+Jstl+Javascript+css。其实Jsp的本质还是Servlet,Jsp和html最大的区别仅是多了一些Java片段而已,所以写Jsp就和写html差不多。

相比html来说:html只能为用户提供静态数据,而jsp技术允许在页面中嵌套Java代码,能够为用户提供动态数据。

相比Servlet来说:Servlet要对数据进行排版难度较大, Jsp不止是可以通过Java产生动态数据,它还综合了JavaScript和css技术,所以能够很轻易的对数据进行排版。

Jsp的运行原理如图2.5所示:

img

图2.5 Jsp运行原理图

说明:Jsp页面报错实际上是报的Servlet即xxx_jsp.java中的错误,在查找错误的时候应当找到与该Jsp对应的Servlet中去查找相应的错误。

2.5 MVC简介

MVC是一种设计模式,所谓设计模式就是开发人员在长期的开发过程中提炼和总结出来的一套优秀的应对一般问题的解决方案。

MVC当中的M代表model,可以理解为JavaBean,V即视图,是系统与用户进行交互的窗口,可以理解为Jsp页面或其他的前端页面。其中C是Controller控制器,主要用于处理业务逻辑。采用MVC这样的三层模式,可以有效的将视图、业务逻辑和数据持久层分离开来,它们之间相互分离,仅通过业务逻辑来进行调用。

例如这样一个简单的需求,前端Jsp页面的用户通过输入用户名和密码发起一个登陆请求,请求将传达到控制器,控制器通过对数据库的调用来进行数据比对,如果在数据库中不存在那么一个用户,那么控制器将返回一个失败信息给前端页面。

这种设计模式极大程度上的增加了程序的健壮性,可维护性和易于扩展。

J2EE中几种重要的开发模式:

Model1模式: Jsp文件是Model1模式的基础,它是由一些独立的Jsp文件,和一些Java Class组成的(不是必须的),这些Jsp文件通过从Http 请求中获得所需要的数据,并进行业务逻辑的处理,处理的结果通过服务器响应返回前端界面。

Modell模式有开发简单、开发速度快,适合开发小项目等优点。缺点是,表现层和业务逻辑层混在一起,首先这样显得很乱,代码的可读性差,后期维护工作难以进行,同时也不利于多个人进行协同开发。Model1模式原理如图2.6所示:

img

图2.6 Model1模式原理图

分层模式即Model1.x模式(MV模式,分层),是在Model1模式的基础上演变而来,将业务逻辑和表现层分离开来,但是业务逻辑和数据模型模型依旧放在一起也不利于系统的维护和扩展,其原理如图2.7所示:

img

图2.7 分层模式原理图

MVC模式要求在开发的过程当中,把数据的输入、输出和显示分进行分离。

MVC模式的原理,如图2.8所示:

img

图2.8 MVC模式原理图

2.6 Spring简介

首先说一下Spring是什么?

Spring是一个为了解决软件开发复杂性而被开发出来的,优秀而且开源的容器框架,来看一下如图2.9所示的Spring层次原理图。

img

图2.9 Spring的层次图

从图中可以看出Spring是一个横跨三层(Web层、业务层、数据持久层)的框架,之所以把它称之为容器框架,是因为它的核心主要是用于配置bean,并且维护bean与bean之间的关系。这里说到的bean是Spring框架中一个非常重要的概念,它可以是Java中的任何一种对象,Spring的核心配置文件包含并管理了应用中对象的配置和生命周期,从这个层面上来说,可以将其看成是一种容器。

Spring中提出了控制反转技术(IoC),和面向切面编程(AOP)的思想等促进了应用软件模块之间的松耦合度。能够有效的提升软件的稳定性和可测试性。

Spring命名的由来,起初在Rod Johnson的Expert One-on-One Java EE Design and Development(专家一对一J2EE设计与开发)一书中Spring被称为“Interface21”(当时它使用com.interface21这个包名)。对于使用过EJB来开发过J2EE的人,一定知道这门技术在开始学习和应用的时候非常的艰苦。Spring出现后采用简单的JavaBean代替了EJB,并且还提供了更多的企业应用功能。Spring代表了传统J2EE“冬天”之后的一个新的开始,而且为了激励开发者社区,然后就有人提出了用“春天”这样一个简洁优雅的词来命名。

Spring框架由七个明确定义的模块组成,详见图2.10。

img

图2.10 Spring的组成图

Spring框架的组成模块之间是相互独立的,在实际开发的过程中,可以根据自己的需求选用其一部分子框架即可,然后应用其他的框架方案加以代替。例如:它所提供的ORM(对象关系模型)框架,就可以采用Mybatis框架来进行代替。如果采用了其他的框架来进行替代的话,就涉及到框架的整合。在它的核心配置文件中,应当合理的进行配置,如图2.11所示:

img

图2.11 Spring.xml加载Mybatis配置文件配置图

框架多是通过Java的反射机制来实现的,至于其内部的实现细节在此不做叙述,在此只对其运行原理进行说明,Spring的运行原理如下图2.12所示:

img

图2.12 Spring运行原理图

Spring开发提倡接口编程,配合di(Dependency Injection)技术可以更好的达到程序间的解耦,使用框架的时候需要到其官网去下载jar包,然后导入到工程目录中去才能进行使用,对于项目工程来说,可以理解为第三方库。

2.7 SpringMVC简介

SpringMVC是Spring框架的子模块,它是类似于Struts2的一个MVC框架,在实际的开发中,接收浏览器的请求响应,对数据进行处理,然后返回页面进行显示。上手难度较Struts2简单得多,而且由于Struts2所暴露出来的安全问题,SpringMVC已经成为了大多数企业优先选择的框架。

运用SpringMVC框架进行开发,程序员只需要把精力放在处理器Handler的编写及视图比如JSP页面的编写上即可。

学习框架实际上学习的就是其配置文件,使用框架有很多好处,但是相应的也会存在一定的限制,开发的过程中应当遵从其相应的规范。

在运用SpringMVC进行开发的时候,需要在它的核心配置文件中,进行相应的配置。其中主要的是对映射器、处理器、视图解析器、视图过滤器还有Handler进行配置如图2.13和图2.14所示:

img

图2.13 SpringMVC配置图1

SpringMVC的试图过滤器需要到Java Web工程的Web.xml文件中去进行配置。

img

图2.14 SpringMVC配置图2

编写SpringMVC中的映射器、处理器有两种方式,一种是注解的方式,还有一种是非注解的方式,在运用注解方式的时候应当注意:

一、注解方式的映射器

spring3.1之前使用 org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping注解映射器。spring3.1之后使用 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping注解映射器。

二、注解方式的处理器

spring3.1之前使用 org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter处理器适配器。spring3.1之后使用 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter处理器适配器。

SpringMVC的映射器和处理器在使用的时候需要配对使用,版本需要一致,不然在项目运行的时候会报错。SpringMVC还提供了mvc:annotation-driven/标签来配置映射器和处理器,Handler的配置还可以通过包扫描的方式进行配置:

<context:component-scan base-package="包含controller的包名 ">。

2.8 Mybatis简介

Mybatis可以理解为一种不完全的ORM(对象关系模型)框架,它是Apache下的顶级项目,对于Mybatis来说对JDBC的封装程度没有Hibernate深,所以它对开发人员有着更高的要求,开发者需要自己编写SQL语句。

Mybatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。它可以使用简单的XML或注解来配置和映射原生类型、接口和Java的POJO为数据库中的记录。

Mybatis是数据持久层框架,Mybatis对于大型数据库的优化和适配性较强。适用于需求变化周期快,数据处理量较大的系统。Hibernate采用了更加自然的面向对象的视角来持久化Java应用中的数据,让开发者不再关注底层数据库的细节。Mybatis在这方面没有特定的文档说明,这样便于开发者发挥自身想法来对对象进行管理。

Mybatis运行原理如图2.15所示:

img

图2.15 Mybatis运行原理图

Mybatis的核心是mapper.xml文件,简单的说就是配置SQL语句。

2.9 Maven的简介

Maven是一种优秀的项目管理工具,它为构建项目提供了一套完整的生命周期框架。

由于Maven使用了标准的目录结构和生命周期。所以在多个开发团队进行开发的情况下,它可以按照设置标准在很短的时间内,完成相关的配置工作。由于大部分项目的设置都很简单,并且可以重复使用,Maven让开发者的工作更轻松。同时它可以自动的完成:创建报表、检查、构建和测试等工作。

系统在运用框架开发的过程中,需要到各个框架的官网上去下载jar包,运用Maven的话,只需要在其核心文件中添加依赖即可。可以方便的进行管理、节约时间、提高工作效率。

总的来说,Maven可以帮助开发人员简化和标准化项目的建设。它主要有负责处理编译,分配文档和管理团队协作等功能。Maven可以增加项目中模块的可重用性。

Maven项目的结构和内容在pom.xml文件中声明,pom.xml文件这个文件是整个Maven系统的基本单元。

管理工具Maven的安装步骤如下:

一、进行下载安装:到Maven的官网去下载和系统对应的文件。由于是下载好的文件是压缩包格式,只需要将它进行解压就能完成安装了。

二、配置环境变量:此电脑à系统属性à高级系统设置à环境变量

三、点击新增变量,变量名为:MAVEN_HOME,变量值就是maven解压位置的路径。

接着点击编辑Path变量,在有变量值的那一栏中追加 %MAVEN_HOME%\bin即可。

测试:win+Ràcmdà调出控制台à输入命令(mvn –version)。得到图2.16所示的结果,那么环境变量就配置完成。

img

图2.16 Maven的安装测试图

对Maven的settings.xml文件进行配置,可以实现其默认仓库的转移:

根据Maven的安装路径找到它的配置文件(settings.xml),用记事本打开之后找到“”这对标签,并在这对标签中间填写上指定的路径,如图2.17所示:

img

图2.17 Maven配置文件的配置图1

接着配置Maven,由于到它本身的中央仓库去下载jar包会非常慢,这里将其更改为阿里云的,在settings文件中找到“”这对标。

然后在标签当中增加阿里云maven镜像,如图2.18所示:

img

图2.18 Maven配置文件的配置图2

至此,Maven的安装配置完成。

2.10 本章小结

本章节通过对办公自动化系统中所到使用到的相关技术进行了简要的叙述,对使用的框架的原理及配置文件进行了简要的说明,通过对理论知识学习和相关技术的研究,为办公自动化系统的开发提供了一定的理论基础,让办公自动化系统的实现成为可能,同时还做了一些必要的准备,安装JDK和Maven,并且对环境变量进行了配置。

第三章 系统分析

3.1 系统的可行性分析

在准备开发一个项目的时候,对其进行可行性分析是必不可少的一个重要环节,通过对其进行可行性分析,可以为我们的决策(是否对该软件进行开发)提供科学的依据。可行性分析可以帮助我们在开发项目的过程中以最小的代价,并且尽可能的在短时间内来确定相应的问题是否能够得到解决。通过确定系统的相关约束和限制,以此来分析准备开发的系统需求和规模等是否能够具体实现,实现后能否为企业带来经济效益的最大化。总而言之,只有通过认真的对系统进行可行性分析,才能有效的避免在开发过程中的阻抗问题。

(1)技术可行性

字面上的意思就是通过现有掌握的技术是否能够实现这个项目?

本课题的技术基础是Java,结合掌握了现有的一些优秀的框架Spring(容器框架)、SpringMVC(MVC框架)、Mybatis(数据持久层框架)技术的基础上,结合项目管理工具(Maven)来对办公自动化系统进行开发。通过将这些框架进行整合来实现具体的开发,可以增加系统的稳定性、可维护性以及可扩展性以此来达到快速稳健的构建项目的目的。

数据的存储采用了开源的MySQL数据库,虽然它是开源的,但是在安全性做得较好,数据处理的能力极强,并且它是一个最轻量级的数据库,系统要求没那么高。

开发工具采用具有错误代码提示功能的Eclipse(一个免费的集成开发工具),它所提供的错误代码提示功能对于初学者来说是比较重要的(不怕出错,就怕不知道哪儿出错)。

在长期的学习过程中,对于相关技术的掌握让我对办公自动化系统的开发成为可能。

(2)经济可行性

从企业的出发点来看,就是某个软件开发出来之后所带来的经济效益是否

会大于其开发成本。如果该软件所带来的经济效益能够远远大于其开发成本,那么决策者将决定对其进行资金注入。

就个人的毕业设计而言,所采用的相关技术以及开发工具等都是免费的。所以并不存在因为经济压力而开发不下去的情况。

(3)操作可行性

该办公自动化系统应用Tomcat容器进行部署,前端页面运用了JSP技术。在项目进行发布的时候,只需要通过浏览器输入对应的URL就可以实现访问和操作。该系统具有交互界面简单,操作容易,方便管理等特点。

综上所述,本系统可以进行实际开发。

3.2需求分析

3.2.1 功能性需求分析

本系统从功能的实现上主要分为日常办公、综合信息、系统管理三个模块,初始情况下只为系统设置一个用户admin,这个用户是系统的超级管理员,拥有操作这个系统的最高权限(系统管理、个人信息管理、审批管理、公告管理等)。

3.2.2 日常办公

工作流是办公自动化系统的核心所在,在最初的办公模式下,工作流的流动是基于纸张表单、人工传递的方式进行逐级流动的,最后再又管理者进行审批签字。对资源来说是一种浪费,最主要的还是工作效率不高,企业中应用办公系统,员工只用通过电脑来填写好相关的表单即可,表单会按照系统定义好的流程,自行的流动向下指定的审批者,审批者在接收到表单后,可以根据需要对其进行相应的更改,大大的提高了员工的工作效率,同时也提升了公司的核心竞争力。在这一模块中审批管理是其核心。系统需要将消息分发给对应的审批人员,最后根据审批人员的抉择来确定最后的结果。公告的发布修改删除只能是管理员才具备的权限。每次公告的更新数据都会同步到数据库中去,在其他用户登录系统的时候可以及时的接收到公告通知。

3.2.3 综合信息

企业的管理离不开对数据的处理,例如:一个新员工在正式进入公司的时候,要对其信息进行录入、备份,在其职位、薪水等发生变化的时候要对相应的信息进行更改。在员工离职的时候需要将其相应的信息进行删除。企业中信息的交流处理(业务流程)是办公系统中重要的组成部分。采用传统人工的方式进行处理,工作效率低下。大量累积的信息需要进行筛选、分类、归档。如果仅靠人工进行操作,工作量大、不易管理、在对信息进行查找的时候工作难度大,对于企业来说是一笔不小的资金投入,因此需通过系统来实现其管理的便捷性,以此提高工作效率、降低运作成本。

3.2.4 系统管理

系统管理是针对具有系统管理权限的人员对系统进行维护而开发的基础模块。

系统管理的主要模块主要包含(用户管理、岗位管理、权限管理、部门管理)等模块。

(1)用户管理模块要具体实现的共能为:添加、删除、更新、用户列表等。

(2)系统的岗位管理模块的主要功能为:添加、删除、更新、岗位列表等。

(4)部门管理主要实现的主要功能为:添加、删除、更新、部门列表等。

3.2.5 非功能性需求分析

对系统的非功能性需求进行分析是必要的,虽然它与系统的实现无关。但也是要重点考虑到的一个环节,它具体包括了系统的安全性、可靠性、健壮性、可扩展性等。这些属性是衡量系统好坏的关键。

系统开发完成之后应该具有操作简单、良好的交互性(用于提升用户使用的满意度、和良好的使用体验)、界面具有友好性(针对用户的误操作给出相应的提示信息)等特性。系统应该充分的考虑用户的操作习惯,针对这些需求对系统各项功能进行严格的测试,并进行逐步完善,以此来增加系统本身的实用性。

3.3本章小结

本章节通过对系统的可行性进行了简要的分析,为是否开发该系统提供了科学的理论依据。通过对系统功能性需求分析的阐述,说明了系统主要的几个模块以及它们应该包含和实现哪些具体的功能。最后通过系统非功能性的需求分析,对系统还需实现哪些与系统主体功能无关的细节进行了补充和说明。

第四章 系统设计

4.1 系统的架构设计

这个办公自动化系统,采用的是B/S架构、运用了MVC模式进行开发,主体包括了数据持久层,核心业务层以及应用层(即前端视图界面—用户实现操作的交互界面),运用框架技术结合Maven管理实现对系统的构建,系统整体架构如图4.1所示:

img

图4.1 系统整体架构

在此系统架构下,项目工程的文件结构如图4.2所示:

img

图4.2 项目工程文件结构

4.2 系统模块设计

系统模块的合理划分是系统成功的关键,因为OA系统模块众多,如果事先不做好模块划分,开发过程中的时间成本的投入将会提高,还可能造成做无用功的现象。对系统的各个模块进行合理的划分,能够促进系统功能的具体实现。

系统模块大致分为系统管理、个人信息管理、审批管理、公告管理等(模块)。如图4.3所示:

img

图4.3 系统总模块

系统管理模块又分员工管理、部分管理和岗位管理,如图4-4所示:

img

4.4 系统的管理模块

系统的个人信息管理模块,主要功能是对用户进行CRUD操作,如图4.5所示:

img

图4.5 系统的个人信息模块

系统的审批模块,主要由请假申请、申请查询和待审批申请组成,如图4.6所示:

img

图4.6 系统的审批管理模块

系统的公告管理模块,主要实现:管理员对公告的增、删、改操作,用户对公告可以进行的操作是查询,如图4.7所示:

img

图4.7 系统的公告管理模块

4.3数据库设计

数据库是系统的核心组成之一,主要用于对各种信息进行增删改查操作。数据库设计得是否合理,对整个系统有着深远的影响。

4.3.1概念结构设计

为了方便描述系统各模块间的联系,应设计与之对应的实体,实体中需要包含相关的实体属性。

这里通过“请假”这个具体的事务流程为主线来贯穿系统中所涉及的实体。企业内部某个部门的员工(仅仅具有普通权限的系统用户)在要请假的时候,应该向具有相应权限的管理人员(具有系统管理权限的用户)发起“请假”申请,然后由管理人员对“请假”进行审批,最终将审批的结果返回给申请人。

这个业务中所包含的实体有:用户、部门、请假、审批、权限和角色。

(1)用户实体用于存储用户的相应信息,用户实体如图4.8所示:

img

图4.8系统用户的实体图

(2)部门实体包含了部门名称和描述等属性,部门实体,如图4.9所示:

img

图4.9系统的部门实体图

(3)系统的请假实体主要包含的信息,如图4.10所示:

img

图4.10系统的请假实体图

(4)审批实体主要包含了一下信息,详见图4.11:

img

图4.11系统审批实体图

(5)权限这个实体存储了与权限相关的信息,如图4.12所示:

img

图4.12系统的权限实体图

(4) 用户角色实体主要用于存储用户在企业中担任的角色,角色实体如图4.13所示:

img

图4.13系统的角色实体图

4.3.2系统E-R图

E-R图是描述实体之间的关系图,本系统的E-R图,如图4.14所示:

img

图4.14 OA系统的ER图

4.3.3表结构的详细设计

表结构设计的好坏,对系统的运行性能起着决定性的因素。不合理的设计还可能导致在开发的过程中遇到很多难以解决的问题,甚至导致开发难以进行下去。所以在设计表的时候应该遵循一定的关系模式。设计的时候至少需要满足第一范式的要求(即保证表中的每个属性的值域都是不可再分的数据项),目的是为了保证数据的完整性和可靠性避免数据冗余。

(1)用户表用保存用户的相关信息,表结构如表4.1所示:

表4.1系统用户表(t_wl_user)

**字段名** **类型** **长度** **是否为空** **是否主键** **说明**
**user_id** int 20 用户ID
*depart***_id** int 20 部门ID
**role_id** int 20 角色ID
*login***_id** varchar 40 登陆ID
**userName** varchar 25 用户名
**userPassword** varchar 30 用户密码
**sex** char 2 用户性别
**phoneNumber** varchar 20 手机号码
**email** varchar 30 电子邮件
**description** varchar 90 描述
**createTime** dateTime 注册时间

(2)部门表用于存储部门的相关信息,表结构如表4.2所示:

表4.2系统部门表(t_wl_department)

**字段名** **类型** **长度** **是否为空** **是否主键** **说明**
**depart_id** int 20 部门ID
**name** varchar 25 部门名称
**description** varchar 90 描述
**parent_id** int 20 上级ID

(3)角色表用于存储角色的相关信息,表结构如表4.3所示:

表4.3系统角色表(t_wl_role)

**字段名** **类型** **长度** **是否为空** **是否主键** **说明**
**role_id** int 20 角色ID
**name** varchar 25 角色名称
**description** varchar 90 描述

(4)权限表用于保存权限信息,表结构如表4.4所示:

表4.4系统权限表(t_wl_power)

**字段名** **类型** **长度** **是否为空** **是否主键** **说明**
**id** int 20 ID
**name** varchar 25 名称
**url** varchar 130 url
**parent_id** int 20 上级权限ID

(5)公告表用于保存公告信息,表结构如表4.5所示:

表4.5系统公告表(t_wl_notice)

**字段名** **类型** **长度** **是否为空** **是否主键** **说明**
**notice_id** int 20 公告ID
**user_id** int 20 创建人
**content** longtext 公告内容
**createTime** dateTime 创建时间

(6)请假表用于保存请假信息,表结构如表4.6所示:

表4.6系统请假表(t_wl_leave)

**字段名** **类型** **长度** **是否为空** **是否主键** **说明**
**leave_id** int 20 请假ID
**user_id** int 20 请假人
**approver_id** int 20 审批人
**startTime** dateTime 开始时间
**endTime** dateTime 结束时间
**days** int 2 请假天数
**reason** varchar 90 请假原因
**result** varchar 10 请假结果
**createTime** dateTime 创建时间
**status** varchar 10 请假状态
**type** varchar 10 请假类型

(7)审批表用于保存请假的审批信息,表结构如表4.7所示:

表4.7系统审批表(t_wl_leaveApprover)

**字段名** **类型** **长度** **是否为空** **是否主键** **说明**
**approver_id** int 20 ID
**leave_id** int 20 请假ID
**user_id** int 20 审批人
**username** varchar 25 请假人
**status** varchar 10 审批状态
**advice** varchar 10 审批意见
**createTime** dateTime 创建时间

(8)消息表用于保存待审批消息,表结构如表4.8所示:

表4.8系统消息表(t_wl_message)

**字段名** **类型** **长度** **是否为空** **是否主键** **说明**
**message_id** int 20 消息ID
**user_id** int 20 消息归属
**leave_id** int 20 消息来源
**title** varchar 45 消息标题
**watch** char 2 是否查看

至此,系统中各个表的表结构设计完成。

4.4核心业务流程设计

工作流的设计是办公自动化系统的核心。针对本系统,通过“请假”这一业务来进行工作流设计,具体流程为见图4.15所示:

img

图4.15系统的主要业务流程

4.5本章小结

通过“请假”这一业务来贯穿整个章节,对系统的架构设计、模块设计、数据库设计和核心业务流程设计进行了详细的说明,并且给出了进行过合理设计实体图、E-R图和表结构。

第五章 系统实现

完成以上过程后,现在进行办公自动化系统的开发。选择合适的开发工具和框架实现开发。严格按照框架约束和MVC模式的要求,遵循Java的命名规范,对代码进行优化、抽取和封装,最终完成一个高性能的办公自动化系统。

5.1 开发环境搭建

在安装配置了JDK和Maven的基础上,现在进行Eclipse(集成开发工具)的安装。注意事项:Eclipse的安装需要选用与之版本对应的JDK版本才能成功运行。

(1)在官方网站下载安装好Eclipse2018-12后运行(因为下载好的文件是压缩包格式,安装过程只需要将其解压到指定目录即可)。

(2)Eclipse在第一次运行的时候需要先选择它的工作空间(工作空间自行指定),如图5.1所示:

img

图5.1 Eclipse工作空间创建图

(3)新建一个Maven工程,如图5.2所示:

img

图5.2 新建Maven工程图

到选择工作空间的时候把“Use default Workspace location”勾选好即可,在选择类型的时候需要选择webapp,如图5.3所示:

img

图5.3 新建Maven工程类型选择图

选择完毕后点击下一步,最后为工程命名(myDesign),如图5.4所示:

img

图5.4 Maven工程命名图

在命明完成后点击完成即可。

(4)Maven工程新建完毕之后对其配置文件(pom.xml)文件进行配置部署,添加开发所需的依赖。如图5.5和5.6所示:

img

图5.5 pom.xml文件配置图1

img

图5.6 pom.xml文件配置图2

(5)进行框架整合,先按照SSM框架的整合规范建立相应的文件结构,然后对系统中所用到框架的配置文件进行相应的配置,目的是完成框架的整合。

Mybatis的配置如图5.7所示:

img

图5.7 mybatis.xml文件配置图

Spring配置文件的部分配置如图5.8所示:

img

图5.8 spring.xml文件部分配置图

5.2 通用功能实现

由于CRUD操作是各模块数据通用的,故而将其抽取为公共代码部分,采用面向接口编程的方式,具体模块的实例需要运用到的时候对其进行实现即可。主要代码如下:

*public* *interface* UserService {

*public* User findUser(String username, String userpwd) ;

*public* List selectAll();

*public* *void* add(User u);

*public* *void* del(****int**** id);

*public* User getById(****int**** id);

*public* *void* update(User u);

*public* List getByLike(String keywords);

}

5.3 登陆模块实现

登陆界面采用html+js+css来具体实现,效果如图5.9所示:

img

图5.9 用户的登录界面效果图

下面附录的是实现登陆主要代码:

// 申明这是一个控制器

@Controller

*public* *class* Usercontroller {

​ // 注入Service

​ @Autowired

​ UserService service;

//url映射

​ @RequestMapping("/login")

*public* String login(){

*return* “login”;

​ }

​ //登陆验证

​ @RequestMapping("/main")

*public* String checkLogin(@RequestParam(value = “username”) String username, @RequestParam(value = “userpwd”) String userpwd){

​ User user = service.findUser(username, userpwd);

​ ****if****(user!=****null****) {

*return* “main”;

​ }****else**** {

*return* “err”;

​ }

​ }

5.4 系统模块的实现

系统的主要模块有:角色管理、部门管理、用户管理三大模块,基础部分均为数据的CRUD操作,其中还包含用户列表的分页功能。页面效果如图5.10所示:

img

图5.10系统页面效果图

部分核心代码如下:

//后台核心代码

​ @RequestMapping(value = “/user”)

*public* ModelAndView selectAll() {

​ ModelAndView mav = *new* ModelAndView();

​ mav.addObject(“userList”, service.selectAll());

*return* mav;

​ }

//前端界面的关键代码:

​ <th class=“table-check”><input type=“checkbox” id=“chkAll”>

​ <th class=“table-id”>ID

姓名

​ <th class=“table-type”>电话

​ <th class=“table-author am-hide-sm-only”>性别

​ <th class=“table-set”>操作

<c:forEach items="${userList}" var=“user”>

​ <input type=“checkbox” name=“chk”>

​ ${user.id}

${user.name}

​ ${user.phonenumber}

5.5 本章小结

本章节主要叙述了开发环境的搭建,说明了搭建开发环境时的注意事项。在环境搭环节就系统框架的整合进行了简要的说明,最后对系统的具体实现也作了简要的描述并附录了相应模块的核心代码。

第六章 总结与展望

6.1 总结

不知不觉间毕业设计工作已进入收尾阶段,我在设计期间遇到了很多问题。遇到的这些问题在查阅相关资料和老师的帮助下得以解决。期间学到了很多东西,最重要的是学会了如何将理论知识运用到实际开发中去。

对于作为毕业生的我们而言,毕业设计不止是对所学知识的回顾,还是对现有掌握知识的一种提升,通过毕业设计,让我在原来的基础上得到进一步的提升,做到了知识的又一次升华。

学习应该是“读万卷书,行万里路”的结合,比如,学习了本系统中所运用到的框架技术知识后,要怎么样把它们具体的用到系统开发中去呢?这就需要我们进一步的去将理论和实践进行结合。通过实践,我们才能去检验我们对知识的掌握程度。了解我们的薄弱环节,并加以提升。

6.2 展望

到目前为止,我的毕业设计只能说是大致完成了。但是,其中还有好些模块都还没有具体实现,这些都是需要逐步进行完善的。就实现的模块来说,也还有可以再进行优化的地方,界面友好、符合用户操作习惯等方面都还需要进一步的做得更好,以提高用户使用的满意度。系统性能方面,可以对算法进一步的进行研究和优化。让系统在响应速度方面能够得到提升。

该系统,目前只是完成了部分模块及功能,并且只是单用户在对其进行操作。在实际应用中,必须考虑到多个或(更多)用户同时进行访问的情况,基于这种情,该系统的并发性必须要达到更高的要求才行。在此,就提高系统并发性,提出一点个人的观点和改进方案。由于垂直扩展方法的要求是增强单机硬件的性能,这无疑是一笔巨大的开销,为了节约开发成本,可以通过缓存方式减少IO的次数,异步增加服务吞吐量,用更好的数据结构来降低响应的时间,实现单机架构性能的提高,同时还可以通过水平扩展方式(服务层增加服务连接池、采用分布式数据库)来实现系统的高并发性能的提升。

参考文献

[1]王丽娟,吴东明.基于MySQL数据库实施完整性约束的研究[J].科技创新与应用,2019(02):72-73.

[2]范开勇,陈宇收.MySQL数据库性能优化研究[J].中国新通信,2019,21(01):57.

[3]贾向炜,任炜.基于工作流技术的西安交通大学全新OA系统的设计与实现[J].电脑知识与技术,2018,14(34):73-75.

[4]曾艳丽,李诺.针对SSM框架Web系统的相关思考[J].信息与电脑(理论版),2019(03):116-117.

[5]吴晓珊,曹旭东,王森,魏文龙.基于B/S架构的管理系统软件开发[J].计算机测量与控制,2019,27(02):123-128.

[6]李杉,贾彦平,达虎.Mybatis逆向工程在JavaEE中的应用[J].通讯世界,2017(24):342.

[7]梁晓弘,黄兴荣.J2EE架构下基于Web的信息管理系统框架研究[J].数字技术与应用,2017(12):86-88.

[8]姚云飞,杜洪波,梁建辉.基于SpringMVC框架毕业设计管理系统设计[J].软件,2018,39(01):91-93.

[9]廖丽.MVC模式在JSP Web开发中的应用[J].电脑迷,2018(04):80-81.

[10]薛茹.基于SSM框架的Web系统研究与应用[J].计算机产品与流通,2018(07):30.

[11]魏军峰.基于B/S架构资源管理系统设计与实现[J].电脑编程技巧与维护,2018(10):67-69+90.

[12]刘双.Spring框架中IOC的实现[J].电子技术与软件工程,2018(21):231.

[13]高梓焱.基于C/S模式下的中间件的应用与发展[J].信息系统工程,2018(09):131.

[14]Robin Ramstad,Mats Holmström,Yoshifumi Futaana,Christina O. Lee,Ali Rahmati,Patrick Dunn,Robert J. Lillis,Davin Larson. The September 2017 SEP Event in Context With the Current Solar Cycle: Mars Express ASPERA‐3/IMA and MAVEN/SEP Observations[J]. Geophysical Research Letters,2018,45(15).

[15]Shane W. Stone,Roger V. Yelle,Mehdi Benna,Meredith K. Elrod,Paul R. Mahaffy. Thermal Structure of the Martian Upper Atmosphere From MAVEN NGIMS[J]. Journal of Geophysical Research: Planets,2018,123(11).

[16]汤蓉娜.计算机软件数据库设计的重要性以及原则分析[J].计算机产品与流通,2019(03):25.

[17]聂飞.办公自动化中的计算机技术应用[J].电子技术与软件工程,2019(07):139.

致谢

首先,我要感谢的是我毕业设计的指导老师江奇峰老师。他虽然工作很繁忙,但还是尽可能的抽出时间来为我们答疑解惑。即便他在开会,在你有问题请教时,他也会在第一时间给予回复、老师一丝不苟的工作作风和对待同学的和蔼态度、以及谦和的为人,给我留下了深刻的印象。

其次,老师对我的论文提出了许多的修改建议和宝贵意见,在论文撰写的过程中,每当我你们遇到困难和疑惑时,江老师都会给我们悉心的指点。江老师为我们撰写论文提出了许多改善性的意见,投入了许多的精力和心血。在此,我要对江老师表示诚挚的谢意。

同时还要感谢大学里教过我的所有老师以及朝夕相处的同学们。大学四年幸得老师教诲、同学帮助,在收获知识的同时,还交了很多的朋友。愉快的度过了大学时光。

另外,本文最终能够顺利的完成,离不开学院教育过我,给我授课的老师们,没有你们对我孜孜不倦的教诲,我就不会有那么大的进步,谢谢你们对我的帮助。再次感谢一起度过四年时光的老师和同学们,是你们给予我帮助和关心,谢谢你们!

再次感谢以上所有的人,谢谢!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于Java的OA系统的设计与实现 的相关文章

  • 如何在odoo中重写js函数

    我想加载 shop checkout url 函数是 odoo define change info order website sale change info order function require use strict oe w
  • 如何保护我的网站免遭 HTTrack 或其他软件的翻录?

    我最近获得了批准的网站模板主题森林 http themeforest net 我的网站流量过多 并注意到我在 Themeforest 上的演示被 HTTrack 等某些软件破坏 如果这种情况持续下去 该产品的销量最终可能会下降 那么 有什么
  • 在 Tomcat 上部署 Java Web 项目,无需 WAR 或 EAR

    我有一个 Java Web 项目 Struts Spring 在我的本地主机上完美运行 我必须将其部署在我的网站上 但虚拟主机提供的 Tomcat Manager 界面显示 由于安全原因 它无法上传 WAR 文件 当联系技术支持时 我被告知
  • 在脚本标签内工作的角度表达式

    如何在脚本标签内使用角度表达式 我对此很陌生并且需要帮助 这是我的 java 脚本代码的示例
  • Safari 的“阅读器模式” - 开源解决方案? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Safari 有一个 阅读器模式 可以删除网站上除文本之外的所有内容 有谁知道提供相同功能的开源库 或
  • Web 应用程序使用 API 来完成一切?

    我即将开始为我的公司规划一个内部项目管理工具 API 一直让我疑惑 首先创建 API 并使用这些 API 调用构建实际站点而不是实施两次 是否会被视为不好的做法 效率太低 让我知道你的想法 我完全同意开发 API 将为您提供解耦的架构 并且
  • 如何从文件系统访问 api window.showDirectoryPicker() 获取选定的目录路径

    当我选择一个文件夹时 我确实得到了 dirHandle 但无法弄清楚什么属性或方法将为我提供完整路径 const dirHandle await window showDirectoryPicker 所以类似 let path dirHan
  • 找不到模块:错误:包路径。未从包中导出

    import firebase from firebase const firebaseConfig apiKey AIzaSyBOK7x5N5UnjY4TDqndzH7l5tvdNIsWFRc authDomain todo app e3
  • Azure Web 角色中的网站项目

    我正在研究一个新的 ASP Net 项目 我们希望将其托管在 Windows Azure Web 角色中 该项目的技术要求之一是利用 ASP Net 的完整预编译选项 不可更新 单页程序集 Web Site项目模型 与 ASP Net 相反
  • 如何用 C 语言通过 HTTP 协议发送图像?

    我是一名正在做网络服务器练习的学生 我需要一些帮助 我的网络服务器在文本页面上运行良好 但是每当浏览器发送一个 GET img jpg HTTP 1 1请求 我不知道如何处理 我听说 HTTP 协议是基于文本的 那么如何在 HTTP 响应中
  • 允许匿名用户浏览样式和图像文件夹

    我正在编写一个 ASP NET Web 应用程序 我有一个登录屏幕 上面有一些 CSS 样式和图像 我遇到了样式和图像未显示的问题 我在网上阅读 它说我需要在 Content 文件夹中放置一个 web config 我将以下内容添加到 we
  • 使用 MediaWiki API 下载图像?

    是否可以使用 MediaWiki API 从维基百科下载图像 不 无法通过 API 获取图像 MediaWiki 中的图像仅存储在文件夹中 而不是存储在数据库中 并且不会动态传递 更多信息请参见手册 图像管理 http www mediaw
  • 仅当 url 以 www 为前缀时才会发生 CORS 错误

    我目前遇到一个关于 CORS 跨源资源共享 的问题 奇怪的是 只有当我使用 www url 前缀时 才会出现这种情况 例如 当我使用以下网址访问我的网站时 http example com index http example com in
  • Drupal 模板/主题资源或建议?

    我有兴趣为我正在开发的 Drupal 网站创建自定义主题 我是 Drupal 的新手 但是我在处理构建主题 CSS PHP HTML 所需的基本概念方面拥有相当多的经验 所以 我的问题是 我从哪里开始 有创建 Drupal 主题的规范指南吗
  • 是否可以下载网站的完整代码、HTML、CSS 和 JavaScript 文件? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否可以完全下载网站或查看其所有代码 例如 我知道您可以在浏览器中查看页面源代码 但是有没有办法下载所有网站代码 例如 HTML CSS
  • 如何在Fiddler中显示请求发送时间和响应接收时间?

    我正在使用 Fiddler Web 调试器工具版本 4 4 4 8 我已经向例如提出了请求www google com 和 fiddler 显示发送了请求并收到了响应 我如何知道并显示请求何时发送以及何时收到响应 开始 结束日期不在 Fid
  • 在 Ruby 中创建带有静态页面的博客的最佳方法

    我刚刚访问了静态网站生成 http www ruby toolbox com categories static website generation html on 红宝石工具箱 http www ruby toolbox com 我不知
  • 我应该使用哪个命令来缩小和优化 Nodejs Express 应用程序?

    我已经准备好 Express generator sccafold 网站并需要发布它 我应该使用哪个命令来缩小文件并优化发布 另外 我应该上传哪些目录 express generator是一个基于express框架的服务端渲染框架 而不是像
  • 直接从 Javascript 代码访问 SVG 文件

    我有这个 HTML 代码 它调用我的 javascript 代码 该代码用于仪表 在 javascript 代码中 我尝试访问 SVG 文件 并修改 仪表的 指针以显示所需的值 该代码运行良好 但是 我不想在 HTML 中调用 对象 id
  • 开发工具在表达式上中断

    当给定的 Javascript 表达式为 true 时 我想暂停一切 我见过条件断点 但这对我不起作用 因为这需要首先在某处设置断点 或者首先基于某个标准 然后向其添加附加条件 相反 我想要的是能够在给定表达式为真时中断 无论在哪里 在 D

随机推荐

  • ARM Mali系列GPU驱动panfrost组成

    Alyssa Rosenzweig于2018年创立开源小组 通过对用户空间的3D驱动 kernel空间的ARM驱动进行逆向操作 重新构建panfrost驱动 在XDC2020会议上ARM宣布 开始接纳panfrost开源驱动并向其提供应有的
  • data-ajax=“false“

    1 概述 最近在做一个项目 由于涉及到跨平台性 所以采用了jquerymobile这个框架 在开发过程中 一开始为了图测试方便 采用了chrome浏览器来测试运行 现叙述如下问题 当在first html中 有个链接如 a href sec
  • Android TextView文字过长将后面View挤出屏幕解决方案

    前言 需求 横排两个 TextView 第一个 TextView 宽度自适应 第二个 TextView 宽度固定且跟随在 TextView 后面 第二个View可为任意View 宽度需已知 需要第一个View margin出相应宽度给第二个
  • 【写一个操作系统】3—汇编语言学习及Makefile入门

    目录 汇编代码 制作启动区程序 Makefile 今天的主要任务是通过对helloos nas核心代码汇的理解进行编语言的学习 还有就是Makefile的学习 汇编代码 主要是对上次的汇编文件helloos nas核心部分的学习 核心部分的
  • 服务器修改tomcat日志级别,远程 服务器tomcat日志监控

    远程 服务器tomcat日志监控 内容精选 换一换 MRS集群的日志保存路径为 var log Bigdata 日志分类见下表 MRS日志目录清单见下表 启用多实例功能后 如果系统管理员添加了多个HBase Hive和Spark服务的实例
  • PDManer数据库建模工具介绍

    pdmaner PDManer元数建模 是一款多操作系统开源免费的桌面版关系数据库模型建模工具 相对于PowerDesigner 他具备界面简洁美观 操作简单 上手容易等特点 支持Windows Mac Linux等操作系统 也能够支持国产
  • 寻找数列(构造+拓扑)

    寻找一个有n个整数的数列 满足下列条件 其中任意连续p个数之和是正数 其中任意连续q个数之和是负数 若无法找到 则输出 No 否则输出一个数值最小的数列 输入 n p q 输出 n个整数 样例 输入 5 4 3 输出 2 2 5 2 2 设
  • 通过BAT脚本批量修改文件名

    通过BAT脚本批量修改文件名 一 生成命名文件名列表 二 在excel中对应的行输入修改后的文件名 在这里插入图片描述 https img blog csdnimg cn 20201012102112886 png x oss proces
  • 这几天心里颇不宁静,采的不是信号,而是寂寞

    原文来自微信公众号 工程师看海 这几天心里颇不宁静 今晚在院子里坐着乘凉 忽然想起往日一同攻坚的战友 在这满月的光里 该是另一番样子吧 我们制定的uV级别信号的采集方案 从原理到模拟环境测试 一切都OK 然而真正到现场采集信号时却发现 压根
  • python获取时间日期列表集合

    python获取时间日期列表集合 以前过去以后未来 安装datedays pip install datedays import datedays if name main print 测试时间 datedays getnow print
  • python-获取当前目录/上级目录/上上级目录...

    获取文件 在其他人使用你的代码时 常常因为目录层级的问题为无法运行程序 所以在引起其他模块文件时 尽量采取绝对路径的方式导 python官方建议尽量的使用绝对目录 而不是相对目录 获取当前文件的绝对路径 os path abspath fi
  • 公式微分后,为什么是偏导的相加

    二郎在研究一个公式中 会涉及分析变量对最终结果产生影响时 注 最终结果 这里确实是最后需要获得的结果 数学公式一定要和物理对应 输入放在一边 输出放在一边 否则都放在一边 就全成自变量了 变量对最终结果影响 既然涉及了分析 那么我们就先说为
  • c++中分文件编写

    c 中分文件编写 本文内容来自某视频教程 分文件格式编写格式 h中写类的成员函数声明 cpp中写成员函数实现 代码案例 所有代码写在一个文件中 如下是一段没有分文件编写的代码 即将所有代码写在一个源文件中 如图所示 以下代码实现了利用全局函
  • nginx转发wss

    做了一个tp6 swoole的项目 没找到swoole开启ssl的资料 想起以前做过转发可以实现 就新建了一个站 然后转发到swoole的端口 也能实现wss的访问 下面是配置文件 upstream wss server 127 0 0 1
  • ERP、SCM、CRM的区别和联系?

    ERP 企业资源计划 SCM 供应链管理系统 CRM 客户关系管理 是当前企业信息系统三大热门话题 无论是ERP SCM 还是CRM其根本目标都在于提高企业管理水平 提高企业核心竞争力 本文怡海软件将分别从其含义 区别 联系 集成方面进行简
  • Unity Scroll View踩坑记录

    Unity要想实现游戏中的背包滑动效果 最简单的方法就是使用ScrollView这个组件 这个组件可以实现拖动滑动的效果 如上图所示 我希望将这些Item实现背包的排版效果 第一步 现将所有的Item移到Content下 此时我们会发现部分
  • Java集合——Java8之HashMap

    一 前言 在分析jdk1 8后的HashMap源码时 发现网上好多分析都是基于之前的jdk 而Java8的HashMap对之前做了较大的优化 其中最重要的一个优化就是桶中的元素不再唯一按照链表组合 也可以使用红黑树进行存储 总之 目标只有一
  • Python爬取某短视频热点

    随着短视频的大火 不仅可以给人们带来娱乐 还有热点新闻时事以及各种知识 刷短视频也逐渐成为了日常生活的一部分 本 文以一个简单的小例子 简述如何通过Pyhton依托Selenium来爬取短视频 仅供学习分享使用 如有不足之处 还请指正 涉及
  • pyspark环境安装历史难题终于解决

    path JAVA HOME里面的D JAVA 1 jdk1 8 0 152 bin一定要全并且对应上 踩坑记录 已解决 报错 WARN ProcfsMetricsGetter Exception when trying to comput
  • 基于Java的OA系统的设计与实现

    源码及论文下载 http www byamd xyz tag java 摘 要 学习和研究办公自动化中涉及到的知识和技术是实现办公自动化系统的前提条件 通过学习研究 掌握了其中的关键技术之后 结合自身的理解 对其做出了相应的表述 同时也成功