Java サーブレットからJSPへフォワードする




サーブレットで処理を書くのは簡単ですが、HTMLを書くには不便です。
JSPでHTMLを書くのは簡単ですが、処理を書くには不便です。

これを両立するためには、サーブレットとJSPの両方を使います。
サーブレットでブラウザから受信。サーブレット内で、処理を実施。
サーブレットで処理が終わったら、JSPに値を渡して、JSPでブラウザに応答すると、処理とデザインを分離できます。
サーブレットでの処理後、JSPを呼び出すことを「JSPへフォワードする」と呼びます。

Youtube版はこちらからどうぞ

Youtubeで動画を公開しました。こちらもぜひぜひ。
こちらでは、もう少し細かく解説してます。

サーブレットからJSPへフォワードするサンプル

ブラウザから受信した変数と足し算した結果を、ブラウザに応答します。

ForwardTestServlet.java

サーブレットで、ブラウザから受信した変数x,yを足し算。
JSPに計算結果zを渡すため、リクエストに計算結果をセットします。

forward.jsp

ブラウザから受信した変数x,yと、サーブレットで計算した値zを取得。ブラウザに応答します。

実行結果

x=1,y=2をブラウザより渡します。
このx,yをもとに、サーブレットで足し算を実施。JSPに計算結果(z)を渡します。
JSPは、ブラウザにx,y,zの各値を返します。

サンプルの解説

サーブレットからJSPへのフォワード

サーブレットからJSPへのフォワードは、次の行で行っています。
「getServletContext().getRequestDispatcher(String).forward(request, response)」
これは、もちろん次のように分けて書いても構いません。

サーブレットからJSPへ値を渡す

HttpServletRequest#setAttribute(String,Object)は、そのリクエストが有効な間(ブラウザから受信して応答するまで)、値を保持してくれます。
これを使って、サーブレットで処理した結果を覚えておき、JSP側でHttpServletRequest#getAttribute(String)で値を取得することで、サーブレットとJSPで値を引き継いで処理を続けることできます。

別のサーブレットやJSPへリダイレクトするする方法は・・?

別のサーブレットやJSPへリダイレクトするする方法は、こちらを見てください。

Java サーブレットから別のサーブレットやJSPへリダイレクトする

2018.04.19