タイトルとして、サーブレット内の別のサーブレットを呼び出して呼び出されたサーブレット応答を取得する方法はありますか?サーブレット内の別のサーブレットを呼び出す方法は?
0
A
答えて
1
getServletContext().getNamedRequestDispatcher("servletName")
.forward(request, response);
私はより良いオプションがあると仮定と思いますが。たとえば、必要なコードをヘルパークラス/ユーティリティメソッドに移動して呼び出します。
私はそれについて考えるようになるかもしれません、別のものを望むかもしれません:別々にサーブレットを呼び出します。そのために以下のものが必要です。HttpServletRequest
インスタンスを通じて利用可能である
3
使用RequestDispatcher
インスタンス(これは現在の要求の出力ストリームに入力ストリームをコピーするにはApacheのコモンズ-IOを使用している)
InputStream is = new URL(urlOfTheServlet).openStream();
IOUtils.copy(is, response.getOutputStream());
。あなたは[
ServletContext
インスタンスに
getServlet
方法を使用してのような]サーブレットコンテナが保持している単一インスタンスのホールドを得ることで探しているなら
はしかし、それは全く別の話です。サーブレットの仕様は、このようなオプションを許可するかもしれない操作を意図的に廃止しました。しかし、の場合、実際にを呼び出す場合は、forward
メソッドの代わりにRequestDispatcher
のinclude
メソッドを使用してください。
0
ServletContextまたは現在のリクエストを使用してRequestDispatcherを取得し、RequestDispatcher forward()またはinclude()を使用します。
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. サーブレット内または別のタグ内でカスタムタグを呼び出す方法は?
- 2. 別のサーブレットからサーブレットのサービスを呼び出す
- 3. 別のサーブレットからサーブレットを呼び出す
- 4. htmlからサーブレットを呼び出す方法とサーブレットがjspを呼び出す方法は?
- 5. また、フォルダ内のサーブレットからJSPを呼び出す方法
- 6. HTMLフォームからサーブレットを呼び出すがサーブレットは呼び出されない
- 7. サーブレットからサーブレットを呼び出し、1つのアプリケーション内でJSP(woフォーム)を呼び出す
- 8. GWTのviewImplクラスからサーブレットを呼び出す方法は?
- 9. サーブレットのpostメソッドを呼び出す方法は?
- 10. サーブレット呼び出しwindow.showModalDialog(...)
- 11. org.apache.catalina.core.StandardWrapperValveを呼び出すSEVERE:サーブレットのServlet.service()
- 12. サーブレットが別のサーバのクラスのメソッドを呼び出す
- 13. サーブレットへのjsp呼び出しで別々のajax呼び出しを持つ
- 14. jspからサーブレットでdoDeleteを呼び出す方法は?
- 15. 外部アプリケーションからGwtServiceImplサーブレットを呼び出す方法は?
- 16. swtからサーブレットを呼び出す方法は?
- 17. Faceletからサーブレットを適切に呼び出す方法は?
- 18. Phonegapでサーブレット(JEE5)を呼び出す方法は?
- 19. 呼び出すサーブレットはIllegalStateExceptionが
- 20. 呼び出すサーブレットjavascript関数は、セッション
- 21. Javaサーブレットの呼び出しがサーブレットに届かない
- 22. 別のサーブレットからサーブレットポストを呼び出す
- 23. サーブレットのdestroyメソッドの呼び出し
- 24. サーブレットをAjaxから呼び出す
- 25. 問題を呼び出すサーブレット
- 26. jspでサーブレットを呼び出すフォーム
- 27. HTMLからサーブレットを呼び出す
- 28. サーブレットからgoogle apiを呼び出す
- 29. サーブレットからネイティブプログラムを呼び出す
- 30. サーブレットでoracleストアド・プロシージャを呼び出す
あなたのコードに説明を追加してください。 –
これは、URLパターン/ BlockAccountを持つBlockAccountという名前のサーブレットがあることを意味します。次に、このサーブレットにリダイレクトできます。 http://stackoverflow.com/questions/20371220/what-is-the-difference-between-response-sendredirect-and-request-getrequestdis –
およびhttps://tomcat.apache.org/tomcat-5.5-doc/を参照してください。 servletapi/javax/servlet/http/HttpServletResponse.html –