[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] 日付の計算方法(DateFormat、Date、Calendar)
こんにちは、kei0310です。 Javaで日付を計算する方法について解説します。 まず
 
-  
                            
                              - 
              
[Java] テキストファイルの読み込み方法
こんにちは、今回はテキストファイルをJavaで読む方法を紹介します。 標準で提供されているクラ
 
-  
                            
                              - 
              
[Java] 文字列の分割(split)
こんにちは。 今回は、文字列の分割について解説します。 昔はStringTokenize
 
-  
                            
                              - 
              
[Java] StringBuilderの使い方(Stringを連結するクラス)
今回は、可変長文字列クラスのStringBuilderを紹介します。 固定長文字列クラスのSt
 
-  
                            
                              - 
              
[Java][MySQL] JavaからMySQLを使う方法
MySQLは、フリーでありながら商用としても使用できるパワーを持つデータベース(RDB)です。
 
-  
                            
                              - 
              
[Java][Spring] DIする方式を細かく見てみる① @ScopeでのSingletonとPrototypeの指定
今回は@Scopeアノテーションを用いて、オブジェクトをDIする方式を選択してみます。 ●解説
 
-  
                            
                              - 
              
[Java][Spring] Spring3でDIしてみる!(アノテーション使用)
Spring3を使って、一番基本的な形のプログラムを作成してみます。 今回は、アノテーションを
 
-  
                            
                              - 
              
[Java][JSP] EclipseでのJSP作成
今回は、Eclipseを用いてJSPを作成してみます。 まず、Eclipseを起動します。
 
-  
                            
                              - 
              
[Java] クラスとインスタンス
こんにちは。 クラスとインスタンスについて解説します。 インスタンスは「オブジェクト」とも言
 
-  
                            
                              - 
              
[Java][Framework] Spring BootのJPAでDB接続した際のEntityキャッシュのクリア方法
Spring BootのJPAでDBアクセスした際に、処理を一定量こなすと、Heapが足りなくな
 
