第10回 Servlet/JSP+MySQLでアプリケーションサーバ その3
今回は、前回作成したServletをJSPに書き直してみよう。しかし、HTML+JSPだけでは十分な柔軟性が得られない。JavaBeansを組み合わせれば、コンテンツの変更や運用にも柔軟に対応できるシステムになる。
鶴長 鎮一
MySQLユーザ会
2001/7/10
ServletソースのJSP化
Javaコードがそのまま使えて豊富なAPI群を利用でき、CGIよりも高速で動作するServletは確かに利点も多く、大規模なサイトにも適用可能です。しかし、その一方でコンパイルの手間を考慮しなくてはいけません。また、Servletが出力するHTMLはServletの中に埋め込まれています。そのため、少々の変更でもコンパイルし直す必要があります。
第5、6回で取り上げたPHPやPerlを使ったCGIならコンパイルの手間も要らず、Webデザイナーの意図も反映しやすいという柔軟性がありました。JavaでもJSPを使えば同じようにスクリプティングによる記述が可能です。さらに、JSPならPHPやPerlと違い、プログラムの中にHTMLを埋め込むのではなく、HTMLの中にJavaコードを記述することができます。従って、WebデザイナーはJavaScriptを使う要領でJavaコードを埋め込むことができます。つまり、デザイナーにもある程度アプリケーション部分を含めたサイト管理が可能となるのです。
JSPの簡単なサンプルは、前回も紹介した「JSPプログラミング」に掲載されています。まずはこのサンプルの動作を確認してみましょう。前回Webアプリケーションを置いた$WEBAPP/ディレクトリにtest.jspファイルを作成し、下記の内容で保存します。
<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.*" |
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{ |
が成功しなければ「漢字を含んだ...」は出力されません。同様に、「接続失敗です〜」も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つの主なリレーショナルデータベースを紹介する。製品導入の際の参考にしてほしい |
|
|
TechTargetジャパン
- OSSライセンスの採用傾向に「変化」あり (2012/5/21)
OSS普及の一翼を担ってきたライセンス、GPLファミリー採用の割合が減少傾向にあるそうです。いったいどうして? - ここからFirefoxの反撃が始まる (2012/3/12)
2月のLinux SquareのランキングではFirefoxの記事がダントツのページビューを集め、トップに立ちました - CMakeでMySQLをビルドしてみる (2012/3/8)
ここまでの作業でCMakeを使う準備が整いました。今回はひとまずMySQLをビルドしてみます - MySQLのビルドに欠かせないCMakeを準備する (2012/3/2)
今回は、MySQLをビルドするために欠かせないツール「CMake」をインストールし、使う準備をします
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
