我有一个相当奇怪的场景,我相信在 stackoverflow 上浏览这些问题的大量人才会毫不费力地帮助我解决这个问题。
我有一个用 Java 编写的项目——它在获取文件并将其上传到成像系统方面做了很多事情。该代码以给定文件路径的方式工作,它获取文件并将其上传到我想要的系统(这包括许多特定于业务的逻辑,这些逻辑无意公开)。
现在,我想要一个带有 FILE 输入的 HTML 页面,它接受一个文件,然后调用我编写的代码,该代码将完成获取文件并将其上传到系统的工作。
这意味着我必须将我的 Java 项目迁移到可以“调用”的项目中。
有很多第三方 jar 文件可以帮助我的代码运行。
第一种情况是以某种方式将代码制作成一个 scriptlet - 所有其他代码都可以编译成一个 jar。我讨厌有一个 jsp 来做这笔交易,但只是为了让它工作的阶段,我想接受这个选项。 我现在的问题是jar 文件去哪里了? 这将在 Apache Tomcat 中运行,所以我想我只是将 jars 放在 lib 目录中并重新启动 Tomcat,这样就可以解决问题了吗?是否需要修改任何类路径文件以使 Tomcat 服务器知道新的 jar 文件?
第二种情况是有一个 servlet,然后将 jars 放在 WEB-INF 目录中?请有人指导我这个。
您认为将执行业务逻辑的 Java 代码“迁移”到可以从 html 页面调用的东西的最佳方法是什么? 什么相当于代码隐藏?
非常感谢您,希望您能为我稍微解释一下这件事。
最佳答案
这实际上是一个非常标准的方案,您可以采用多种方法,具体取决于您希望该服务的可扩展性、安全性等。我将从需要最少工作量的方法开始在你这边:
- 按照您在文件输入中提到的那样创建 JSP。
- 创建一个 servlet,只需获取上传的文件(Tomcat 会将其存储在一个临时文件夹中,您可能需要先移动它)并获取路径。
- 让您的 servlet 通过
ProcessBuilder
调用您现有的 Java 代码,并将路径作为命令行参数传递给它。等待它完成。 - 根据需要删除临时文件。
更彻底的方法是让您的 servlet 直接调用后端 Java 代码。如果您已经有一个可以调用的接口(interface),那么您可以将 jar 文件放入您的 webapp 的 WEB-INF/lib
文件夹中,您的 servlet 将能够引用 jar 文件中的类,这样您就可以调用无论您需要直接上什么课。如果这个过程会很耗时,那么您不想暂停 servlet 和请求,因此最好将它交给一个异步线程,该线程将负责处理需要完成的任何事情归档并在之后清理。
关于Java 等效于 ASP.net 中的代码隐藏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8526997/