如何用java为现有的基于web的应用程序构建命令行界面
我使用JSP和servlet创建了一个基于web的应用程序,该应用程序使用SQL Server DB作为其后端 架构如下所示:如何用java为现有的基于web的应用程序构建命令行界面,java,command-line,ejb,command-prompt,Java,Command Line,Ejb,Command Prompt,我使用JSP和servlet创建了一个基于web的应用程序,该应用程序使用SQL Server DB作为其后端 架构如下所示: 我的所有业务逻辑都保存在一个jar文件中 我已经使用JSP创建了我的视图,并且正在使用servlet与我的业务逻辑jar交互 jar连接到数据库以保存和补充信息,这些信息由我的servlet转发到JSP 我的web应用程序在远程Tomcat服务器上运行 现在,我得到了一个新的要求。我必须创建一个命令行界面,在这里我应该能够指定命令列表并点击enter(或者,创建一组命令
谢谢。您说您的业务逻辑在一个罐子里 为什么不以这个JAR作为依赖项启动另一个项目,并将其构建为一个可执行的JAR呢? 然后简单地使用System.in和System.out与用户交互 编辑: 因此,您的应用程序是托管的。您是否有像REST、SOAP或任何其他API一样的API 然后,您可以构建一个客户端,读取用户编写的字符串,对其进行解析,并在API中调用正确的服务。您使用的是Spring吗? 您能否指定CLI应该做什么 你可以照托马斯说的做。 您也可以使用模板引擎,如Velocity。。形成输出。 使用一些JavaCurse,比如library,使您的输出。。。看起来不错 正在指定命令。。。 陛下考虑一下您的业务逻辑,您到底向用户展示了什么。 记住webappui就是webappui。控制台ui是不同的。用户期望不同的行为 所以命令像
show goods category="for kids"
那太好了。
也不要忘记不同的帮助命令
yourJarName.jar--help/-h等
如果您希望以交互模式编写应用程序。。。想想那里的帮助命令。你看过Primefaces终端了吗 我看到两种选择:
- 创建客户端CLI以生成与服务器相同的数据 收到。换句话说,您不修改服务器代码,而是创建一个 客户端CLI模块(例如),用于解析命令行并发送 与实际GUI发送的内容完全相同
- 在web应用程序中设置一个文本区域(装饰为CLI)以进行响应 在每次按下Enter键时,都会将行发送到服务器。在…上 在您的服务器上,您可以创建一个实用程序类(比如CLIParser.java) 实例),并用于解析接收到的命令, 验证它并运行它
- 列表脚本-返回可用脚本列表主机的列表
- 返回可用主机运行脚本的列表(脚本名、主机地址)
- 在地址为on的主机上运行脚本scriptName如果应用程序支持,则hostAddress可能会返回结果
- 您的数据结构看起来很简单。您还提到,您设计应用程序时采用了业务逻辑与前端分离的方式
在这种情况下,您可以考虑将业务逻辑暴露为基于REST的WebService。这应该不是很难,因为您的应用程序中有分层结构
看起来有几种方法:
你可以考虑或另一个框架。 你可以为他们找到很多教程。举个例子
从命令行应用程序中,您可以以不同的方式调用web服务。仅仅因为我大部分时间使用Jersey JAX-RS实现,我发现使用它最方便。您可以找到一个简短的教程,介绍如何使用Jersey客户端从命令行应用程序执行此操作。JBoss的框架中还包含一个完整的JAX-RS实现(也是完全认证的JAX-RS实现)。您甚至可以决定不使用任何客户端API,并使用HttpURLConnection手动完成所有工作,但我不建议这样做。对于简单服务,使用客户端API或使用HttpURLConnection手动完成所有工作没有太大区别,但是您永远不知道什么时候您的应用程序会变得不那么简单,因为您的客户端在开始时无法想到新的需求希望对您有所帮助您可以使用python创建CLI。到目前为止,我使用的python很容易实现CLI。谢谢@Shriram,但我不得不使用Java。你知道我如何用Java实现它吗?我不会投反对票,因为你的问题结构很好,但你必须更具体地说明这个CLI必须实现什么,因为现在它有点广泛。它将使用什么平台(Linux终端?Windows cmd?定制Java提示符?),这些命令将控制什么?@AlexisLeclerc,我已经编辑了我的问题。“请帮帮我。这就是我开始建造的,”托马斯说。但我被困在这里。比如说,当我运行命令1时,我的应用程序创建了一个类的对象,比如M