TOPサーバ構築・運用> はじめに
はじめてのサーバサイドJava
はじめてのサーバサイドJava

第5回:JSP&サーブレット〜JSP基本編〜

著者:山田 祥寛   2006/4/24
1   2  次のページ
はじめに

   本稿では、前回までに構築した環境を利用して、実際にJSP&サーブレットアプリケーションを作成します。
JSPの基本構文を学ぶ

   JSP&サーブレットの実行環境が整ったところで、動作確認を兼ねて、JSPだけで簡単なアプリケーションを作成してみましょう。

   basic.jsp(リスト1)は、クライアントが利用しているブラウザの種類を表示するJSPページです。簡単な入門用プログラムですが、余計な部分が一切ないところで、まずはJSPの基本的なポイントを確認してみましょう。

リスト1:basic.jsp
<%@ page contentType="text/html;charset=Windows-31J" %> (1)
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> (2)
<c:set var="msg" value="Hello, JSP!" /> (3)
<html>
<head>
<title>JSPの基本</title>
</head>
<body>
${msg} (4)
</body>
</html>

   なお、JPSファイルは、アプリケーションルート配下のMETA-INFフォルダとWEB-INFフォルダ以外の任意のフォルダ(注1)に配置することができます。本稿では、アプリケーションルート直下に配置することにします。Tomcat、Apacheが起動していることを確認したうえで、ブラウザから下記のURLにアクセスします。

http://localhost/marugoto/basic.jsp

   図1の画面が表示されれば、動作確認は成功です。

basic.jspの実行結果
図1:basic.jspの実行結果

※注1: META-INFフォルダとWEB-INFフォルダは、いずれもJSP&サーブレットアプリケーションでは特別な意味を持つフォルダとなります。具体的には、設定情報やクラスライブラリといった、ユーザが直接アクセスする必要のない(アクセスさせたくない)ファイルをここに配置します。また、これらのフォルダ内のファイルにクライアントからアクセスすることはできません。


3つの基本構文

   動作環境が確認できたところで、JSPを学ぶうえでの基本となるポイントを確認しておきましょう。basic.jspでまず押さえておきたいポイントは、以降の3点です。


1. 文字コードは@pageディレクティヴで宣言

   「ディレクティヴ(指令)」は、コンテナ(Tomcat)に対してJSPページの処理方式を伝えるための仕組みで、次のような構文で記述します。

<%@ ディレクティヴ名 属性名="属性値" ... %>

   属性値は、その値が数値でも文字列でも、必ずダブルクォーテーションで囲む必要があります。また、その性質やコードの可読性などの理由からも、原則としてページの先頭に記述するのが好ましいでしょう。

   JSPページで利用可能なディレクティヴにはいくつか種類がありますが、その中でも重要なのが@pageディレクティヴです。JSPページ内でマルチバイト文字を利用する場合には、@pageディレクティヴのcontentType属性で明示的に文字コードを宣言する必要があります。リスト1の1では、このJSPページが「HTML形式のファイルをWindows-31Jという文字コードで出力する」ということを宣言しています(注2)。

※注2: J2SE 1.4.1以降のバージョンより文字コードの扱いに変更があったため、従来の「Shift_JIS」を指定すると一部の文字(「〜」など)が文字化けしてしまう可能性があります。必ず“Windows-31J”を使用するようにしてください。

   JSPにおけるデフォルトの出力文字コードは、「ISO-8859-1(Latin 1)」という欧米系言語です。そのため、contentType属性の指定がない場合、図2のようにページが文字化けしてしまう可能性があるので、注意してください(注3)。

文字化けしたJSPページ
図2:文字化けしたJSPページ

※注3: Apache/Tomcat間の連携を行っている場合、Apacheの設定ファイルであるhttpd.confにも注意が必要です。httpd.confにAddDefaultCharset ISO-8859-1のような記述がある場合、contentType属性の指定よりも優先されてしまうので、httpd.confの該当部分を必ずコメントアウトするようにしてください。

   また、リスト1では割愛していますが、もしもJSPファイルそのものを出力文字コードと異なる文字コードで記述している場合、pageEncoding属性で文字コードを明示する必要があります。たとえば、JSPファイルそのものはUTF-8で記述されていて、Windows-31Jで出力したい場合には、以下のように記述します。

<%@ page contentType="text/html;charset=Windows-31J" pageEncoding="UTF-8" %>

1   2  次のページ

WINGSプロジェクト  山田 祥寛
著者プロフィール
有限会社WINGSプロジェクト   山田 祥寛
Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト(http://www.wings.msn.to/)」の代表。主な著書に「10日でおぼえる入門教室シリーズ(Jakarta・JSP/サーブレット・PHP・XML)」(以上、翔泳社)、「書き込み式 SQLのドリル」(ソシム)など。最近ではIT関連技術の取材、講演まで広くを手がける毎日。

INDEX
第5回:JSP&サーブレット〜JSP基本編〜
はじめに
  2. 定型処理をプログラムレスで実現する「アクションタグ」