如何在不更改url的情况下调用servlet?

问题描述:

我想调用一个servlet而不改变url彻底的jsp。我该怎么做呢?如何在不更改url的情况下调用servlet?

通常的方法是通过XMLHttpRequestiframe。各种图书馆,如YUI将为你做繁重的工作。

如果你一定要在你的JSP一个servlet响应:

<jsp:include page="yourServlet" /> 

但是,这是建筑较差。正确的方法是让一个充当控制器的servlet在JSP上显示数据。

另一种粗鲁的方式是使用java.net.URL.openStream()(或类似的调用)获取其他servlet的响应,并将结果清理到您的servlet的输出流。但是,如上所述,您最好使用标准的AJAX技术,或者更好的OOP设计。

+0

但我不想使用ajax。 它可能没有ajax? – RMS 2010-04-04 09:55:05

+0

是的 - 如前所述,直接获取内容并将其刷新到输出流,或者将servlet包含为页面(thx,Yuval) – 2010-04-08 14:21:34

在JSP中,您可以调用片段中的任何代码。我建议你改变程序,以便servlet和JSP都调用一个通用的方法。这是更容易编码和测试。

它看起来有点脏,但它的工作...并且通常由营销跟踪服务使用... 您可以添加一个隐藏的1x1px图像到您的jsp,与url =您的servlet。当试图加载IMG,servlet将被浏览器称为...

http://yourservlet?args=...

这样你就可以调用servlet很容易,但是你不能把servlet响应(或者你只是可以显示不同的图像浏览器,如果需要...)