タイトルとして、サーブレット内の別のサーブレットを呼び出して呼び出されたサーブレット応答を取得する方法はありますか?サーブレット内の別のサーブレットを呼び出す方法は?
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フォームからサーブレットを呼び出すがサーブレットは呼び出されない
- 5. GWTのviewImplクラスからサーブレットを呼び出す方法は?
- 6. サーブレット呼び出しwindow.showModalDialog(...)
- 7. Phonegapでサーブレット(JEE5)を呼び出す方法は?
- 8. Faceletからサーブレットを適切に呼び出す方法は?
- 9. 外部アプリケーションからGwtServiceImplサーブレットを呼び出す方法は?
- 10. 呼び出すサーブレットはIllegalStateExceptionが
- 11. 呼び出すサーブレットjavascript関数は、セッション
- 12. 別のサーブレットからサーブレットポストを呼び出す
- 13. サーブレットのdestroyメソッドの呼び出し
- 14. サーブレットからネイティブプログラムを呼び出す
- 15. サーブレットからgoogle apiを呼び出す
- 16. 問題を呼び出すサーブレット
- 17. HTMLからサーブレットを呼び出す
- 18. JSPページからサーブレットを呼び出す
- 19. サーブレットをAjaxから呼び出す
- 20. サーブレットフィルタ - 呼び出されたサーブレット/ JSPの識別
- 21. サーブレットが呼び出されない
- 22. xhtmlサーブレットを呼び出すとサーブレットが呼び出されず、応答が返されません
- 23. HTMLフォームから呼び出すサーブレット、ないサーブレットからの応答
- 24. あるサーブレットから別のサーブレットにセッションを転送する方法は?
- 25. jspのURLを介してサーブレットの関数を呼び出す
- 26. gwtのformpanelをサブミットするときにサーブレットを呼び出す
- 27. 他のサーブレットの関数を呼び出す
- 28. Java EEプロジェクトをデプロイするときにサーブレットを呼び出す方法
- 29. サーブレットが呼び出し元のJSPとセッションを認識させる方法
- 30. フォームを使わずにjspからサーブレットを呼び出す方法
あなたのコードに説明を追加してください。 –
これは、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 –