seize a chance@Wiki
サーブレットさんとJSPさん
最終更新:
匿名ユーザー
@ITツールでトライ!初めてのWebアプリケーション(1)を見て勝手に解釈
Webアプリ
サーブレットやJSPと言い出す前のそもそものお約束。そこがWebアプリであること。ブラウザをつかってHTMLで表示すること。
WebブラウザとWebサーバの間で通信する。お約束はHTTPプロトコル。submitボタンとかあると、きっと通信してる気がする。
指定したURLに対するデータを要求するGETメソッド、データを添付してリクエストを行うPOSTメソッド。URLあって何ぼって世界なのかな。
サーブレット
サーブレットはHTMLを動的に作り出す仕組みらしいよ。サーバで動くメリットはサーバに沢山もってる資産(DBの情報とか便利なクラスとか?)を使えること。手元でちょこっとHTMLを動的に動かしたい(アニメ動かしたいとか)ならjavaアプレットでいいそうな。これはサーバじゃない仕組みなんだろうね。サーバじゃないなら個人のパソに入れてるんだろう何かを。
サーブレットを使用してアプリケーションを作成するときは、Java言語でクライアントからの要求に応じたHTMLを動的に生成するクラス(サーブレットクラス)を作成し、TomcatなどのWebコンテナに配備します。
HTMLを動的に生成するクラス(サーブレットクラス)は、一から作成するのではなく、その基本機能が実装されているjavax.http.HttpServletクラスを派生(拡張)して、オリジナルのコンテンツを生成するプログラムコードを記述します。
クライアントからのアクセスがあると、Webコンテナは、インストールされたサーブレットの中から、適切なサーブレットクラスのメソッドを呼び出し、レスポンスを受け取り、これをクライアントWebブラウザに返します。色々書いてあります。難しいです。図を見るとクライアントは「呼出」と結果「受取」しかやってない。配備とかコンパイルとかはサーバでやってる。JVMももちろんサーバにある。これがクライアントサーバの世界なのか。
クライアントからのアクセス=ブラウザからURL指定するってことか?
- クラスファイルがサーブレットコンテナからJavaVM上にロードされる
- 初期化メソッドが呼び出され、サーブレットが実行可能な状態となる
- クライアントからリクエストがあるとserviceメソッドが呼び出される
- 更新されたクラスが配備された場合や、コンテナがシャットダウンするときに、destroyメソッドが呼び出される
これを読むとやっぱりWebサーバを起動したときにそこに置いているサーブレットのクラスファイルはロードされてるような気がする。サーブレットクラスであるという判断は誰がくだすの?importjavax.servlet.*;て書いてあるといいの?そんなわけなさそう。
サーバ上にはコンパイルされた後の「.class」ファイルを配置します(中略)このことはJSPの必要性を促す重要なポイントの1つでもあります @IT基礎から学ぶサーブレット/JSP(1)
★サーブレットとJSPの違い★それはそうです。それだけ?
JSP
サーブレットはHTMLコンテンツ(文字列)を生成するJavaクラスです。これに対し、JSPでは、HTMLの中に必要に応じてJavaコードを入力することができます。
じゃあやりたい事は一緒なのか。<% %>で囲まれた部分はjavaって話はよくきく。そしてJSPもサーブレットなんだとこの前教わった。
どうやって動くのか、それが知りたいんだった。先は長いや。
- ディレクティブ:<%@XXXXXX%>という表記を利用することによって、JSPを処理するWebコンテナへの指示を記述できます。
JSPを処理するってことはJSPがサーバへ送られてきたということか。てことはサーバにはまだ無いの?JSPファイルは。違うよなあ。実行して(そのJSPファイルのurlをブラウザで開く)初めて解釈(コンパイル)が走るってことかな。
- スクリプトレット:<% %>
記述しないようにしろとよく書かれてるスクリプトレットて、このことだったのか!
JSPページは、実行時にはサーブレットに変換され、サーブレットと同じように振る舞います。(やっぱり。JSP修正して最初遅いのはコンパイルしてるんだろうなと思ってたのは当りだった)サーブレットとの違いは、これらの作業はTomcatなどのWebコンテナで自動的に実行されることだといえるでしょう。(あれ?!話が変だよ。サーブレットは事前にWebコンテナにロードされるって言ってなかった?)具体的には、Webコンテナは、図1のようにJSPファイルを処理します。JSPは、自動的にサーブレットに変換されて、クラスファイルにコンパイルされた後、実行されます。(サーブレットとの違いがこれってことはわかった)
サーブレットはコンパイルしたクラスファイルをWEB-INFに置きます。jspはそのままWEB-INFに置きます。そこが違います。そいうこと?