我有两个带有servlet的java web应用程序,它们使用绝对URL相互通信。我之所以这样做,是因为他们不会一直在同一台服务器上运行,即使它们仍然运行良好。
但是,我现在更改了代码,因此只有一个Web应用程序,第一个应用程序(A)现在使用第二个应用程序(B)作为库。因此,我希望能够直接在第二个应用上拨打电话,而无需知道完整的网址。
理想情况下,B中的servlet是纯控制器,但不幸的是它们不是,逻辑被包含在请求和响应中,并且不容易解耦。
我见过的唯一选择是使用RequestDispatcher。但是,在使用上下文获取调度程序时:
context.getRequestDispatcher("/servlet/mapping");
要拨打电话,我需要合成请求和响应对象,但我不知道如何执行此操作。我已经看过包装纸,但他们需要从一些事情开始,但我还没有一个起点。我可以创建自己的包装器来处理查询参数,但同样,我没有请求从中开始。
或者我有一个更简单的解决方案吗?谢谢!
答案 0 :(得分:1)
只需将所有request.getParameter()类型调用转换为定期将变量传递给函数即可。假设您的servlet写出文本而不是二进制文件,将所有out.print转换为连接到servlet末尾返回的字符串。或传递一个输出流而不是响应对象,而不是调用servlet response.getouputstream使用传入的输出流。然后你可以使你的servlet只是一个常规类,它接受一些参数并返回一个字符串或打印到你输出的输出流传入。