サーブレットを作って分かるJava Webアプリの基本的な仕組み:初心者のためのサーブレット/JSP入門(3)(2/3 ページ)
初めてJavaのWebアプリを作ってみたいという人に向けて、サーブレットを作ってみることで、その基本的な仕組みを理解してもらう。
サーブレットを作ると何ができるの?
サーブレットの実体は、Javaのクラスです。Javaでは、クラスという単位でデータやメソッドを管理します。いわば、アプリケーションにおける特定の処理を行うソースコードを1つのクラスにまとめておくのですが、サーブレットもクラスとして定義します。
サーブレットが実行されるとHTMLが出力される
「なるほど、サーブレットってJavaのクラスなんですね。ってことは、フィールド(変数)やらメソッドやらをクラスの内部に作って、何かの処理を行わせるのですね」
「サーブレットはクラスなので、インスタンス化を行ってメモリ上に読み込む必要があります。クラスやインスタンスについては『ミドルエンジニアの素朴な疑問』で触れていますので、よければあとで参照してみてください。で、サーブレットが実行される流れは次のようになります」
「クライアントのブラウザーからリクエストがあると、アプリケーションサーバー内でサーブレットが実行され、処理結果としてHTMLが出力されるという流れになります。もちろん、HTMLを出力するためのメソッドはサーブレットクラス内部で定義しますので、何らかの処理を行ったあと、このメソッドが実行されてHTMLが出力されます」
「えっと、アクセスされるとサーブレットが実行されるってことですが、クラスはインスタンス化しなきゃならないですよね。インスタンス化はどこで行われるんです?」
「スルドイ質問ですね。インスタンス化は、アプリケーションサーバー(GlassFish)の内部でインスタンス化の処理が行われます。アプリケーションサーバーに搭載されているサーブレットやJSPを実行する機能のことを『JSP&サーブレットコンテナー』と呼ぶことがありますが、このコンテナーがインスタンス化を行い、内部のメソッドを呼び出すようになっています」
「えーっと、Javaのプログラムってmain()メソッドから実行されますよね。main()はどうなってるんですか?」
「さらにスルドイですね。確かにJavaのプログラムは、起動直後にまずmain()メソッドが呼ばれます。で、main()メソッドの処理もコンテナーの内部で定義されていて、そこからサーブレットのメソッドを呼び出すようになっています」
Memo GlassFishのデフォルトのポート番号は「8080」
ところで、ブラウザーのアドレス欄は『http://localhost:8080/ServletApp01』となっています。この「8080」というのは、GlassFishが使用するポート番号です。Webサーバーが使用するポート番号は通常『80』ですが、GlassFishでは『8080』を使用します。『http://localhost/ServletApp01』とすると、ApacheのようなWebサーバーへのアクセスになるので、『localhost:8080』のようにポート番号を指定しているというわけです。
このため、もしGlassFishをWeb上で稼働させた場合は、外部からアクセスする際には常に『8080』を指定することになります。
ただし、GlassFishの設定を変更して80番ポートにすることも可能です。そうすれば普通にURLを指定すればアクセスできます。なお、実際にWeb上で公開する場合は、ApacheなどのWebサーバーを稼働させておき、Webサーバー側の設定で、80番ポートにアクセスを8080番に切り替えてGlassFishに振り分ける、といった方法がよく使われています。この場合、「ブラウザー→Apacheサーバー→ポート番号を8080に付け替え→GlassFish」のようにWebサーバーを介してアクセスすることになります。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Strutsを使い続けることの問題点&現在有力なJava EE、Spring、Play Frameworkの基礎知識とアーキテクチャ
新規のエンタープライズJava開発において現在有力視される3つのフレームの違いについて解説する連載。初回は、Strutsを使い続けることの問題点と3つの概要、アーキテクチャ、使い分けについて。 - Eclipse 3.4で超簡単Javaプログラミング基礎入門
これからプログラミングを学習したい方、Javaは難しそうでとっつきづらいという方のためのJavaプログラミング超入門連載です。最新のEclipse 3.4とJava 6を使い大幅に情報量を増やした、連載「Eclipseではじめるプログラミング」の改訂版となります - Struts後時代のJava EE/Javaモダン開発はどうあるべきか〜JJUG CCC 2014 Springまとめリポート(前編)
Java EEにおいてJava 8はどこまで利用できるのか、Java開発でGit、CI、継続的デリバリは、どこまで有効なのか、Struts後時代のJava EE開発における有効なフレームワークなどをお伝えする。