Servletの実装

次に、これまで作成してきたユーザインタフェースとデータベースアクセスコードをひとつにまとめていきましょう。

Servletとは

Servletとは、JavaにおけるWEBアプリケーションの構成単位です。
Servletの規約に従ってWEBアプリケーションを作成することで、 TomcatなどのWEBアプリケーションサーバで実行することができるようになります。

Servletを利用したWEBアプリケーション構成の例としては以下のようなものがあります。

Servlet概要

Servlet とは、Servletの規約に従って実装されたJavaクラスです。
このクラスにリクエストの解析処理とレスポンスの出力処理を記述することで、 WEBアプリケーションを実現することができます。

JSP(Java Server Pages) とは、JavaでWEBアプリケーションを構築するための規格の1つです。
HTMLの中にJavaコードを記述することで、HTMLへの変数の埋め込みや、 変数の内容に応じてHTMLの構成を変更するなどを容易に記述することができます。

Tomcat(WEBアプリケーションサーバ) は、ブラウザとの通信処理をおこない、必要に応じてServlet、JSPを実行します。
このとき、Servlet、JSPでは直接的に通信処理を考慮する必要はなく、 Tomcatから提供されるJavaオブジェクトを通じて抽象的に(たとえば、「ヘッダAに対応する値は?」「ヘッダBに値Cを設定する」など)入出力をおこなうことができます。

注意!
ここでは、セキュリティ問題を考慮せず、単純なコードを例に説明します。
後述する「セキュリティの基本」でこれらの問題を解決していきます。


WEBアプリケーションの仕様

WEBアプリケーションは以下のような仕様とします。

項目 説明
コンテキストパス todotest コンテキストパスとは、アプリケーションサーバがWEBアプリケーションを識別するためのパスです。

URLでは、以下のようになります。
http://(サーバ名:ポート番号)/(コンテキストパス)/
Servletパス todo Servletパスとは、WEBアプリケーションのうち、Servletを識別するためのパスです。

URLでは、以下のようになります。
http://(サーバ名:ポート番号)/(コンテキストパス)/(Servletパス)


また、WEBアプリケーションに対して与えるクエリの形式は以下のようにします。

action=(アクション名)[追加パラメータ...]

アクション名 はServletが実行すべき処理の種類を識別するためのもので、 リクエストメソッドごとに以下のいずれかをとるものとします。

メソッド アクション名 説明 追加パラメータ
GET login ログイン画面の表示処理。 なし
POST login_action ログイン画面からのリクエスト受付処理。
ログインが成功した場合は、ユーザに関する情報をセッションに保持します。
セッションとは、ブラウザとServlet間のやりとりを識別するためのもので、
Servlet APIを利用することで、容易にブラウザごとに情報を管理することができます。
user_id=(ユーザID)&password=(パスワード)
list 一覧の表示処理。 なし
add 追加画面の表示処理。 なし
add_action 追加処理。 name=(項目名)&user_id=(ユーザID)&year=(期限:年)
&month=(期限:月)&day=(期限:日)
edit 編集画面の表示処理。 item_id=(編集対象のアイテムID)
edit_action 編集処理。 item_id=(編集対象のアイテムID)&name=(項目名)&user_id=(ユーザID)
&year=(期限:年)&month=(期限:月)&day=(期限:日)
[&finished=true(完了している場合)]
delete 削除確認画面の表示処理。 item_id=(削除対象のアイテムID)
delete_action 削除処理。 item_id=(削除対象のアイテムID)
finish 完了/未完了の切替処理。 item_id=(切替対象のアイテムID)
search 検索処理。 keyword=(検索キーワード:空白で区切る)


ログイン画面-登録画面の実装

ログイン画面-登録画面の実装を通じて、Servlet、JSPの基本要素を学習していきましょう。
以下の手順で作業してください。

  1. ログイン画面の作成
  2. 一覧画面とエラー画面の作成
  3. 登録画面の作成

演習:Servletの残り機能の実装

これまでの作業を踏まえて、残り機能を実装してみましょう。

演習:Servletの残り機能の実装