Tomcat7上でServlet+JSPしてみる

前回の投稿から大分時間が経ってしまったが、タイトル通り、ServletとJSPを連携させたWebページをやってみた。

前回、前々回と、JSP、ServletでWebページを作成したが、通常はこの二つをそれぞれ単独で使うことはほとんどなく、今回のような連携をさせて動的Webページを作成する。
これらをどのように使い分けるのかというと、おおざっぱに言えば以下の通りである。

  • Servletでさまざまな「処理」を行う。データベースの更新やセッション情報の管理、画面表示に必要な情報の作成などはServletで行う。
  • JSPでは、Servletで処理された情報をつかって画面を作成する。JSPには極力Javaのコードを書かないようにする。(必要な処理は極力Servletでやってしまうようにする。)

こうすることで、「処理」と「画面デザイン」を分離することができるので、アプリケーションのメンテナンスがしやすくなるそうだ。

とりあえずやってみることにする。

■Webアプリケーションのディレクトリ整備
Webアプリケーションは、前回と同じ<Tomcatインストールディレクトリ>\webapp\test とする。
前回のディレクトリ構成に加えて、「WEB-INF」ディレクトリに「jsp」ディレクトリを作成する。
このディレクトリはJSPファイルを格納するためのものである。
servletjsp01

■Servletクラスの作成

TestServletJSP.javaに下記プログラムを書いて適当なところに保存する。

package servlet;
import java.io.IOException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
/**
* テストサーブレットクラス
*/
@WebServlet(description = "サーブレット テスト", urlPatterns = { "/HelloServletJSP" })
public class TestServletJSP extends HttpServlet {
    /**
     * GETリクエスト処理
     */
    protected void doGet(
        HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        // JSPに渡すメッセージの設定
        request.setAttribute("message", "Servlet Message.");
        // 呼び出すJSPの相対パスを指定して、ディスパッチャを作成
        RequestDispatcher dispatcher =
            request.getRequestDispatcher("WEB-INF/jsp/TestServletJSP.jsp");
        // ディスパッチャを使ってJSPに制御を渡す
        dispatcher.forward(request, response);
    }
}

Servletでディスパッチャを作成すると、それを使ってJSPを呼び出せるようになる。
JSPにデータを渡したいときは、requestの属性設定に入れておけばよい。
setAttribute()メソッドを使用して登録することができる。使い方は、第1引数にデータの名前、第2引数に登録したいデータを指定する。
今回は、データの名前を「message」、データを「Servlet Message.」の文字列としておいた。

あとは、前回と同様、作成したプログラムをコンパイルする。
コンパイルで作成さらたクラスファイルも、前回同様の場所に格納する。

■JSPの作成
次に、JSPを作成する。
JSPは、<Tomcatインストールディレクトリ>\webapp\test\WEB-INF\jspにHelloServletJSP.jspを作成する。
内容は以下の通りにする。


<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<html>
  <head>
  </head>
  <body>
    <h1>Hello Servlet JSP!!</h1>
    <h2>ほげほげ</h2>
    <p>コンテキストパス:<%=request.getContextPath() %></p>
    <-- Servletで設定したメッセージデータを受け取り、表示する. -->
    <p>サーブレットからのメッセージ<%=(String)request.getAttribute("message") %></p>
  </body>
</html>

サーブレットでリクエストの属性に設定しておいたメッセージをとりだすにはgetAttribute()メソッドを使用する。(10行目)
引数には、取り出したいデータ名を指定すればよい。
今回はサーブレットで「message」という名前のデータを設定しておいたので、それを取り出す。

■web.xmlの作成
<Tomcatインストールディレクトリ>\webapp\test\WEB-INFに下記内容のweb.xmlを作成する。(前回と同じもの)

<?xml version="1.0" encoding="UTF-8" ?>
<web-app xmlns:xsi="http://www.w3c.org/2001/XMLSchema-instance">
<display-name>Test Application</display-name>
</web-app>

■動作テスト
Tomcatを起動し、「http://localhost:8080/test/HelloServletJSP」にアクセスして、下記ページが表示されれば、うまく動いている。
servletjsp02

広告
カテゴリー: プログラミング, Java, Servlet タグ: , , パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中