我正在设想将来使用Tomcat和servlet在Web服务器上运行的(现在本地)程序。我只是对如何将现有应用程序与HTTPRequests集成到servlet中感到困惑。
我只需要一些关于如何将所有内容组合在一起的建议,以及servlet如何调用应用程序逻辑。
我想象的是:
听起来合理吗?
我认为不是单独创建一个进程,而是可以在Servlet中调试我的应用程序并让它以这种方式运行。
答案 0 :(得分:1)
不完全知道您的应用程序是什么,我的建议是在当前应用程序中尽可能多地隔离逻辑。这将是您的“业务”逻辑。将其保存为打包到jar中的单独项目。
创建一个新项目作为您的Web层(最有可能打包为WAR)。这将包括用于与业务逻辑交互的servlet和jsp页面。例如,您有一个用于创建某种业务对象的表单。该表单将是一个由servlet“提供”的jsp页面。提交表单时,servlet将处理业务项目(jar)中的表单提交和调用代码。
Web内容只是作为一个单独的层,保持所有业务逻辑与可视化Web端分离,这也允许您在其上构建一个服务层,最终可能位于您的Web项目和实际业务之间逻辑,虽然取决于你的目的可能会有点过头。
答案 1 :(得分:1)
servlet是Java为Web服务器实现通用网关接口程序的方法。因此,您正在撰写的这个程序(您可能想提供更多信息)应该是您提供输入的程序类型,处理输入,然后提供响应。
我建议您将当前正在编写的应用程序分解为控制器和模型类。处理输入和输出的任何东西都是你的控制器。任何处理业务逻辑的东西都是模型。 (任何打印出来的东西都是视图。是的,我说的是MVC,模型 - 视图 - 控制器模式。)
因此,您的应用程序中的控制器(在将所有内容移动到servlet之前)可能会从命令行中获取一堆参数,检查它们的正确性,正确的组合类型等。
您的模型代码应该有一个不依赖于控制器的漂亮,简单的界面。 (它不应该知道它是从您的应用程序还是从servlet层调用。)它应该提供一种方法,通过获取对您的业务逻辑有意义的参数来执行业务逻辑。因此,如果您正在编写一个计算两个数字之和的servlet,那么模型层应该有一个采用两个数字参数并返回总和的方法。这样你可以将模型放入应用程序或servlet中,它就可以正常工作。只有您的控制器需要更改。
我不会讨论如何编写servlet与应用程序 - 这是一个涉及的主题,并且有大量的例子。但是servlet调用应用程序逻辑的方式很简单:实例化模型类,然后在该实例上调用方法。就像任何其他Java应用程序一样。
答案 2 :(得分:0)
考虑到你的应用程序是一个线性的,而不是线程化的程序,当你实例化类的对象并且对象有一些外部接口(公共方法)时会执行某些操作。然后servlet容器将启动,你必须编写一个新的servlet类,它将创建对象的实例并从标准的servlet方法(service(),doGet()等)调用你的方法。请记住将类放在servlet容器或webapp的类路径中。