正如標題文件檔案化管理,如何調用servlet中的另一個servlet並獲得被調用的servlet響應?如何在servlet中調用另一個servlet?
0
A
回答
1
getServletContext().getNamedRequestDispatcher("servletName")
.forward(request, response);
但是我認爲有更好的選擇。例如,將您需要的代碼移到輔助類/實用程序方法中,然後調用它。
當我想起來了,你可能想另一件事:單獨調用一個servlet。爲此你需要:
InputStream is = new URL(urlOfTheServlet).openStream();
IOUtils.copy(is, response.getOutputStream());
(這是使用Apache的commons-io的輸入流複製到當前請求的輸出流)
3
使用RequestDispatcher
實例,它是可以通過HttpServletRequest
實例。但是,如果您正在查找由servlet容器持有的單個實例(例如在ServletContext
實例中使用getServlet
方法),則這是一個完全不同的故事。 servlet規範有目的地棄用了可能允許這種選項的操作。但是,如果你真的想在執行另外一個調用servlet的一個,使用RequestDispatcher
代替forward
方法include
方法。
0
使用ServletContext的或當前請求得到的RequestDispatcher,然後用RequestDispatcher的forward()方法或包括()。
可以使用Spring MockHttpServletRequest和MockHttpServletResponse創建新的請求和響應,而不是使用當前請求。
例子:
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
RequestDispatcher dispatcher = request.getRequestDispatcher(url);
MockHttpServletRequest servletRequest = new MockHttpServletRequest();
servletRequest.setServerName(request.getServerName());
servletRequest.setServerPort(request.getServerPort());
servletRequest.setSession(request.getSession());
servletRequest.setMethod(HttpMethod.GET.name());
servletRequest.setRequestURI(url);
servletRequest.setParameters(parameters);
MockHttpServletResponse servletResponse = new MockHttpServletResponse();
servletResponse.setCharacterEncoding("UTF-8");
// Use include() instead of forward(). Similar as client HttpClient GET
dispatcher.include(servletRequest, servletResponse);
String content = servletResponse.getContentAsString();
0
String destinationBlockAccount ="./BlockAccount";
response.sendRedirect(response.encodeRedirectURL(destinationBlockAccount));
此外,你還可以直接從JSP發送一個參數,如:
response.sendRedirect(response.encodeRedirectURL("./GetAccount?accountID="+accountID));
相關問題
- 1. 從另一個servlet調用servlet
- 2. 從另一個Servlet調用Servlet
- 3. 如何調用一個servlet到GWT中的另一個servlet使用Java
- 4. 繼電器的servlet(servlet調用另一個servlet)
- 5. 如何在另一個servlet中使用其他servlet服務?
- 6. servlet擴展另一個servlet
- 7. 如何將arraylist從一個servlet傳遞到另一個servlet
- 8. 從另一個servlet調用Servlet的服務()
- 9. 如何在另一個servlet的init()方法內使用一個servlet的輸出?
- 10. 如何在另一個Servlet的post方法中包含一個Servlet?
- 11. 如何在另一個servlet中檢索一個servlet會話屬性
- 12. Java Servlet擴展另一個Servlet
- 13. Java servlet不派發到另一個servlet
- 14. 在我的servlet中調用一個servlet中的java類
- 15. 如何從另一個類調用servlet中的方法
- 16. 調用Servlet中的servlet
- 17. 一個jvm中的servlet如何與另一個jvm中的servlet進行通信
- 18. 如何調用servlet?
- 19. 從另一個Java Servlet中激活一個Java Servlet
- 20. servlet如何從另一個servlet獲取數據?
- 21. 如何從另一個servlet傳遞ArrayList?
- 22. 如何在一個Servlet
- 23. 從另一個應用程序的servlet調用servlet的post方法
- 24. 將連接對象從一個servlet傳遞到另一個servlet
- 25. 將數組從一個servlet傳遞到另一個servlet
- 26. 從另一個servlet檢查一個servlet狀態
- 27. 如何在servlet容器中創建一個servlet intance?
- 28. 只調用一個servlet類的方法,而不是整個servlet
- 29. 如何在我的servlet中調用Config.java?
- 30. 如何在servlet中調用javascript cookie?
請添加解釋你的代碼。 – 2016-02-27 18:49:54
這意味着你有一個名爲BlockAccount的URL模式/ BlockAccount的servlet。然後我們可以重定向到這個servlet。看到http://stackoverflow.com/questions/20371220/what-is-the-difference-between-response-sendredirect-and-request-getrequestdis – 2016-02-27 20:27:21
和https://tomcat.apache.org/tomcat-5.5-doc/ servletapi /使用javax/servlet的/ HTTP/HttpServletResponse.html – 2016-02-27 20:28:01