我需要從另一個servlet調用servlet POST方法,並在Servlet參數中傳遞blob。這是否可行,如果可以的話,該怎麼辦。 PS:我不能使用Apache HttpClient從另一個Servlet調用Servlet
回答
你需要自己創建和發送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的。換句話說,您必須能夠在普通的vanilla Java應用程序中使用main()
方法執行此代碼。這樣可以更輕鬆地進行測試和微調。一旦你得到它的工作,只需讓servlet執行相同的一段代碼即可。
無關的問題,我的印象中,有一個重要的設計失敗的地方,當然,如果兩者的servlet在同一個web應用上下文中運行。您想要發送POST請求的另一個servlet顯然過於緊密,應該重構。
你的意思是從你的應用程序調用另一個Web服務?如果是這樣,那麼像HttpClient就是你想要的東西。如果你的意思是你想以編程方式在你的應用程序中調用另一個servlet,那麼你正在尋找forward to it或include it。
我正在尋找在我的應用程序內調用另一個servlet,但它必須是víaPOST方法。我通常會做的是response.redirect(...),但是調用GET方法...我怎樣才能調用POST? – fernandohur
我所說的:轉發或包括,取決於你想要做什麼。請參閱JEE教程中的[「調用其他Web資源」](http://download.oracle.com/javaee/6/tutorial/doc/bnagi.html)以獲取更多詳細信息。 –
您可以在您的應用程序中將調度程序發送到另一個servlet,並將其轉發或包含它,如@Ryan所示。在你的第一個servlet中,代碼應該是這樣的:
ServletContext context = this.getServletContext();
RequestDispatcher dispatcher = context.getRequestDispatcher("/otherurltoservlet");
// change your request and response accordingly
dispatcher.forward(request, response);
我需要的是在我的應用程序的另一個servlet上調用POST方法。那會叫「otherurltoservlet」的POST方法嗎? – fernandohur
我相信,如果第一個servlet是通過post調用的,第二個servlet會在調度器的前向鏈中通過post調用。 – rmarimon
看看這裏有關GET的問題http://stackoverflow.com/questions/4374548/does-jspforward-or-requestdispatcher-forward-use-get-or-post – rmarimon
- 1. 從另一個servlet調用servlet
- 2. 繼電器的servlet(servlet調用另一個servlet)
- 3. 從另一個servlet調用Servlet的服務()
- 4. servlet擴展另一個servlet
- 5. 如何在servlet中調用另一個servlet?
- 6. 如何將arraylist從一個servlet傳遞到另一個servlet
- 7. 從另一個Java Servlet中激活一個Java Servlet
- 8. 將連接對象從一個servlet傳遞到另一個servlet
- 9. 將數組從一個servlet傳遞到另一個servlet
- 10. 從另一個servlet檢查一個servlet狀態
- 11. 從另一個應用程序的servlet調用servlet的post方法
- 12. Java Servlet擴展另一個Servlet
- 13. Java servlet不派發到另一個servlet
- 14. 使用RequestDispatcher將數據從servlet傳遞到另一個servlet
- 15. 如何調用一個servlet到GWT中的另一個servlet使用Java
- 16. 從Servlet調用一個html文件
- 17. 從Ajax調用Servlet
- 18. 從servlet調用jsp
- 19. 從jsp調用Servlet
- 20. 從servlet調用EJB
- 21. 從Ajax調用servlet
- 22. 從JavaScript調用Servlet
- 23. 從window.showModalDialog調用Servlet(...)
- 24. 從JSP調用Servlet
- 25. 從另一個servlet發送的Servlet中獲取數據
- 26. 的request.getParameter()返回的Java Servlet NULL從另一個servlet
- 27. servlet如何從另一個servlet獲取數據?
- 28. 調用從表單一個servlet,但該servlet永遠不會調用
- 29. 如何從另一個類調用servlet中的方法
- 30. 如何從另一個servlet傳遞ArrayList?
那麼Apache HttpClient是開源的...複製和粘貼? –
我無法使用,因爲我使用Google App Engine,它對可以使用的某些類施加限制 – fernandohur