CN103514026A - 一种通过javascript直接调用java api的方法 - Google Patents
一种通过javascript直接调用java api的方法 Download PDFInfo
- 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
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的方法。
背景技术
在软件产品二次开发的过程中,很多时候产品提供的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的类反射机制执行该方法。
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)
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)
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平台 |
-
2013
- 2013-09-27 CN CN201310453107.7A patent/CN103514026A/zh active Pending
Patent Citations (3)
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)
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)
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 |