連載
» 2003年01月09日 00時00分 公開

基礎から学ぶサーブレット/JSP(1):サーブレット/JSPの役割を理解する (1/4)

本連載では、JSP&サーブレットをシステムデザインという観点からご紹介していくことにします。基本的な構文から、JSP/サーブレット/JavaBeansを適所適時に使い分けていく考え方、そして「必然性」までを実践的な見地から体感していただければ幸いです。

[山田祥寛,@IT]

本記事は2003年に執筆されたものです。サーブレット/JSP全般の最新情報は@IT キーワードINDEXの「JSP/Servlet」をご参照ください


やり直し「JSPとTomcat」
途中までかじったが挫折した。スキルチェンジしたい!という読者のために、Tomcatの最新バージョンを使いながらJSPを基礎から解説していく

Java Solution」フォーラム 2007/4/19


 「サーバサイドJava」というと、皆さんは何を思い浮かべられるでしょう? いえ、そもそも「サーバサイド技術」といった場合に、皆さんはどのようなイメージを持たれているでしょうか。

 JavaScript(ダイナミックHTML)や古くはJavaアプレット、ActiveXコントロール、プラグイン技術まで、主にユーザーの視覚に訴えるクライアントサイドの技術と異なり、サーバサイド技術は主体がユーザーからは見えないところにありますから、イメージとしては極めてわきにくいといえるかもしれません。

 しかし、その見えないところでサーバサイド技術は確実に普及しています。サーバマシンの膨大なリソースを十全に活用し、堅牢なデータベース・ファイルシステムと密に連携するサーバサイドアプリケーションは、主にプレゼンテーション層(表層)をつかさどるクライアントサイドとは異なり、地味である代わりに、もはやWebサイトになくてはならぬ、Webを支える「バックボーン」ともいうべきしくみなのです。

 皆さんもあるいは、JSP(JavaServer Pages)&サーブレットやASP(Active Server Pages)、PHP(PHP:Hypertext Preprocessor)のような技術をお聞き及びかもしれません。実際、これら技術の普及度たるや日進月歩、目を見張るものがあります。

 その中でも、JSP&サーブレット――サーバサイドJavaは、Java言語をベースとした一貫性あるオブジェクト指向の概念もさることながら、豊富なクラスライブラリ、JavaBeansのような部品化技術、あるいは、フィルタやカスタムタグのような運用保守を容易とする種々のしくみを持ち合わせ、また、体系的に設計されたことで、いまやサーバサイドテクノロジのデファクトスタンダードともいうべき地位を占める強力なアーキテクチャです。

 連載1回目の今回は、JSP・サーブレット・JavaBeansといった「サーバサイドJava」のコアを占める主要な要素について、いったい、どのような技術であるのか、それぞれにどのような特性を持っているかをご紹介することにします。取りあえずは細かい構文に気を取られる必要はありません。それぞれが「サーバサイドアプリケーション」という1つの体系の中でどのような位置を占めているのかを感覚として感じ取ってみてください。

サーブレットの役割

 サーブレットは、いうなれば、「サーバサイドで動作するアプレット(小さなアプリケーション部品)」です。かつてJava言語がWebの世界に本格的に登場した1997年あたりには、Internet Explorer(以降、IE)やNetscape Navigator(以降、Netscape)などのブラウザ上で動作するアプレットがHTMLのシンプルな(悪くいえば貧相な)ページを飾り立てたものですが、サーブレットはそうしたビジュアルな表現を実現するものではありません。サーバサイドで動作し(必要に応じてデータベースやテキストファイルを検索、更新し)、その処理結果を(一般的には)HTMLとして返す――それがサーブレットの役割なのです。

図1 サーブレットの役割 図1 サーブレットの役割

 まずはサーブレットの大まかな骨組みを見てみましょう。リスト1は、あまりにも定番な「Hello,World」のサンプルです。画面1はその実行結果です。

リスト1 HelloWorld.java
import java.io.*;
 import javax.servlet.*;
 import javax.servlet.http.*;
 public class HelloWorld extends HttpServlet {
   public void doGet(HttpServletRequest request,
      HttpServletResponse response)
     throws ServletException,IOException {
     response.setContentType("text/html;charset=Shift_JIS");
     PrintWriter out=response.getWriter();
     out.println("<html><head>");
     out.println("<title>Hello, World!!</title>");
     out.println("</head><body>");
     out.println("<p>Hello,World!!</p>");
     out.println("</body></html>");
   }
 }
画面1 HelloWorld.javaの実行結果 画面1 HelloWorld.javaの実行結果

 基本的な構文については、今後の連載でご紹介することにします。ここでは、サーブレットがサーバで動作するということを想定している以外は、「全く通常のJavaクラスである」という点だけを押さえておくことにします。細かい構文は分からなくても、なんとなく(いまは、なんとなく、でよいのです)out.printlnという命令が実行されて、HTMLが出力(表示)されていることがお分かりになるでしょう。

 また、Javaアプレットが常にソースコード(.javaファイル)をコンパイル(一括翻訳)する必要があるコンパイル言語であったように、サーブレットもまた、常にコンパイルを行う必要があります。

 サーバ上にはコンパイルされた後の「.class」ファイルを配置します。コンパイルの方法などについては、別途ご紹介しますが、PerlやASP、PHPのようなスクリプト言語に慣れている方は、特に、ソースコードをそのままサーバ上にアップロードするだけではサーブレットは動かないという点に注意しておいてください(また、このことはJSPの必要性を促す重要なポイントの1つでもあります)。

サーブレットでは、クラスの実行結果がクライアントに返されます


       1|2|3|4 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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