[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][基本] ループ処理(for文)

Javaのループ処理の基本である、for文を解説します。 ●文法 for( [①初期化];

記事を読む

no image

[Java][Framework] Spring Bootを使って、Spring MVC速攻開発してみる!(DB接続あり)

STSインストール STSは、EclipseにSpring関連のいろいろな機能を詰め込んだオールイ

記事を読む

no image

[Java] Apache POIでExcel操作!

Apache POIをまずは使ってみようという方(自分も含め)のメモ 導入 Maven htt

記事を読む

no image

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

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

記事を読む

no image

[Java][Framework] Spring BootのJPAでDB接続した際のEntityキャッシュのクリア方法

Spring BootのJPAでDBアクセスした際に、処理を一定量こなすと、Heapが足りなくな

記事を読む

no image

[java] 文字列の一部を切り取る方法(substring)

こんにちは。 今回は文字列の一部を切り取る方法について解説します。 具体的には、String

記事を読む

no image

[Java][Spring] Spring3でDIしてみる!(アノテーション使用)

Spring3を使って、一番基本的な形のプログラムを作成してみます。 今回は、アノテーションを

記事を読む

no image

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

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

記事を読む

no image

[Java][Eclipse] Mavenが利用可能な動的Webプロジェクトの作成

こんにちは、keiです。 今回は、Mavenが利用可能な動的Webプロジェクトの作成について解

記事を読む

no image

[Java] 日付の計算方法(DateFormat、Date、Calendar)

こんにちは、kei0310です。 Javaで日付を計算する方法について解説します。 まず

記事を読む

スポンサードリンク

Message

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

スポンサードリンク

no image
[git] Windowsへのインストール(Git for Windows)

概要 Windows環境にGitをインストールします。 インストー

no image
[Fluentd] WindowsにFluentdをインストールする

WindowsにFluentdをインストールしたときのメモ 参考にさ

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

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

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

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

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

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

→もっと見る

  • 2018年6月
    « 10月    
     123
    45678910
    11121314151617
    18192021222324
    252627282930  
  • 2018年6月
    « 10月    
     123
    45678910
    11121314151617
    18192021222324
    252627282930  
PAGE TOP ↑