JSP/サーブレット緊急学習記 1日目
以前作成した記事を公開するのを忘れていたので公開します。(ごめんなさい…)
LAMPを勉強しながら連載記事を書いていたのですが…
急遽JSP/サーブレットを学ぶことになったので、またまた日報がてら書いていきます。
webの簡単な仕組みについてはこちらで御確認ください。
JSPとサーブレットを使用する利点
JSPとサーブレットを使用する利点として以下の点が挙げられます。
- 環境を選ばない
- 処理が速い
- ユーザ数の増加に対応
原則windows,Mac,LINUXどのOS上でも動作可能
JSPとサーブレットは所謂コンパイル言語であり、コンパイルした状態でサーバ上に配置するため即実行可能です。
それ故、処理速度が圧倒的に高速です。
さらに一旦呼び出されたプログラムはメモリ上に残るので、次回以降の呼び出しも高速です。
例えばCGIを使用する場合は、ユーザの増加(=リクエストの増加)に伴い、個別にプロセスが立ち上がります。
JSPとサーブレットを使用した場合は、プロセスは一つしか立ち上がりません。
そのプロセスの中でリクエストに数だけ、JSPやサーブレットが実行されます。
JSPとサーブレットの使い方
JSPとサーブレットって何故2つ併せて使用することが多いのでしょうか。
そしてこの2つはどのように違うのでしょうか?
結論から言うと、できることはほとんど同じですが少しだけ異なります。
- JSPで実現できることは、すべてサーブレットで実現できます。
- サーブレットで実現できることは、ほとんどJSPで実現できます。
実はサーブレットの方が少しだけ多いです。
また「見た目」が異なります。
- JSP
HTMLの中にjavaプログラムを埋め込む。
<html> <head> <title>さんぷる1</title> </head> <body> <% out.print("<p>てすと1</p>"); %> </body> </html>
javaプログラムの中からHTMLを出力。
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class test extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) { throws IOException, ServletException { response.setContentType("text/html; charset=Shift_JIS"); PrintWriter out = response.getWriter(); out.println(createHTML("<html>")); out.println(createHTML("<head>")); out.println(createHTML("<title>さんぷる1</title>")); out.println(createHTML("</head>")); out.println(createHTML("<body>")); out.println(createHTML("<p>てすと1</p>")); out.println(createHTML("</body>")); out.println(createHTML("</html>")); } } }
上記を比較すると一目瞭然ですが、これらは用途によって使い分けます。
例えば、静的なHTMLをたくさん作りたい(出力)させたいのであれば、JSPの方が向いていることはわかりますよね?
javaで記述してしまうとコード量が増加し、複雑化することによりメンテナンス性が落ちるからです。
逆にwebページの骨組み以外の事をHTML内に記述してしまうと、構造を確認しにくくなるためサーブレットの方が向いています。
つまり、表示関係の機能はJSPで行い、処理関係の機能はサーブレットで行うということになります。
だから2つセットで扱われることが多いのですね。
コンパイル
JSPとサーブレットは各々どのようにコンパイルを行うのか確認しましょう。
- JSP
- サーブレット
作成したファイルを直接サーバ上に置く
作成したソースコードを手動でコンパイルし、実行ファイルをサーバに置く
サーブレットの方がJSPよりも作業が少ないのですが、2回目以降のレスポンスの速度はほとんど変わりません。
それでは初日はここまでで。