[Java][Servlet][JSP] ServletからJSPへの転送
こんにちは。
今回は、「Servletでリクエストを受けて、JSPで表示する。」方法を解説します。
世間一般のFrameworkで使われているアレですね。
この仕組みを理解できれば、「業務ロジック(Post)をServletで受けて、ViewをJSPに任せる」
なんていうMVCモデルの一部を作ることができます。
本当ならば、Frameworkをつかえばこんなことを気にする必要はないのですが、
昨今の若いエンジニアは、JavaEEについて全く無頓着な方が多く、
「Frameworkの裏でどんなことが行われているか」に興味が無いことが多いです。
与えられたFrameworkの上に業務仕様を乗っけるだけのプログラミングは
「サルでもできる」
が私のポリシーですので、JavaEEの基礎を学び、フレームワークがどのように動いているのか
ということをソースを読めば分かるレベルになっておく必要があると、私は考えています。
と、いうことで、簡単な例で解説します。
●プロジェクトの作成
今回の記事で使用するプロジェクトは、[Java][JSP] EclipseでのJSP作成で
使用したものをそのまま使います。
●Servletの作成
以下の位置に「TestServletToJsp.java」を作成します。
●TestServletToJsp.java
「TestServlet.java」との差は「doPost()」メソッドのみ。
「context取得 > requestDispatcher取得 > forward設定」のみでJSPへの転送が完了します。
requestDispatcher取得の際に、JSPのパスを指定しているのがポイントです。
package test.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/TestServletToJsp")
public class TestServletToJsp extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public TestServletToJsp() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// ContentType設定
response.setContentType("text/html; charset=Shift_JIS");
// Writer取得
PrintWriter writer = response.getWriter();
// HTML作成
writer.print("<HTML><BODY>");
writer.print("doGetが実行されました。<BR/>");
writer.print("<form method=\"post\"><input type=\"submit\" name=\"doPost実行用のボタン\"></form>");
writer.print("</BODY></HTML>");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// contextの取得
ServletContext context = getServletConfig().getServletContext();
// RequestDispatcherの取得
RequestDispatcher dis = context.getRequestDispatcher("/TestJSP.jsp");
// forward設定
dis.forward(request, response);
}
}
●実行結果
Tomcat起動後、以下のURLにアクセスします。
「http://localhost:8080/TestJavaServlet/TestServletToJsp」
「送信」ボタンを押下すると、以下のJSPで作成した画面が表示されます。
良く見ると、URL部分はサーブレットのままであることがわかります。
ですので、サーブレットに「コントローラ」の機能を作成してあげて、
「要求処理>ビジネスロジック>表示JSP選択」の流れを作ってあげれば、
既にそれは立派なフレームワークということになります。
スポンサードリンク
関連記事
-
[Java][Servlet] EclipseでのJavaServlet作成
こんにちは、今回はEclipseを使用してJavaServletを作成します。 Eclipse
-
[Java] テキストファイルの読み込み方法
こんにちは、今回はテキストファイルをJavaで読む方法を紹介します。 標準で提供されているクラ
-
[Java] Javaのインストール(プログラム開発・入門用)
Javaのコードを書きたい!! という目的のためのJavaのインストール方法と、コマンドラインでの
-
[Java] 文字列の分割(split)
こんにちは。 今回は、文字列の分割について解説します。 昔はStringTokenize
-
[java] 文字列の一部を切り取る方法(substring)
こんにちは。 今回は文字列の一部を切り取る方法について解説します。 具体的には、String
-
[Java][MySQL] JavaからMySQLを使う方法
MySQLは、フリーでありながら商用としても使用できるパワーを持つデータベース(RDB)です。
-
[Java] StringBuilderの使い方(Stringを連結するクラス)
今回は、可変長文字列クラスのStringBuilderを紹介します。 固定長文字列クラスのSt
-
[Java][Spring] Spring3でDIしてみる!(アノテーション使用)
Spring3を使って、一番基本的な形のプログラムを作成してみます。 今回は、アノテーションを
-
[Java][基本] ループ処理(for文)
Javaのループ処理の基本である、for文を解説します。 ●文法 for( [①初期化];
-
[Java] CSVファイルの読み込み方法
こんにちは、kei0310です。 CSVファイルをJavaに取り込む方法を解説します。