Java等价于ASP.net中的代码隐藏



我有一个相当奇怪的场景,我相信在stackoverflow上浏览问题的巨大人才会很容易帮助我。

我有一个Java项目——它基本上是把一个文件上传到一个成像系统中。代码以给定文件路径的方式工作,它获取文件并将其上传到我想要的系统(这包括许多特定于业务的逻辑,这些逻辑没有任何目的要公开)。

现在,我想有一个HTML页面与文件输入,这需要一个文件,然后调用我写的代码,这将做的工作采取的文件,并将其上传到系统。

这意味着我必须将我的Java项目迁移到可以"可调用"的东西中。

有很多第三方jar文件可以帮助我的代码运行。

  1. 第一种情况是以某种方式将代码放入scriptlet中—所有其他代码都可以编译到jar中。我讨厌使用jsp来完成交易,但只是为了让它达到工作的阶段,我想考虑这个选项。我现在的问题是 jar文件去哪里?这将在Apache Tomcat中运行,所以我想我只是把jar放在lib目录中,然后重新启动Tomcat,这应该做的交易?是否有任何需要修改的类路径文件才能使Tomcat服务器知道新的jar文件?

  2. 第二种情况是有一个servlet,然后jar放到WEB-INF目录中?请有人给我讲讲这个。

你认为将我的Java代码"迁移"到可以从html页面调用的业务逻辑的最好方法是什么?代码隐藏的等效是什么?

事先非常感谢你,希望你能给我解释一下这件事。

这实际上是一个非常标准的场景,根据您希望此服务的可伸缩性和安全性等不同,您可以采用多种方法。我将从您需要最少工作量的方法开始:

  1. 创建一个JSP,就像前面提到的使用文件输入一样。创建一个servlet,它简单地获取上传的文件(Tomcat会将其存储在一个临时文件夹中,您可能想先移动它)并获取路径。
  2. 让servlet通过ProcessBuilder调用现有的Java代码,并将路径作为命令行参数传递给它。等待它完成。
  3. 删除临时文件

更彻底的方法是让servlet直接调用后端Java代码。如果你已经有了一个可以调用的接口,那么你可以把jar文件放入你的webapp的WEB-INF/lib文件夹中,你的servlet将能够引用jar文件中的类,这样你就可以直接调用任何你需要的类。如果这个过程非常耗时,那么您就不希望占用servlet,因此也不希望占用请求,因此最好的做法是将其交给异步线程,该线程将负责处理需要对文件执行的任何操作,并在此之后进行清理。

也许最接近的等价是servlet。在WEB-INF/web.xml中,您可以设置servlet来处理某些url的web请求。一旦您在servlet中处理了用户的请求,您通常会将响应转发到.jsp文件。

第三方库进入WEB-INF/lib。(另一种方法是将第三方jar放到tomcat的lib文件夹中。我不推荐这种方法,因为,假设您决定迁移到不同版本的Tomcat。如何记住要复制哪些jar文件?)

最新更新