ソリューション・ポイントを実感するために サーブレットを知る |
さて、ここで以下のサーブレットを見てください。いままで話してきたソリューション・ポイントの話とまったく違った話をするように思えるかもしれませんが、この「スマートなサーバ・サイドJava」では、できるだけ実務に即した実践的な内容にするために、以下のサーブレットを利用しながら、前述したポイントが重要になってくる理由を説明していきたいと思います。まず皆さんは、以下のサーブレットを眺めて処理の内容を理解してください。このサーブレットの処理は、至って簡単なものです。検索の対象となるDBに対して、ブラウザで検索キーを入力します。サーブレットはその検索キーを受け取って、DBに接続し検索を行います。すべての検索が終了したら、サーブレットは検索でヒットしたレコードをすべてブラウザに送信して結果を表示させます。
図2 ブラウザからサーブレット、DBの検索の流れ
|
リスト1 あるサーブレットのリスト |
1 import java.io.*;
|
1〜5行目:Javaパッケージをインポートします。 7行目:このサーブレットのクラス名は、TestServletです。 8〜10行目:サーブレットの処理でアクセスするRDBMへの情報です。今回のサーブレットでは、IBMのDB2 UDBをアクセスしていますので、このアクセスに必要なJDBCドライバとセキュリティ情報が記述されています。 12〜14行目:サーブレットの中で使用するインスタンス変数です。inDsというのは データベース名。inTblはテーブル名。そしてinKeyというのは、検索の対象となるキーです。 15行目:サーブレットの処理は、このdoPostメソッドから始まります。 19〜21行目:ブラウザから検索の対象となるデータベース名、テーブル名、検索キーを受け取ります。 24〜26行目:JDBCドライバをインスタンス化し、検索対象となるDBに対して、DB接続を取得します。 29〜32行目:SQLステートメントのSELECTを発行します。 34〜45行目:Vectorオブジェクトを用意し、その中に検索結果のカラムを連結した文字オブジェクトを1レコードにし、全ての検索結果を格納しています。 47〜48行目:DB接続を切断します。 50〜53行目:検索結果をHTMLとしてブラウザに返すためにPrintWriterオブジェクトをインスタンス化します。 56〜60行目:Vectorオブジェクトに格納されているオブジェクトの数を求めます。 これにより検索によりヒットしたレコード数が求められます。この数を利用して、すべての検索結果をVectorオブジェクトから抜き出して、ブラウザに返送します。 62行目:PrintWriterオブジェクトをクローズし、ブラウザへのデータ転送を終了し ます。 |
このサーブレットの問題点は何? |
さてこのサーブレットの動きを理解したところで、皆さんに質問したいことがあります。このサーブレットには、実はいくつかの改善すべき個所が含まれています。「スマートなサーバ・サイドJava」をいつも愛読していただいている読者の中には、このサーブレットの内容を見て、あれ?
これはおかしいぞ、とか、この個所は私ならこう記述するけど、といった個所があるのではないかと思います。
そこで、このサーブレットの中から、改善の対象となる個所をすべて列挙してみてください。どのような観点で改善策を考えるかは、皆さんの開発の経験や土壌によって違うと思います。ですから、サーブレットの中から業務的に足りない機能の改善個所でも結構ですし、システムの動きとしておかしい記述の改善個所でも結構です。とにかく皆さんの思うような改善個所を挙げてみてください。
次回は、このサーブレットに潜む改善個所を説明しながら、前述したサーバ・サイドJavaのシステム構築に必要になるソリューション・ポイントの重要性について解説していくアプローチを取ってみたいと思います。
3/3 |
INDEX |
||
第4回 サーバーサイドJavaのソリューション・ポイント | ||
今回の内容の目的 | ||
eビジネス・システム構築の流れは? それぞれのポイントの中身は何? |
||
ソリューション・ポイントを実感するためにサーブレットを知る このサーブレットの問題点は何? |
||
連載記事一覧 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|