第10回 Servlet/JSP+MySQLでアプリケーションサーバ その3

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

鶴長 鎮一
MySQLユーザ会
2001/7/10

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/3

Index
快速MySQLでデータベースアプリ!
ServletソースのJSP化
 Tomcatのインストール
 Context pathの設定
 JDBCドライバのインストール
  JSPとJavaBeansの連携
 Loginページの作成
 IDとパスワードをMySQLで管理させる
  Java編の終わりに
  Appendix

連載 快速MySQLでデータベースアプリ!


 Linux Squareフォーラム データベース関連記事
連載:快速MySQLでデータベースアプリ!(全11回)
軽快な動作で知られるRDBMS、MySQLでDBアプリの構築を行う。MySQLのインストールに始まり、PerlやRubyなどのスクリプトでデータベースを操作する方法までを完全解説
連載:今から始める MySQL入門(連載中)
定番のLAMP(Linux+Apache+MySQL+PHP)構成でWebアプリケーション開発に挑戦! サンプルアプリの構築を進めながら、基礎知識や操作方法について詳しく解説する
連載:Oracleマイスター養成講座(全6回)
本連載では、Oracleの管理・チューニング方法を紹介していく。これからOracleを始める人、そしてOracleをより深く理解したい人のための、一歩踏み込んだ実用講座
連載:DB2マイスター養成講座(全7回)
本連載では、DB2 UDBの実践的な運用・管理方法を紹介していく。DB2を利用するうえで必要な知識を、実運用を前提にDB2のプロが解説
特集:エンタープライズ市場に向かうMySQL 5.0[前編]
MySQL 5.0の新機能をアルファ版でチェック
1月に公開された5.0アルファ版は大幅に拡張されており、エンタープライズ市場への進出を予感させる
特集:Linuxで動くリレーショナルデータベース・カタログ
データベースサーバのOSとしてLinuxを採用するケースが増えている。Linuxで動作する7つの主なリレーショナルデータベースを紹介する。製品導入の際の参考にしてほしい

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します

TechTargetジャパン

Linux Square フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ



- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH