从另一个Servlet调用Servlet Post

时间:2011-10-15 19:28:16

标签: java html servlets post

我需要从另一个servlet调用servlet POST方法并在servlets参数中传递一个blob。这是可能的,如果是这样的话怎么办呢。 PS:我不能使用Apache HttpClient

3 个答案:

答案 0 :(得分:8)

您需要自己创建并发送HTTP请求。您无法使用forward / redirect / include,因为您要将方法从GET更改为POST,并且您希望发送multipart/form-data请求。

由于HttpClient(和其他第三方库?)显然不是一个选项,最好的办法是使用提供的标准Java SE API java.net.URLConnection。长话短说:Using java.net.URLConnection to fire and handle HTTP requests在底部,您可以找到multipart/form-data示例。

请注意,此问题并非特定于servlet。换句话说,您必须能够使用main()方法在普通的Java应用程序中执行此代码。这样可以更轻松地进行测试和微调。一旦你开始工作,只需让servlet执行相同的代码即可。


无关问题,我的印象是某处存在重大设计失败,当然,如果这两个servlet都在同一个Web应用程序上下文中运行。您要发送POST请求的另一个servlet显然过于紧密耦合,应该重构。

答案 1 :(得分:7)

您可以在应用程序中获取另一个servlet的调度程序并将其转发或包含在@Ryan建议中。在第一个servlet中代码应该是这样的:

ServletContext context = this.getServletContext();
RequestDispatcher dispatcher = context.getRequestDispatcher("/otherurltoservlet");

// change your request and response accordingly

dispatcher.forward(request, response);

答案 2 :(得分:1)

您的意思是从您的应用程序拨打另一个Web服务吗?如果是这样,那么HttpClient之类的东西就是你想要的。如果您的意思是希望以编程方式在应用中调用另一个servlet,那么您可能需要forward to itinclude it