CN116400914A - 一种基于数据模型快速构建web应用的方法 - Google Patents
一种基于数据模型快速构建web应用的方法 Download PDFInfo
- Publication number
- CN116400914A CN116400914A CN202310320304.5A CN202310320304A CN116400914A CN 116400914 A CN116400914 A CN 116400914A CN 202310320304 A CN202310320304 A CN 202310320304A CN 116400914 A CN116400914 A CN 116400914A
- Authority
- CN
- China
- Prior art keywords
- file
- code
- information
- configuration
- template
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000013499 data model Methods 0.000 title claims abstract description 46
- 238000000034 method Methods 0.000 title claims abstract description 27
- 230000008569 process Effects 0.000 claims abstract description 13
- 230000005540 biological transmission Effects 0.000 claims abstract description 8
- 238000005516 engineering process Methods 0.000 claims description 11
- 238000007726 management method Methods 0.000 claims description 8
- 238000012986 modification Methods 0.000 claims description 5
- 230000004048 modification Effects 0.000 claims description 5
- 238000012217 deletion Methods 0.000 claims description 4
- 230000037430 deletion Effects 0.000 claims description 4
- 238000003780 insertion Methods 0.000 claims description 4
- 230000037431 insertion Effects 0.000 claims description 4
- 238000012550 audit Methods 0.000 claims description 2
- 238000011161 development Methods 0.000 abstract description 9
- 238000013461 design Methods 0.000 description 3
- 238000005538 encapsulation Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于数据模型快速构建web应用的方法,包括以下步骤:S1、提取代码模板:将后端模型层(model层)、数据访问层(dao层)、服务层(service层)、控制层(controller层)、数据传输层(dto层)、以及前端页面中的通用代码分别提取为对应的FreeMarker代码模板,去除与业务相关的代码,文件中变化的内容用占位符代替;S2、获取代码文件配置信息和数据模型信息;S3、模板内容填充、生成代码文件:步骤S2中准备好了最终代码文件的详细参数,即被填充内容和配置信息。本发明可使用一个文件信息管理器管理所有自动生成代码文件的元数据信息,利用文件信息管理器完成对象信息注册和依赖配置过程,提升了代码开发效率和代码开发规范性以及代码自动生成时的灵活性。
Description
技术领域
本发明涉及计算机技术领域,具体公开了一种基于数据模型快速构建web应用的方法。
背景技术
目前,Web应用架构设计一般采用模块化、层次化以及前后端分离的设计,一个完整的业务功能需要分别实现前端和后端两部分代码,其中后端代码包括与数据库表映射的Java实体类(model层)、数据交互层(dao层)、服务层(service层)、控制层(controller层),前端代码包括静态页面(Js/CSS/Html)和动态页面(Jsp交互层)。每一层中各个文件中都存在一部分与具体业务无关并且复用率较高的代码,每当增加新功能时,这部分代码都需要手动编写或者复制以后修改,不仅耗时而且容易出错。为代替手动编写代码,通常将各层中相似的代码抽象为模板,在增加新功能时先调用模板生成通用代码文件,然后依此为基础添加具体的业务逻辑代码,最终完成业务功能的实现。
代码自动生成技术一般有两种,一是采用代码模板+配置文件的方式,其中,模板中保存的是可复用的代码,变化的代码以可变参数的形式在模板中体现,配置文件用来控制代码文件的命名、生成顺序,保存路径等信息;IntelliJ IDEA开发工具中借助插件EasyCode可以实现自动生成一部分后端代码文件,但是却无法生成前端的页面文件,而且也无法自动完成文件之间的依赖配置。另一种是通过字符串拼接方式输出逻辑代码文本的方式,直接将代码片段以字符串的形式输出到对应的文件中,这种方式实现起来较为容易,通过简单编程便可实现,但是对于模块化、代码层级多的复杂Web应用系统,除了要生成对应各层的代码文件外,还要配置各层代码之间的依赖关系,通过字符串拼接显然无法完成复杂的依赖关系配置。
针对于采用MiniUI+SpringBoot+Undertow+Ratpack+Hibernate/JPA框架的Web应用系统,由于系统在架构设计时结合了多项技术的优点,所以代码文件不仅种类较多,而且文件之间的依赖配置较为复杂。目前暂无相同的成熟技术能解决此类应用项目的代码自动生成。近似的实现方案有通过Intel liJ IDEA开发工具自动生成一部分后端代码文件。但它们都无法有效解决以下问题:
1)、通过配置脚本的方式实现代码生成,有时脚本的配置和修改的过于复杂,脚本本身和代码一样难以维护;
2)、无法生成应用中从前端页面到后端数据库操作的所有代码文件,部分代码文件仍然需要手动编写并且手动完成文件之间的相互依赖配置;
3)、已有的代码自动生成技术在代码生成过程中的灵活性不够,代码文件自动生成以后仍需作进一步修改。
发明内容
本发明的目的在于提供一种基于数据模型快速构建web应用的方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:
一种基于数据模型快速构建web应用的方法,包括以下步骤:
S1、提取代码模板:将后端模型层(model层)、数据访问层(dao层)、服务层(service层)、控制层(controller层)、数据传输层(dto层)以及前端展示页面中的通用代码分别提取为对应的FreeMarker代码模板,去除与业务相关的代码,文件中变化的内容用占位符代替;
S2、获取代码文件配置信息和数据模型信息:建立数据表之后,运行自行编写的Java Applet桌面版应用程序,打开代码生成界面,输入数据库、数据表、对象名、文件路径、代码格式等配置信息,在点击保存按钮时通过Http请求获取数据表结构信息并建立对象数据模型,同时记录其它配置信息;
S3、模板内容填充、生成代码文件:将步骤S1中准备好代码文件的模板,其中需要被填充的内容已经用占位符代替,步骤S2中准备好最终代码文件的详细参数,即被填充内容和配置信息;使用FreeMarker提供的接口将步骤S2中的参数填充到步骤S1中的模板文件中,然后生成具体的代码文件并保存到指定路径,最后基于配置信息完成对象信息注册和依赖配置。
进一步地,上述步骤S1具体包括:
S1.1、提取前端页面的代码模板:
针对采用MiniUI+SpringBoot+Undertow+Ratpack+Hibernate/JPA框架的Web应用系统,前端采用MiniUI技术,代码文件包括jsp管理页面和由js和htm组成的数据增删改查子页面,将文件中与业务相关的代码剥离出去,只保留实现增删改查功能的代码,形成前端FreeMarker代码模板;
S1.2、提取后端的代码模板:
针对采用MiniUI+SpringBoot+Undertow+Ratpack+Hibernate/JPA框架的Web应用系统,后端采用SpringBoot、Undertow、Ratpack、Hibernate/JPA技术,代码文件包括模型层(model层)、数据访问层(dao层)、服务层(service层)、控制层(controller层)、数据传输层(dto层)中的文件,根据上述步骤S1.1中前端页面对应的增删改查请求,在模型层(model层)、数据访问层(dao层)、服务层(service层)、控制层(controller层)、数据传输层(dto层)中分别剥离与业务相关的代码,只保留实现增删改查请求的代码,形成对应的后端FreeMarker代码模板;
S1.3、标记代码模板中的占位符:
针对不同的数据模型,上述步骤S1.1和S1.2中代码模板中的部分内容肯定是变化的,所以将上述步骤S1.1和S1.2得到的代码模板作进一步抽象,将模板中变化的内容,包括包名、依赖类、类名、模块名内容用占位符代替,占位符的具体值会在代码生成时由传入的数据模型信息决定。
进一步地,上述步骤S2具体包括:
S2.1、创建数据表:
在通过模板生成代码之前,通过数据库管理工具或脚本创建数据表;
S2.2、获取数据模型:
建立数据表之后,运行自行编写的Java Applet桌面应用程序,打开代码生成界面,分别输入数据表名称,以及对象名、文件路径、代码格式的配置信息;在点击“生成代码”按钮时,首先通过Http请求获取上述步骤S2.1中的数据表信息,包括字段名称、类型、备注信息,然后建立该数据表的数据模型对象,作为后续生成文件的基础信息;
S2.3、获取代码文件的配置信息:
在点击“生成代码”按钮时,除了建立数据模型对象外,同时会将用户输入的其它信息,如表名、模块名、包名、保存路径进行记录,作为后续生成文件的基础信息。
进一步地,上述步骤S3具体包括:
S3.1、依据数据模型和FreeMarker代码模板生成代码文件:
根据上述步骤S1中的FreeMarker代码模板、S2中的数据模型信息和文件配置信息,按照先生成前端文件,再生成后端文件的顺序,依次将数据模型中的参数插入到每个代码模板中的占位符中,同时依据配置信息生成文件名称、并保存到指定的路径中;
S3.2、保存每个文件的元数据信息:
使用一个文件信息管理器管理所有生成的代码文件的元数据信息,包括文件名称、保存路径、文件所属模块信息;
S3.3、对象信息注册和依赖配置:
根据上述步骤S3.2中文件信息管理器中记录的文件信息,完成对象信息的注册和文件之间依赖关系的配置。
进一步地,上述步骤S3.1具体包括:
S3.1.1、确定文件名称及建立文件目录:
依据上述步骤S2.3中获取的数据模型信息(对象名),将FreeMarker代码模板的文件名称中的占位符用对象名替换,得到最终的文件名称;依据上述步骤S2.3中获取代码文件配置信息(根路径、模块名、包名称),建立文件目录结构,确定文件的最终保存路径;
S3.1.2、读取模板文件,将模板中的可变参数用对象信息代替:
读取FreeMarker代码模板文件中的内容,依据上述步骤S2.3中获取的数据模型信息(对象名、包名、模块名),因为占位符的名称和数据模型信息的名称是一一对应的,所以根据名称匹配原则,将模板内容中的所有占位符用对应的数据模型信息代替,便可生成新的代码内容,即最终的代码文件内容;
S3.1.3、实时向客户端发送文件生成过程信息:
通过代码生成界面可以实时观察服务器反馈的信息,可以查看代码文件的生成进度以及当代码文件生成失败时的详细报错原因,进而作出调整并重新启动生成代码文件的过程;
S3.1.4、保存生成的代码文件:
将上述步骤S3.1.2得到的新代码内容保存到新文件中,并根据上述步骤S3.1.1得到的文件名称和路径保存新文件到指定位置。
进一步地,上述步骤S3.3具体包括:
S3.3.1、根据路径和模块名称获取配置文件:
每个模块下的指定路径下都有多份类型不同的配置文件(路由配置文件、依赖配置文件、对象注册文件),配置文件中描述了本模块所有文件的配置信息,当生成新代码文件时,需要在配置文件中补充关于新文件的配置信息;通过上述步骤S2.3获取的模块名信息,可以在对应文件路径下找到配置文件,判断配置文件是否存在,如果存在则继续执行,否则退出该流程;
S3.3.2、读取配置文件到缓存区并确定插入位置:
在找到配置文件后,先把配置文件读取到缓存区中,然后定位到与新配置信息类型相同的代码段的末尾,即新配置信息的插入位置;
S3.3.3、插入配置信息到指定位置:
依据配置文件的类型,从文件信息管理器中分别获取每个文件的元信息,按照该配置文件中的配置规则生成对应的配置信息,在文件缓存区中将配置信息插入到上述步骤S3.3.2定位的位置;
S3.3.4、缓存区内容重写回文件:
用缓存区内容覆盖原配置文件,即完成文件回写。
与现有技术相比,本发明的有益效果是:本发明针对采用模块化编程、代码分层架构、前后端分离思想的软件架构,具体实现采用MiniUI+SpringBoot+Undertow+Ratpack+Hibernate/JPA等技术的Web应用系统,提供了一种基于数据模型,利用freeMarker模板引擎,通过可视化的配置界面快速构建Web应用的方法。其优点主要如下:
1)、通过将应用程序中各分层中的共性基础代码抽取为freeMarker代码模板,工程师在新增功能时可以基于代码模板快速生成基础代码文件,并自动完成对象注册和路由配置等繁琐操作,有效减少了工程师不必要的开发时间投入,提高了代码开发效率;
2)、运行自行编写的Java Applet桌面版应用程序,利用可视化的代码生成界面,运行时会生成一个界面,便于让用户输入一些变化的内容,例如对象名称、包名、模块名,代码风格、文件保存根路径等信息,这些信息会被记录下来,在生成代码时会将这些信息填充到代码模板中的占位符中,生成具体的代码文件;可以便捷地完成代码文件命名、前端页面风格选择、保存路径设置等配置,有效减少了繁琐的脚本配置文件编写,提升了代码自动生成的灵活性;
3)、利用代码模板自动生成代码可以有效避免由工程师手工编写代码引起的命名不规范、拼写错误、代码格式不正确等问题,有效降低了低质量代码,提升了代码开发效率和代码开发规范性以及代码自动生成时的灵活性。
具体实施方式
下面将结合本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明应用到Web应用开发过程中,其具体过程如下:本实施例中,基于MiniUI+SpringBoot+Undertow+Ratpack+Xtend+Hibernate/JPA框架搭建的Web应用系统,一共分为四个子模块工程,分别是dto(数据传输)、client(跨服务调用接口)、web(前端)、server(后端),当需要开发新功能时,需要借助代码自动生成技术分别生成dto、web和server模块中的代码文件,下面以学生(student)对象为实例,展示其具体生成代码的过程:
S1、提取代码代码
S1.1、提取后端代码模板,形成FreeMarker模板文件如下:
addDtoRequest.ftl(对象添加请求类模板)
updateDtoRequest.ftl(对象更新请求类模板)
deleteDtoRequest.ftl(对象删除请求类模板)
getDtoRequest.ftl(对象查询请求类模板)
infoDto.ftl(对象信息封装类模板)
detailDto.ftl(对象详细信息封装类模板)
addServerHandler.ftl(对象添加处理类模板)
updateServerHandler.ftl(对象更新处理类模板)
deleteServerHandler.ftl(对象删除处理类模板)
getServerHandler.ftl(对象查询处理类模板)
serverEntity.ftl(对象模型模板)
serverRepository.ftl(对象模型查询处理类模板)
serverInstance.ftl(对象模型增删改处理类模板)
serverMap.ftl(对象模型映射处理类模板)
S1.2、提取前端代码模板,形成FreeMarker模板文件如下:
webController.ftl(路由控制类模板)
webAddWin.ftl(对象添加页面模板)
webAddWinJs.ftl(对象添加页面行为控制模板)
webEditWin.ftl(对象编辑页面模板)
webEditWinJs.ftl(对象编辑页面行为控制模板)
webPanelMini.ftl(对象管理页面jsp模板)
webPanelMiniJs.ftl(对象管理页面js模板)
在数据库中创建学生表tb_student;
S1.3、标记代码模板中的占位符,将上述模板中与数据模型相关的内容用占位符代替,例如模板中的一行代码如下:
@Uri(path=″rest/${entityName}/add″,desc=″添加${entityInfo}″)(后面代码生成时,会用具体数据模型名称填充${entityName}和${entityInfo})
S2、在数据库中创建tb_student表,然后运行自行编写的Java Applet桌面版应用程序,打开可视化的代码生成界面,在页面中输入代码文件的配置信息,包括数据库名、表名、对象中英文名称、模块名、包名、代码文件存放路径等信息,然后点击“生成代码”按钮;
S3、首先生成dto子模块中的代码文件:dto模块主要包括请求参数封装类(request)、响应数据封装类(response),当调用代码生动生成功能时,会在对应模块的指定路径下构建层级目录,然后在对应的文件下生成以下文件,并在文件信息管理器中添加每个文件的信息;文件信息管理器的作用类似于一个表格,每一行记录了一个具体代码文件的详细信息,每行数据记录的信息有packageName(包名)、className(类名)、fileLocation(文件最终保存路径)、fileExtend(文件后缀名)、childModuleName(文件所属模块)、fileType(文件分类)、keys(文件配置信息,最后在配置文件中添加的内容):
AddStudentRequest.java(学生对象添加请求类)
UpdateStudentRequest.java(学生对象更新请求类)、
DeleteStudentRequest.java(学生对象删除请求类)、
GetStudentRequest.java(获取单个学生对象请求类)、
GetStudentsRequset.java(获取所有学生对象请求类)
StudentInfo.java(学生对象信息封装类)、
StudentDetail.java(学生对象详细信息封装类)
S4、生成server子模块中的代码文件:server模块主要是后端代码的实现,包括对学生对象增删改查的业务逻辑,提供对应的服务接口,主要生成以下代码文件:
S4.1、模型层:
实体类(entity):Student.java;
数据交互类(dao):StudentRepository.java、StudentInstance.java;
数据模型封装类(map):StudentMap.java;
S4.2、服务接口:
AddStudentHandler.java(学生对象添加请求处理接口类);
UpdateStudentHandler.java(学生对象更新处理接口类);
DeleteStudentHandler.java(学生对象删除处理接口类);
GetStudentHandler.java(获取单个学生对象处理接口类);
GetStudentsHandler.java(获取所有学生对象处理接口类);
S4.3、对象注册和路由配置:
实体对象注册:根据实体类的文件名称从文件信息管理器中获取实体类的配置信息,然后注册到已有的persistence.xml文件中;
新生成类对象注册:根据文件名称依次从文件信息管理器中获取各个handler文件的配置信息,然后注册到XXXModule.java(XXX代表模块名);
路由绑定:将dto子模块中的request文件和server子模块中的handler文件的对应关系保存到XXXRoute.java(XXX代表模块名)文件中;
S5、生成web子模块中的代码文件:web子模块主要是前端代码的实现,包括学生对象的管理页面和增删改子页面,请求地址映射的类,js和jsp路径配置;主要生成以下代码文件:
S5.1、管理页面:studentManage-mini.jsp,studentPanel-mini.js、studentPanelView.htm;
S5.2、添加页面:studentAddWin-mini.js,studentAddWinView.htm;
S5.3、编辑页面:studentEditWin-mini.js,studentEditWinView.htm;
控制层(control):StudentControll.java、StudentRestService.java;
路径配置,依据js和jsp的文件名称从文件信息管理器中获取路由配置信息,然后把配置信息分别插入到到已有的jsUrl.java和JspPageUrl.java配置文件,便于被其它文件灵活引用。
在本发明中,FreeMarker模板和自行编写的Java Applet桌面版应用程序是提前做好的,对于所有此类技术框架web应用中的功能,模板都是一样的,不同的是面向的数据模型不一样,但是最基础的增删改查功能是一样的,这部分通用的部分被抽象成了freeMarker模板,它是不发生变化的。所以,上述的实例案例展示的是如何使用已经做好的FreeMarker模板和自行编写的Java Appl et桌面版应用程序快速生成相关代码文件的过程。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
Claims (6)
1.一种基于数据模型快速构建web应用的方法,其特征在于,包括以下步骤:
S1、提取代码模板:将后端模型层、数据访问层、服务层、控制层、数据传输层以及前端展示页面中的通用代码分别提取为对应的FreeMarker代码模板,去除与业务相关的代码,文件中变化的内容用占位符代替;
S2、获取代码文件配置信息和数据模型信息:建立数据表之后,运行自行编写的JavaApplet桌面版应用程序,打开代码生成界面,输入数据库、数据表、对象名、文件路径、代码格式等配置信息,在点击保存按钮时通过Http请求获取数据表结构信息并建立对象数据模型,同时记录其它配置信息;
S3、模板内容填充、生成代码文件:步骤S1准备好了代码文件的模板,其中需要被填充的内容已经用占位符代替,步骤S2准备好了最终代码文件的详细参数,即被填充内容和配置信息;使用FreeMarker提供的接口将步骤S2中的参数填充到步骤S1中的模板文件中,然后生成具体的代码文件并保存到指定路径,最后基于配置信息完成对象信息注册和依赖配置。
2.根据权利要求1所述的一种基于数据模型快速构建web应用的方法,其特征在于,上述步骤S1具体包括:
S1.1、提取前端页面的代码模板:
针对采用MiniUI+SpringBoot+Undertow+Ratpack+Hibernate/JPA框架的Web应用系统,前端采用MiniUI技术,代码文件包括jsp管理页面和由js和htm组成的数据增删改查子页面,将文件中与业务相关的代码剥离出去,只保留实现增删改查功能的代码,形成前端FreeMarker代码模板;
S1.2、提取后端的代码模板:
针对采用MiniUI+SpringBoot+Undertow+Ratpack+Hibernate/JPA框架的Web应用系统,后端采用SpringBoot、Undertow、Ratpack、Hibernate/JPA技术,代码文件包括模型层、数据访问层、服务层、控制层、数据传输层中的文件,根据上述步骤S1.1中前端页面对应的增删改查请求,在模型层、数据访问层、服务层、控制层、数据传输层中分别剥离与业务相关的代码,只保留实现增删改查请求的代码,形成对应的后端FreeMarker代码模板;
S1.3、标记代码模板中的占位符:
针对不同的数据模型,上述步骤S1.1和S1.2中代码模板中的部分内容肯定是变化的,所以将上述步骤S1.1和S1.2得到的代码模板作进一步抽象,将模板中变化的内容,包括包名、依赖类、类名、模块名内容用占位符代替,占位符的具体值会在代码生成时由传入的数据模型信息决定。
3.根据权利要求1所述的一种基于数据模型快速构建web应用的方法,其特征在于,上述步骤S2具体包括:
S2.1、创建数据表:
在通过模板生成代码之前,通过数据库管理工具或脚本创建数据表;
S2.2、获取数据模型:
建立数据表之后,运行自行编写的Java Applet桌面应用程序,打开代码生成界面,分别输入数据表名称,以及对象名、文件路径、代码格式的配置信息;在点击“生成代码”按钮时,首先通过Http请求获取上述步骤S2.1中的数据表信息,包括字段名称、类型、备注信息,然后建立该数据表的数据模型对象,作为后续生成文件的基础信息;
S2.3、获取代码文件的配置信息:
在点击“生成代码”按钮时,除了建立数据模型对象外,同时会将用户输入的其它信息,如表名、模块名、包名、保存路径进行记录,作为后续生成文件的基础信息。
4.根据权利要求1所述的一种基于数据模型快速构建web应用的方法,其特征在于,上述步骤S3具体包括:
S3.1、依据数据模型和FreeMarker代码模板生成代码文件:
根据上述步骤S1中的FreeMarker代码模板、S2中的数据模型信息和文件配置信息,按照先生成前端文件,再生成后端文件的顺序,依次将数据模型中的参数插入到每个代码模板中的占位符中,同时依据配置信息生成文件名称、并保存到指定的路径中;
S3.2、保存每个文件的元数据信息:
使用一个文件信息管理器管理所有生成的代码文件的元数据信息,包括文件名称、保存路径、文件所属模块信息;
S3.3、对象信息注册和依赖配置:
根据上述步骤S3.2中文件信息管理器中记录的文件信息,完成对象信息的注册和文件之间依赖关系的配置。
5.根据权利要求4所述的一种基于数据模型快速构建web应用的方法,其特征在于,上述步骤S3.1具体包括:
S3.1.1、确定文件名称及建立文件目录:
依据上述步骤S2.3中获取的数据模型信息,将FreeMarker代码模板的文件名称中的占位符用对象名替换,得到最终的文件名称;依据上述步骤S2.3中获取代码文件配置信息,建立文件目录结构,确定文件的最终保存路径;
S3.1.2、读取模板文件,将模板中的可变参数用对象信息代替:
读取FreeMarker代码模板文件中的内容,依据上述步骤S2.3中获取的数据模型信息,因为占位符的名称和数据模型信息的名称是一一对应的,所以根据名称匹配原则,将模板内容中的所有占位符用对应的数据模型信息代替,便可生成新的代码内容,即最终的代码文件内容;
S3.1.3、实时向客户端发送文件生成过程信息:
通过代码生成界面可以实时观察服务器反馈的信息,可以查看代码文件的生成进度以及当代码文件生成失败时的详细报错原因,进而作出调整并重新启动生成代码文件的过程;
S3.1.4、保存生成的代码文件:
将上述步骤S3.1.2得到的新代码内容保存到新文件中,并根据上述步骤S3.1.1得到的文件名称和路径保存新文件到指定位置。
6.根据权利要求4所述的一种基于数据模型快速构建web应用的方法,其特征在于,上述步骤S3.3具体包括:
S3.3.1、根据路径和模块名称获取配置文件:
每个模块下的指定路径下都有多份类型不同的配置文件,配置文件中描述了本模块所有文件的配置信息,当生成新代码文件时,需要在配置文件中补充关于新文件的配置信息;通过上述步骤S2.3获取的模块名信息,可以在对应文件路径下找到配置文件,判断配置文件是否存在,如果存在则继续执行,否则退出该流程;
S3.3.2、读取配置文件到缓存区并确定插入位置:
在找到配置文件后,先把配置文件读取到缓存区中,然后定位到与新配置信息类型相同的代码段的末尾,即新配置信息的插入位置;
S3.3.3、插入配置信息到指定位置:
依据配置文件的类型,从文件信息管理器中分别获取每个文件的元信息,按照该配置文件中的配置规则生成对应的配置信息,在文件缓存区中将配置信息插入到上述步骤S3.3.2定位的位置;
S3.3.4、缓存区内容重写回文件:
用缓存区内容覆盖原配置文件,即完成文件回写。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310320304.5A CN116400914A (zh) | 2023-03-29 | 2023-03-29 | 一种基于数据模型快速构建web应用的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310320304.5A CN116400914A (zh) | 2023-03-29 | 2023-03-29 | 一种基于数据模型快速构建web应用的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116400914A true CN116400914A (zh) | 2023-07-07 |
Family
ID=87017136
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310320304.5A Pending CN116400914A (zh) | 2023-03-29 | 2023-03-29 | 一种基于数据模型快速构建web应用的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116400914A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116594611A (zh) * | 2023-07-18 | 2023-08-15 | 浩鲸云计算科技股份有限公司 | 一种基于领域模型语言的零代码通用服务实现方法 |
-
2023
- 2023-03-29 CN CN202310320304.5A patent/CN116400914A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116594611A (zh) * | 2023-07-18 | 2023-08-15 | 浩鲸云计算科技股份有限公司 | 一种基于领域模型语言的零代码通用服务实现方法 |
CN116594611B (zh) * | 2023-07-18 | 2023-10-27 | 浩鲸云计算科技股份有限公司 | 一种基于领域模型语言的零代码通用服务实现方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111241454B (zh) | 一种生成网页代码的方法、系统和装置 | |
EP1347394B1 (en) | Schema-oriented content management system | |
US7610545B2 (en) | Annotations for tracking provenance | |
US7836055B2 (en) | XNA relationship management | |
CN108762743B (zh) | 一种数据表操作代码生成方法及装置 | |
CN113076096A (zh) | 一种桌面应用程序开发方法、装置、设备及存储介质 | |
CN112860777B (zh) | 数据处理方法、装置及设备 | |
CN113064593B (zh) | 移动app动态化的方法、装置、计算机设备及存储介质 | |
CN111400246B (zh) | 异步导入文件方法、装置、计算机设备和存储介质 | |
CN112764743B (zh) | 一种基于数据模型驱动自动生成软件的方法 | |
US9244706B2 (en) | Command line shell command generation based on schema | |
CN116400914A (zh) | 一种基于数据模型快速构建web应用的方法 | |
CN113254455B (zh) | 数据库的动态配置方法、装置、计算机设备及存储介质 | |
CN113918149A (zh) | 接口开发方法、装置、计算机设备和存储介质 | |
CN113778421A (zh) | 一种生成业务代码的方法及设备 | |
CN110633162B (zh) | 远程调用实现方法、装置、计算机设备及存储介质 | |
CN116521181B (zh) | 基于游戏系统的脚本数据处理方法、装置、设备及介质 | |
CN114860224B (zh) | 一种Web端地图可编程图层的实现方法 | |
JP2017524211A (ja) | 複数の情報源からの情報とツールを統一する方法、並びに前記方法を応用するコンピュータプログラム製品及び装置 | |
US11693652B2 (en) | Automated authoring of software solutions from a data model | |
CN115981650A (zh) | 一种网站搭建方法及装置、电子设备、存储介质 | |
TWI414995B (zh) | 開發及執行平台 | |
WO2019028989A1 (zh) | 一种代码分析方法及终端设备 | |
CN114579141A (zh) | require框架转化为VUE框架的方法及装置 | |
CN113608726B (zh) | 代码生成方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |