CN103514026A - 一种通过javascript直接调用java api的方法 - Google Patents

一种通过javascript直接调用java api的方法 Download PDF

Info

Publication number
CN103514026A
CN103514026A CN201310453107.7A CN201310453107A CN103514026A CN 103514026 A CN103514026 A CN 103514026A CN 201310453107 A CN201310453107 A CN 201310453107A CN 103514026 A CN103514026 A CN 103514026A
Authority
CN
China
Prior art keywords
javascript
java api
java
annotation
class
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
Application number
CN201310453107.7A
Other languages
English (en)
Inventor
曹明远
卢学军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MOCHA SOFTWARE (TIANJIN) CO Ltd
Original Assignee
MOCHA SOFTWARE (TIANJIN) CO Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by MOCHA SOFTWARE (TIANJIN) CO Ltd filed Critical MOCHA SOFTWARE (TIANJIN) CO Ltd
Priority to CN201310453107.7A priority Critical patent/CN103514026A/zh
Publication of CN103514026A publication Critical patent/CN103514026A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种通过javascript直接调用java api的方法,其特征在于包括步骤:S1、将java api相关的类增加适当的注释;S2、设置转换器引擎,用于解析java api相关类的注释,监听通过javascript方式调用java api的事件,处理来自javascript方式的调用并生成javascript可识别的json对象。本发明在仍然仅提供一套java的api的情况下,通过对java的api做一些简单的注释,便可以让二次开发人员能够直接调用到java的api。通过本发明,产品中仅需要维护java的api,二次开发人员可以通过java方式和javascript方式都能调用到同样的java的api,从而提高了软件产品二次开发的效率。

Description

一种通过javascript直接调用java api的方法
技术领域
本发明涉及软件开发领域,特别涉及一种通过javascript直接调用java api的方法。
背景技术
在软件产品二次开发的过程中,很多时候产品提供的java版本的api并不能满足二次开发的需要,二次开发人员在修改jsp页面时希望能够调用一个javascript方法达到调用java的api的功能。虽然通过ajax实现调用是一种行之有效的解决方案,但是通过这种方式二次开发人员必须增加必要的java代码,而且需要重新编译成class文件,这些操作无疑会增加二次开发的工作量和开发难度。
因此,现有技术中需要一种能够通过javascript直接调用java api的方法。
发明内容
鉴于现有技术中存在的问题,本发明目的在于提供一种通过javascript直接调用java api的方法。在仍然仅提供一套java的api的情况下,通过对java的api做一些简单的注释,便可以让二次开发人员能够直接调用到java的api。通过本发明,产品中仅需要维护java的api,二次开发人员可以通过java方式和javascript方式都能调用到同样的java的api,从而提高了软件产品二次开发的效率。
本发明提供的一种通过javascript直接调用java api的方法,其特征在于包括步骤:
S1、将java api相关的类增加适当的注释;
S2、设置转换器引擎,用于解析java api相关类的注释,监听通过javascript方式调用java api的事件,处理来自javascript方式的调用并生成javascript可识别的json对象。
优选的,所述注释分为3个级别,即类注释、方法注释、参数注释。
优选的,所述注释可以添加到实现类上、也可以添加到实现类的接口上、还可以添加到实现类的父类中。
优选的,所述处理来自javascript方式的调用,即匹配到javascript方式调用的java api的方法,利用java的类反射机制执行该方法。
附图说明
图1例示了本发明实施例一种通过javascript直接调用java api的方法流程图。
具体实施方式
为使本发明的上述目的、特征和优点更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
图1例示了本发明实施例一种通过javascript直接调用java api的方法流程图,如图1所示,所述方法包括步骤:
S1、将java api相关的类增加适当的注释;
优选的,所述注释可分为3个级别,即类注释、方法注释、参数注释,这些注释的添加不会影响java api的相关类的功能。
优选的,对于增加的注释,为了提高灵活性,注释可以添加到实现类上、也可以添加到实现类的接口上、还可以添加到实现类的父类中。
S2、设置转换器引擎,用于解析java api相关类的注释,监听通过javascript方式调用java api的事件,处理来自javascript方式的调用并生成javascript可识别的json对象。
优选的,所述处理来自javascript方式的调用,即匹配到javascript方式调用的java api的方法,利用java的类反射机制执行该方法。
由于本发明引入了JDK5中注释的概念,我们自定义了类注释、方法注释、和参数注释等,使得对java api的改造相当容易,同时我们设计的转换器引擎返回给javascript调用的结果是标准的json格式数据,这对于二次开发人员是非常容易理解的数据结构。
由于采用了以上方案,二次开发人员无需编写任何java代码就可以做到很方便的通过javascript方式调用到java的api,并且日后产品中java api的功能缺陷修复对二次开发的模块影响减少。
下面通过一个具体实例来更清楚地了解本发明方法的流程。
1)假设有一个java api,类名为UserManager即人员管理接口,其中有个方法为getUserByLoginId即根据登录id获取用户信息,该方法的参数是loginId即用户登录id,该方法的返回值是User对象实体;
2)下面无需修改该api的实现逻辑,依次添加注释,即在类上增加注释RestMapping(path="/userMgt"),在方法上增加注释RestMapping(path="/user/id/{id}",method=RequestMethod.GET),在参数上增加注释PathVariable;
3)以上便完成了java api的注释添加工作,下面当通过javascript方式发送一个http的get请求时,这里请求中如带有如下url,即/userMgt/user/id/zhangsan,这时转换器引擎捕获到这个请求后便匹配到了UserManager类的getUserByLoginId方法,其中参数为zhangsan;随后便利用java的类反射机制执行了该方法,同时获取到了User实体对象;
4)下面对User实体对象进行转换成json对象的工作,这里我们在转换器引擎中设计了一个转换工具,转换的原则是对实体对象中以"get","is","has"为前缀的方法进行转换,同时考虑到有实体对象嵌套实体对象的问题,我们设置了实体对象转换的嵌套层次参数,可以灵活设置,这样避免了因为循环嵌套可能引起的内存泄露问题;
5)Json对象转换完成后,javascript方法就可以很方便的对获取到的json对象进行操作了。
以上是对本发明的优选实施例进行的详细描述,但本领域的普通技术人员应该意识到,在本发明的范围内和精神指导下,各种改进、添加和替换都是可能的,例如使用可实现同种功能目的的算法、使用不同的编程语言(如C、C++、Java等)实现等。这些都在本发明的权利要求所限定的保护范围内。

Claims (4)

1.一种通过javascript直接调用java api的方法,其特征在于包括步骤:
S1、将java api相关的类增加适当的注释;
S2、设置转换器引擎,用于解析java api相关类的注释,监听通过javascript方式调用java api的事件,处理来自javascript方式的调用并生成javascript可识别的json对象。
2.如权利要求1所述的方法,其特征在于:
所述注释分为3个级别,即类注释、方法注释、参数注释。
3.如权利要求1所述的方法,其特征在于:
所述注释可以添加到实现类上、也可以添加到实现类的接口上、还可以添加到实现类的父类中。
4.如权利要求1所述的方法,其特征在于:
所述处理来自javascript方式的调用,即匹配到javascript方式调用的java api的方法,利用java的类反射机制执行该方法。
CN201310453107.7A 2013-09-27 2013-09-27 一种通过javascript直接调用java api的方法 Pending CN103514026A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310453107.7A CN103514026A (zh) 2013-09-27 2013-09-27 一种通过javascript直接调用java api的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310453107.7A CN103514026A (zh) 2013-09-27 2013-09-27 一种通过javascript直接调用java api的方法

Publications (1)

Publication Number Publication Date
CN103514026A true CN103514026A (zh) 2014-01-15

Family

ID=49896800

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310453107.7A Pending CN103514026A (zh) 2013-09-27 2013-09-27 一种通过javascript直接调用java api的方法

Country Status (1)

Country Link
CN (1) CN103514026A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104540023A (zh) * 2014-11-28 2015-04-22 江苏银河电子股份有限公司 在TVOS系统中运行Linux系统Web应用的方法
WO2017041657A1 (zh) * 2015-09-09 2017-03-16 阿里巴巴集团控股有限公司 一种应用接口管理方法和装置
CN110083525A (zh) * 2019-03-15 2019-08-02 平安普惠企业管理有限公司 内存泄露的定位方法、装置、计算机设备及存储介质
CN110727703A (zh) * 2019-09-23 2020-01-24 苏宁云计算有限公司 一种自动识别json代码中注释的方法及装置
US11436248B2 (en) 2018-12-20 2022-09-06 At&T Intellectual Property I, L.P. Systems and methods for providing dynamically configured responsive storage
US20230328091A1 (en) * 2022-04-07 2023-10-12 Vmware, Inc. Automated discovery of vulnerable endpoints in an application server

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7213236B2 (en) * 2001-11-30 2007-05-01 Intrinsyc Software International, Inc. Method of bridging between .Net and Java
CN102207873A (zh) * 2011-06-15 2011-10-05 中国联合网络通信集团有限公司 基于安卓平台的JavaScript扩展对象实现方法及绑定接口结构
CN103294455A (zh) * 2012-02-27 2013-09-11 杭州勒卡斯广告策划有限公司 一种软件服务实现方法、系统及Java平台

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7213236B2 (en) * 2001-11-30 2007-05-01 Intrinsyc Software International, Inc. Method of bridging between .Net and Java
CN102207873A (zh) * 2011-06-15 2011-10-05 中国联合网络通信集团有限公司 基于安卓平台的JavaScript扩展对象实现方法及绑定接口结构
CN103294455A (zh) * 2012-02-27 2013-09-11 杭州勒卡斯广告策划有限公司 一种软件服务实现方法、系统及Java平台

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
NAMELD001等: "《http://bbs.mjtd.com/forum.php?mod=viewthread&tid=73219》", 8 January 2009 *
RAYMOND CHEN: "《windows编程启示录》", 31 August 2007, 机械工业出版社 *
大树: "《http://blog.sina.com.cn/s/blog_872758480101121n.html》", 15 August 2012 *
爱开卷360: "《http://starscream.iteye.com/blog/1063966》", 1 February 2012 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104540023A (zh) * 2014-11-28 2015-04-22 江苏银河电子股份有限公司 在TVOS系统中运行Linux系统Web应用的方法
WO2017041657A1 (zh) * 2015-09-09 2017-03-16 阿里巴巴集团控股有限公司 一种应用接口管理方法和装置
US11436248B2 (en) 2018-12-20 2022-09-06 At&T Intellectual Property I, L.P. Systems and methods for providing dynamically configured responsive storage
CN110083525A (zh) * 2019-03-15 2019-08-02 平安普惠企业管理有限公司 内存泄露的定位方法、装置、计算机设备及存储介质
CN110727703A (zh) * 2019-09-23 2020-01-24 苏宁云计算有限公司 一种自动识别json代码中注释的方法及装置
CN110727703B (zh) * 2019-09-23 2022-10-11 苏宁云计算有限公司 一种自动识别json代码中注释的方法及装置
US20230328091A1 (en) * 2022-04-07 2023-10-12 Vmware, Inc. Automated discovery of vulnerable endpoints in an application server

Similar Documents

Publication Publication Date Title
CN103514026A (zh) 一种通过javascript直接调用java api的方法
JP6523354B2 (ja) 改善されたインターフェースを備えるステートマシンビルダー及び状態非依存イベントの処理
CN107832045B (zh) 跨编程语言接口转换的方法和装置
EP3170130B1 (en) Automatically generating execution sequences for workflows
JP2022070905A (ja) 音声起動されたデータ・パケットのデータ構造プーリング
US20150089415A1 (en) Method of processing big data, apparatus performing the same and storage media storing the same
CN111061464B (zh) 解析代码生成方法、装置、设备及存储介质
CN103065221A (zh) 基于bpel的多学科协同优化流程建模与调度的方法和系统
JP2011118879A (ja) ユーザインタフェース操作の位置独立な実行
CN104852939A (zh) 一种部署能力接口的方法和系统
JP2016157407A (ja) テキスト分析及び応答システムのための語彙意味パターンの事前構築方法
CN108154341A (zh) 基于数据流和工作流的统一调度平台及工作方法
CN102402455A (zh) 调用动态链接库的方法和装置
CN101546272B (zh) 一种编译器及其实现方法
CN110704099B (zh) 联盟链的构建方法、装置和电子设备
CN114449063B (zh) 一种报文处理方法、装置及设备
US20150294241A1 (en) Enterprise integration platform
CN115237399A (zh) 用于采集数据的方法、存储介质、处理器及工程车辆
CN103914304A (zh) 一种基于sap平台的不同结构类型参数转换方法
CN109901934A (zh) 生成接口帮助文档的方法和装置
Miyamoto et al. An approach for synthesizing intelligible state machine models from choreography using petri nets
US8910118B2 (en) Extracting business rules of a service-oriented architecture (SOA) system
CN113110874A (zh) 用于生成代码结构图的方法和装置
CN107885604B (zh) 异构系统间通信的方法及装置、计算机设备和存储介质
Thu et al. Automated test data generation for typescript web applications

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20140115