目次

JSP & Servlet 入門

プロジェクトの作成

Eclipseを起動しパッケージ・エクスプローラーで右クリックし 新規 → プロジェクト… を選択
Web → 動的Webプロジェクト を選択して 次へ> をクリック
プロジェクト名、ターゲット・ランタイムを入力して 完了 をクリック
プロジェクト名: TodoServlet
ターゲット・ランタイム: Tomcat8 (Java8)

HelloServletの作成

まずは動作確認を兼ねて、非常にシンプルな Servlet を作成します。

Servletクラスの作成

パッケージ・エクスプローラー で src を右クリックし 新規 → その他… を選択
Web → サーブレット を選択して 次へ> をクリック
Javaパッケージ、クラス名を入力して 完了 をクリック
Javaパッケージ: todo.controller
クラス名: HelloServlet

Servletの実行

パッケージ・エクスプローラー で TodoServlet を右クリックし 実行 → サーバーで実行 をクリック
Tomcat v8.0 サーバー を選択して 完了 をクリック
コンソールに Tomcat の起動ログが出力され、しばらくするとEclipseの内蔵ブラウザが表示されます。
HTTPステータス 404 - /TodoServlet/ というページが表示されます。
URLを http://localhost:8080/TodoServlet/HelloServlet として Enterキーを押してください。
Served at: /TodoServlet というページが表示されれば正常にServletが実行できています。

index.jspの作成

つづいて、JSPの動作確認を行います。

JSPファイルの作成

パッケージ・エクスプローラー で WebContent を右クリックし 新規 → その他… を選択
Web → JSPファイル を選択して 次へ> をクリック
ファイル名を入力して 完了 をクリック
ファイル名: index.jsp
以下のように編集します。
<title> を変更
<body> に 日時を出力するようコードを追加

<%= new java.util.Date() %>

ServletからJSPに値を渡す

ServletからJSPに値を渡すには HttpServletRequest#setAttribute メソッドを使用します。
第1引数にキー、第2引数に値をセットします。

Servletで setAttribute された値は JSPの request.getAttribute メソッドで取得できます。
request オブジェクトは JSP で特に宣言をしなくても使用可能になっています。

Expression Language の略。
${…} と書くことで式が評価・出力されます。

JSPからServletに値を渡す

JSPにテキストボックスを配置し、入力された値をServletで受け取ってみましょう。
JSPでユーザーに何かしらの入力を受け付けるためには form タグと input タグを利用します。

form タグの method属性で submitボタンが押された際に、どのHTTPメソッドを使用するかを指定します。
get か post を使用することになります。
action属性は送信先のURLを指定します。
現在ブラウザに表示されているURLからの相対パスで指定するのが良いでしょう。
絶対パスで指定した場合、本番環境と開発環境でURLが異なる場合などの対応が困難になります。
getメソッドはブラウザからリクエストがあった際に使用していますので、formからのデータ受け取りは postメソッドを使用します。
inputタグを使用してテキストボックスを表示します。
buttonタグのtype属性をsubmitとすると、ボタンクリック時にformのaction属性に指定されたURLに対してmethod属性で指定されたHTTPメソッドでformタグ内の各要素の値を送信します。

GETメソッドとPOSTメソッドの違い

両者の違いは、パラメータの受け渡し方法にあります。
GETメソッドでは、サーブレットに受け渡すパラメータをURLに組み込んでいます。
対して、POSTメソッドは、HTTPリクエストのメッセージボディの中に組み込んでいます。
GETの場合、URL内部にパラメータが組み込まれるので、ブラウザの履歴やキャッシュが残ります。
POSTは残らないので、機密性が高いと言えなくもありませんが、結局、パケットは平文で流れるので、機密性について考える場合は、どちらにしても別途、暗号化の仕組みを取り入れる必要があります。

HTMLのコメント

<!-- HTMLのコメント -->

「← -」から「- →」の間は、コメントとして扱われ、ブラウザには表示されません。ただし、HTMLのソースには表示されます。
コメントは、複数行にまたがってもかまいませんし、コメント内にHTMLタグを挟むことも可能です。
(ただし、コメント文の中に続けてハイフン(- -)は使用しない方が無難です。)

JSPのコメント

<!%-- JSPのコメント --%>

「<%- -」から「- -%>」の間は、コメントとして扱われ、ブラウザには表示されません。また、HTMLのソースにも表示されません。
例えば、JSPページをブラウザに表示させた際、IEの場合は、表示された画面を右クリック→「ソースの表示」をクリックし、HTMLソースを開いてみてください。HTMLのコメントは出力されていますが、JSPのコメントは出力されていないことが確認できます。

Javaのコメント

// Javaのコメント

または

  /*
    Javaのコメント
  */

スクリプトレット内はJavaコードになるので、コメント書式はJavaのものになります。
行の先頭に「//」(半角)を記述した場合は、その1行だけがコメントになります。
または、「/* … */」を記述した場合は、「/*」から「*/」までの間がコメントになります。
JavaのコメントもJSPのコメントと同じで、ブラウザにもHTMLソースにも出力されません。
それら各コメントの性質を理解し、使い分けることが重要です。