川久保 智晴 [著] 2010/02/17 14:00

 この連載では、「GlassFish」という製品を利用して、Java言語に親しんでもらうことを目的としています。第3回目の今回は、バージョンが2.0以降になってから大きく変わった「JSP」の基礎を説明します。

1 2 3 4 5 6 →

はじめに

 この連載では、「GlassFish」という製品を利用して、Java言語に親しんでもらうことを目的としています。第3回目の今回は、簡単なWebアプリケーションを作成しながら、ServletやJSP(JavaServer Pages)についての理解を深めていきたいと思います。

対象読者

  • Javaでなにかしらのアプリケーションを作成したことのある方
  • Javaの変数の宣言や、if文・for文・while文の制御文など簡単な文法を知っており、アプリケーションを作成したことのある方

 オブジェクト指向プログラミングができなくとも構いません。徐々に学んでいければと考えています。また、学びやすいWebアプリケーションをサンプルとするので、Webアプリケーションとは違った分野を勉強したい方には当連載は向いていません。

仕様書バージョン

 Java EE 5を使用するため、主な技術要素のバージョンは以下の通りです。EJBに関しては応用編で扱う予定です。

  • Servlet:2.5
  • JSP:2.1
  • JSTL:1.2
  • JTA:1.1
  • EJB:3.0(応用編)

JSPって何?

 筆者流に言うならば、Ajaxの羽根飾りの付いたHTMLの仮面を被ったServletであるというところでしょうか。前回も説明したように、JSPはServletの上に乗った仕様であり実装です。従って、JSPはServletに翻訳された後コンパイルされます。後ほど、JSPからServletに翻訳されたコードで説明します。Servletからout.printlnでクライアントに返すHTMLを作成していましたが、その煩わしさから解放してくれます。ただこれだけの理由であれば積極的にJSPを作成する意味がありません。JSPの1番の魅力は動的なコンテンツの作成であると言えます。

 JSP自体は可読性の高さ、再利用のしやすさを向上させるように進化してきたように思えます。JSP登場当初はHTMLにJavaコードが書けるということで飛びついた方も多かったように記憶しています。今ではJavaコードを極力書かないのが流儀となっているようです。

 JSPファイルが難しく感じるようになったのは、JSPファイルにAjaxなどのコードが入るようになってからのように思えます。Javaコードを書かない代わりにJavaScriptでファイルが埋め尽くされていることもあります。可読性の高さを狙ったはずがJSPを含んだファイル自体の可読性は低くなったように感じるのは筆者だけでしょうか。そういう筆者もJavaScriptを多用するようになり、いかに可読性を高めるかに頭を抱える日々が続いています。

さらっと読んでも構いません

 今回はNetBeansを使った説明はしません。次回、ServletとJSPの基礎を押さえたうえで簡単なWebアプリケーションを作成します。入門者にとってServletは非常に簡単な概念である一方、JSPはその構文を知らないとまったく理解できません。従って、今回はJSPで最低でも覚えてほしい構文を説明します。

 入門者でなくとも構文だけ説明されて理解できるものではありません。構文と実際のコードがあって初めて理解可能となります。ただし、既存の書籍やサイトは入門者が間違いやすい点を分かりやすく説明できているとは思えません。当連載は筆者の理解に沿って入門者に分かりやすい表現を使っています。しかし、それでもJSPを理解するのは骨の折れる作業なので、今回はさらっと読んでいただき、次回の実際のサンプルアプリケーションで理解を深めてもらうのも1つの方法です。次回、分からない言葉が出てきた時に今回の記事に戻ってきてもらっても構いません。

 また、JSP 1.Xの知識や経験はあるが、JSP 2.Xはないという方は、目新しい箇所だけ読んでいただければと思います。

JSPの作成はServletの1つのメソッドを作成するのと同義

 JSPだけを作成していると気づかないのが、Servletに置き換えられた時のイメージです。JSPで宣言を使用するとフィールド変数やメソッドを作成することも可能です。ただ、普段作成するJSPであまり宣言は使用しません。JSPでメソッドを宣言しない場合、JSPは前回紹介したprocessRequestメソッドの内部をコーディングしていることと同じことだと考えて構いません。

宣言には注意

 JSPのなかで<%! int a = 0 %>のように変数を宣言すると、これはフィールド変数になります。従って、前回説明した「メモリの奪い合い」が起こるので慎重に扱う必要があります。入門者が陥りやすいバグです。また、メソッドを宣言すると先述のprocessRequestに相当するメソッドとは別のメソッドを定義することになります。

ライフサイクルもServletと同じ

 JSPが翻訳されコンパイルされることを考えると、ライフサイクルもServletと同じになります。


1 2 3 4 5 6
→
INDEX
GlassFishからアプローチするJava~入門編~ 第3回「Webアプリケーションの作成 JSPの基礎を学ぶ」
Page1
はじめに
JSPって何?
スコープについて
JSPの構造
JSTLって何?
おさらい
参考文献
プロフィール
川久保 智晴 カワクボ トモハル

COBOLで13年、Javaを中心としたWeb開発で11年。2つしか言語知らないのかというとそうでもなく、sed/awk、Perl、Pythonなども一時期は業務で使えるレベルまで達したと思っています(自己申告)。

最近はプロジェクトマネージャやソフトウェアアーキテクトという一見相容れない仕事を繰り返してきましたが、実は両者の技術は密接に絡んでいるというのが最近考えていることです。プロジェクトマネージャがあまりにも技術に疎かったり、ソフトウェアアーキテクトがあまりにもコストに鈍感であったりするのを見るにつけ思いが深まっています。

そういう会社員生活も2010年10月でピリオドを打ち、長年構想中のビジネスモデルをシステム化するために独立。2年後のビジネス化を目指しています。それまでの2年間はJavaを含めたプログラミング教室(http://www.programclass.com)で食いつなぐつもりです。2010年末時点で20名のJava教室の生徒さんがいます。Skypeを使っているので全国から問い合わせがあります。まだまだ募集していますので、気軽にメールを頂ければと思います。

以前はお酒が大好きでいろんなところに出没していましたが、今はおとなしく家飲みに徹しています。土日は20キロ近くジョギングしたりして爽やかなIT起業家となり雇用の創出に貢献できればと思っています。


記事へのコメント・トラックバック機能は2011年6月に廃止させていただきました。記事に対する反響はTwitterやFacebook、ソーシャルブックマークサービスのコメントなどでぜひお寄せください。

スポンサーサイト