[Java][Servlet][JSP] ServletからJSPへの転送

公開日: : Java , , , ,

こんにちは。

今回は、「Servletでリクエストを受けて、JSPで表示する。」方法を解説します。

世間一般のFrameworkで使われているアレですね。

この仕組みを理解できれば、「業務ロジック(Post)をServletで受けて、ViewをJSPに任せる」
なんていうMVCモデルの一部を作ることができます。

本当ならば、Frameworkをつかえばこんなことを気にする必要はないのですが、
昨今の若いエンジニアは、JavaEEについて全く無頓着な方が多く、
「Frameworkの裏でどんなことが行われているか」に興味が無いことが多いです。

与えられたFrameworkの上に業務仕様を乗っけるだけのプログラミングは

「サルでもできる」

が私のポリシーですので、JavaEEの基礎を学び、フレームワークがどのように動いているのか
ということをソースを読めば分かるレベルになっておく必要があると、私は考えています。

と、いうことで、簡単な例で解説します。

●プロジェクトの作成

今回の記事で使用するプロジェクトは、[Java][JSP] EclipseでのJSP作成
使用したものをそのまま使います。

●Servletの作成

以下の位置に「TestServletToJsp.java」を作成します。
ServletToJSP01

●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」

表示結果は以下。
ServletToJSP02

「送信」ボタンを押下すると、以下のJSPで作成した画面が表示されます。
良く見ると、URL部分はサーブレットのままであることがわかります。
ですので、サーブレットに「コントローラ」の機能を作成してあげて、
「要求処理>ビジネスロジック>表示JSP選択」の流れを作ってあげれば、
既にそれは立派なフレームワークということになります。
ServletToJSP03

スポンサードリンク

関連記事

no image

[Java][Jersey] JerseyでRESTfulなJAX-RS Webサービス作成

こんにちは、keiです。 今回はRESTfulなWeb Serviceの作成を行っていきます。

記事を読む

no image

[Java] Javaのインストール(プログラム開発・入門用)

Javaのコードを書きたい!! という目的のためのJavaのインストール方法と、コマンドラインでの

記事を読む

no image

[Java][Spring] DIする方式を細かく見てみる① @ScopeでのSingletonとPrototypeの指定

今回は@Scopeアノテーションを用いて、オブジェクトをDIする方式を選択してみます。 ●解説

記事を読む

no image

[Java] クラスとインスタンス

こんにちは。 クラスとインスタンスについて解説します。 インスタンスは「オブジェクト」とも言

記事を読む

no image

[Java] 文字列の分割(split)

こんにちは。 今回は、文字列の分割について解説します。 昔はStringTokenize

記事を読む

no image

[Java][Servlet] EclipseでのJavaServlet作成

こんにちは、今回はEclipseを使用してJavaServletを作成します。 Eclipse

記事を読む

no image

[Java] StringBuilderの使い方(Stringを連結するクラス)

今回は、可変長文字列クラスのStringBuilderを紹介します。 固定長文字列クラスのSt

記事を読む

no image

[Java] CSVファイルの読み込み方法

こんにちは、kei0310です。 CSVファイルをJavaに取り込む方法を解説します。

記事を読む

no image

[Java][JSP] EclipseでのJSP作成

今回は、Eclipseを用いてJSPを作成してみます。 まず、Eclipseを起動します。

記事を読む

no image

[Java][MySQL] JavaからMySQLを使う方法

MySQLは、フリーでありながら商用としても使用できるパワーを持つデータベース(RDB)です。

記事を読む

スポンサードリンク

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

スポンサードリンク

no image
[Re:dash] BigQuery接続で日本語タイトルを出す(v2.0.0)

BigQueryは現在マルチバイトを含むSQLを発行することができない

no image
[Python] Nullの判定方法(None)

Nullの判定方法(None) 表記方法 Pythonでは、Nul

no image
[Python] 型の検査・判定

Pythonでの型の検査・判定方法 isinstance サン

no image
[python] 日付の取り扱い(datetime) 現在日付、計算、文字列変換(format)

現在日付 日付の計算 [crayon-5a165c9347ce

no image
[python] 文字列結合

pythonでの文字列結合 サンプル

→もっと見る

  • 2017年11月
    « 10月    
     12345
    6789101112
    13141516171819
    20212223242526
    27282930  
  • 2017年11月
    « 10月    
     12345
    6789101112
    13141516171819
    20212223242526
    27282930  
PAGE TOP ↑