• ベストアンサー

ServletからJSPに遷移させた後もServletに制御を戻したいんですが

Java初心者です。宜しくお願いします。 現在、ServletからJSPに対してIncludeまたはForward した後にServlet側にて処理を継続させる方法が ないか調べています。 Forwardは×かなというところ まではわかったのですがIncludeで行った場合 Servlet → JSPに遷移させた後に呼び出し元の Servletに制御を戻す事は可能でしょうか。 また、一般的な方法がありましたらご教授お願いします。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

なぜそうしたいか? というのがわからないので、適切な回答になっているか分かりませんが、 サーブレット リクエストを受け取る ↓ (継続させたい)処理を行う ↓ JSPを返す となっているんですよね?(今は) サーブレット         スレッド リクエストを受け取る ↓ スレッドを生成して開始させる→処理を行う ↓              ↓ JSPを返す         処理を継続して行う とすれば、サーブレットはスレッドを起動・開始すればすぐ処理が戻ってきますので、JSPを返した後も処理が継続できるのでは? ただし、サーバーのリソースなどを考慮して下さいね。

yamataro25
質問者

お礼

pcbeginnerさん、 早速のご意見有難うございます。 サーブレットにてログを出力しますが、処理中に ログ出力を行ってしまうと性能が落ちてしまう。 そこで、Servletから画面表示(JSP)に遷移した 後に、ログを出力するという事を考えました。 pcbeginnerさんのおっしゃる通りリソースに注意 して検討進めてみます。 有難うございました。

その他の回答 (1)

noname#25358
noname#25358
回答No.1

 Forward というのは、全ての処理が終了したあとで呼び出すもので、一度呼び出したらもう戻ってこれません。  なので、そういう場合は Servlet 内で、 PrintWriter out = response.getWriter(); out.println("<html><body>あいうえお</body>");  といった具合に、PrintWriter クラスに対してHTMLの出力を自分で制御して行います。  この方法ならば、中途半端にHTMLを出力した状態でも、Servlet の動作は止まりません。  なお、この方法を用いたあとで Forward を呼ぼうとすると例外が発生します。

yamataro25
質問者

お礼

deagleさん、 早速のご意見有難うございます。 可能は可能でしょうが、HTMLの出力は JSPで行うという前提のもと行っております ので今回は適用できそうにありません。 今後に活かさせて頂きます。 有難うございました。

関連するQ&A

専門家に質問してみよう