連載
» 2001年07月10日 00時00分 公開

快速MySQLでデータベースアプリ!(10):Servlet/JSP+MySQLでアプリケーションサーバ その3 (1/3)

今回は、前回作成したServletをJSPに書き直してみよう。しかし、HTML+JSPだけでは十分な柔軟性が得られない。JavaBeansを組み合わせれば、コンテンツの変更や運用にも柔軟に対応できるシステムになる。

[鶴長鎮一,MySQLユーザ会]

ServletソースのJSP化

 Javaコードがそのまま使えて豊富なAPI群を利用でき、CGIよりも高速で動作するServletは確かに利点も多く、大規模なサイトにも適用可能です。しかし、その一方でコンパイルの手間を考慮しなくてはいけません。また、Servletが出力するHTMLはServletの中に埋め込まれています。そのため、少々の変更でもコンパイルし直す必要があります。

 第56回で取り上げたPHPやPerlを使ったCGIならコンパイルの手間も要らず、Webデザイナーの意図も反映しやすいという柔軟性がありました。JavaでもJSPを使えば同じようにスクリプティングによる記述が可能です。さらに、JSPならPHPやPerlと違い、プログラムの中にHTMLを埋め込むのではなく、HTMLの中にJavaコードを記述することができます。従って、WebデザイナーはJavaScriptを使う要領でJavaコードを埋め込むことができます。つまり、デザイナーにもある程度アプリケーション部分を含めたサイト管理が可能となるのです。

 JSPの簡単なサンプルは、前回も紹介した「JSPプログラミング」に掲載されています。まずはこのサンプルの動作を確認してみましょう。前回Webアプリケーションを置いた$WEBAPP/ディレクトリにtest.jspファイルを作成し、下記の内容で保存します。

<html>
<head><title>Hello World!</title></head>
<body>
<h1>Hello World!</h1>
<p>
<%
     String hello = "Hello World!";
     out.println(hello);
%>
</p>
</body>
</html>
リスト test.jsp

 ファイルを作成したらWebブラウザで動作を確認します。

http://Webサーバ/atmarkit/test.jsp

 「Hello World!」と表示されれば成功です。JSPの動作の仕組みについては「JSPプログラミング」を参照していただくとして、<%〜%>タグの中にJavaコードを記述するということを覚えておいてください。

 では、前回のServletの例で使用したServletExample1.javaリスト6)をJSPでExample1.jspリスト9)に書き直してみましょう。

 1、2行目で指令タグ(<%@ 〜 %>)を使用し、Servletでのimport文を実現しています。その際、java.io.*、javax.servlet.*、javax.servlet.http.*の呼び出しはJSPを使用するうえでは不要です。またWebページのcontentTypeをここで指定しています。

<%@ page import="java.net.*,java.sql.*"
           contentType="text/html; charset=EUC_JP" %>

 10行目以降のスクリプトレットタグ(<% 〜 %>タグ)中には、ServletExample1.javaリスト6)のdoGet()メソッドに記述していたものをほぼそのまま記入します。違いはresponseやoutの明示的な呼び出しを行っていないという点です。

 JSPでは下記のインスタンスが宣言なしに使えます。逆に変数名として使えないという制限もあります。

config javax.servlet.ServletConfigのインスタンス
application javax.servlet.ServletContextのインスタンス
session javax.servlet.http.HttpSessionのインスタンス
pageContext javax.servlet.jsp.PageContextのインスタンス
out javax.jsp.JspWriterのインスタンス
response javax.servlet.HttpServletResponseのインスタンス
request javax.servlet.HttpServletRequestのインスタンス
exception java.lang.Throwableのインスタンス
page そのページ自身を表す

 JSPファイルの中では、「漢字を含んだレコードの挿入成功です!」などの出力処理がスクリプトレットの外に書かれていますが、実際にはスクリプトレット内のJavaコードの制御を受けます。Example1.jspリスト9)の場合、try節に書かれていること(18〜29行目)

try{
    //ドライバーのロード
    Class.forName("org.gjt.mm.mysql.Driver");
 
    //MySQLサーバーへの接続
    con = DriverManager.getConnection(url,user,pass);
 
    //Statementオブジェクトの生成
    Statement stmt = con.createStatement();
    //漢字を含んだSQL文
    String sql_str = "INSERT INTO list (name,memo) VALUES ('5番目','JSPからのテスト')";
    stmt.executeUpdate(sql_str);

が成功しなければ「漢字を含んだ...」は出力されません。同様に、「接続失敗です〜」もSQLExceptionが起きない限り出力されません。

 では、実行してみましょう。

http://Webサーバ/atmarkit/Example1.jsp

にWebブラウザで接続します。「漢字を含んだレコードの挿入成功です!」と表示されれば成功です。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。