0

ちょっと簡単な質問ですが、行き詰まっています。JSP内からサーブレットを実行したいので、次のようなことを試しました。

<%
    //Fetch server name port from request
    //Fetch email_addr from DB request
                   *
                   *
                   *
    //Forward request to servlet sendWelcomeMsg
    RequestDispatcher rd = getServletContext().getRequestDispatcher("/sendWelcomeMsg?  
      recipient=" + email_addr + 
      "&contentServerName=" + request.getServerName() + 
      "&contentServerPort=" + request.getServerPort());
    rd.forward(request, response);
%>

上記の種類の作品は、ページを手動で更新すると、ページの残りの部分がレンダリングされますが、更新を行った場合のみです。それで、私の質問は、

  1. JSP を大幅に書き直さずにこれを行うためのより良い方法はありますか?
  2. 不合格 1.、スクリプトレット内からプログラムでページを更新するにはどうすればよいですか?
4

2 に答える 2

0

JSP からサーブレットへの転送は正常ではありません。それは逆のはずです。それ以外の場合、サーブレットが応答処理を完全に引き継いでいます。IllegalStateExceptionJSP の番になると、サーブログにエラーが表示される場合があります。

ただし、サーブレットの出力を JSP に含めることはできます (問題のサーブレットは応答ヘッダーを変更できますが、変更すべきではないことに注意してください)。

rd.include(request, response);

それでも、それは通常のやり方ではありません。結果を JSP に表示する前に GET 要求でビジネス タスクを実行する場合は、そのタスクをサーブレットに入れdoGet()、JSP に転送させる必要があります。リクエストは最初にコントローラー (通常はサーブレット) にヒットし、次にコントローラーがビュー (通常は JSP) に転送されます。サーブレット wiki ページで例を見つけることができます。

于 2013-01-18T20:12:23.250 に答える
0

ユーザーが自由にサーブレットを呼び出せるようにするフォームをページに追加することにしました (サーブレットはウェルカム メッセージを送信し、ユーザーはテストとして複数のメッセージを送信する場合があります)。

于 2013-01-18T19:58:33.977 に答える