exteNd Workbench 4.1
コアヘルプ

 

    First Previous Next Last 開発ガイド  05/16/03 09:21:28 

第3章    JSPページの作成

JSP (JavaServer Pages)技術は、ダイナミックコンテンツを生成し、そのコンテンツをWebベースのアプリケーションに組み込むための標準的な方法を提供します。この章では、JSPについて概説します。次のトピックを取り上げます。

 
Top of page

JSPページの概要

JSPページは、SunのJ2EEプラットフォームの重要な部分で、JSPページを使用してアプリケーションのユーザインタフェースのコアを提供するように推奨します。JSPページは一般的に、WebベースのJ2EEアプリケーション(「Webアプリケーション」)で使用されます。Webアプリケーションには、WAR (Web Archive)ファイルと呼ばれるアーカイブにパッケージ化されたJSPページ、サーブレット、JavaBeans、ユーティリティクラス、イメージなどが含まれています。これらのアプリケーションは、ブラウザクライアントによりアクセスされます。

JSPページとサーブレットが「Web階層」と呼ばれることもあるJ2EEの中央階層にどのように置かれるかは、次の図のとおりです。

devJSPJ2EETiers

JSPページは、Webマークアップ言語の使用を容易にするJavaの機能を組み合わせているため、ダイナミックWebコンテンツの作成プロセスを簡素化します。JSPページの特徴は、次のとおりです。

JSPページおよびサーブレットについて   JSPページでは、アプリケーションサーバの基礎サーブレット技術を使用します。JSPページは、アプリケーションサーバに配備されると、サーブレットに変換され、実行するためにコンパイルされます。サーブレットとJSPページの違いについては、次に説明します。

サーブレットでは、CGI (Common Gateway Interface)プログラムと同様に、Webサーバの機能を拡張します。サーブレットは、CGIプログラムとは異なり、移植性(Javaで記述されている)およびスケーラビリティに優れ、維持が簡単であるため、より良い選択肢です。サーブレットは、HTTPリクエストを処理して応答を生成する方法を説明します。サーブレットは、ダイナミックコンテンツを配布するために使用できます。

サーブレットと同様、JSPページは、HTTPリクエストを処理してHTTPリクエストに応答する方法を説明します。Javaで記述されているサーブレットとは異なり、JSPページは、HTMLおよびJSPタグの組み合わせ、Javaコード、およびその他の情報を含むテキストベースのドキュメントです。

JSPページおよびサーブレットでは、両方とも同じ問題を解決しますが、JSPページには、アプリケーション論理(Javaでコード化)から表示(HTMLで表現)が区別されるという利点があります。サーブレットを使用すると、表示とアプリケーション論理は同じJavaファイルに互いに混在します。したがって、JSPページを使用すると、UI開発者には情報の表示を作業させる一方、Javaプログラマにはアプリケーション論理の開発を別に行わせることができます。

 
Top of section

JSPページに対するNovell exteNd Workbenchサポート

Novell exteNd Workbenchには、JSPページを開発して配備できるようにするツールがあります。具体的には、次のものを備えています。

Workbenchツール

説明

JSPウィザード

新しいJSPページに対してさまざまな属性をすばやく指定できるようにし、開いているプロジェクトにJSPページを追加します。

For more information    JSPウィザードの詳細については、『ツールガイド』の コンポーネントウィザードに関する章を参照してください。

Tag Handlerウィザード

カスタムJSPタグに対してタグハンドラクラスおよびTLDをすばやく作成できるようにします。

For more information    Tag Handlerウィザードの詳細については、『ツールガイド』の コンポーネントウィザードに関する章を参照してください。

配備記述子エディタ

J2EE互換配備記述子を作成して追加できるようにします。

配備計画エディタ

exteNd Application ServerにJ2EE互換コンポーネントを配備する配備計画を作成して追加できるようにします。

配備ツール

さまざまなJ2EEサーバにJ2EE互換アーカイブファイル(WARなど)を配備できるようにします。アーカイブは、J2EE 1.2および1.3をサポートするサーバに配備できます。

Workbenchでは、2.2および2.3の両方のWARの開発をサポートしています。作成するWARバージョンを決定するには、 J2EEバージョンに関する章を参照してください。

For more information    仕様の詳細とアクセスについては、Sun JavaのWebサイト( http://java.sun.com/j2ee/docs.html)を参照してください。

 
Top of section

サンプルJSPページの参照

サンプルJSPページは次のとおりです。

  <html>
  <jsp:useBean id=\xd3 clock\xd3  scope=\xd3 page\xd3  class=\xd3 util.JspCalendar\xd3 />
  <jsp:useBean id=\xd3 sql\xd3  scope=\xd3 request\xd3  class=\xd3 util.JspSQL\xd3 />
  
  <%@ taglib uri=\xd3 SampleTags\xd3  prefix=\xd3 SampleTags\xd3  %>
  
  <h4>Use a tag library</h4>
  <SampleTags:SimpleTag/>
  
  <h4>Use the implicit Request object</h4>
  <ul>
  <li>Server name: <%= request.getServerName() %>
  <li>Server port: <%= request.getServerPort() %>
  <li>HTTP method: <%= request.getMethod() %>
  </ul>
  
  <h4>Use a Bean to access date information</h4>
  <ul>
  <li>Day of month: is  <jsp:getProperty name=\xd3 clock\xd3  property=\xd3 dayOfMonth\xd3 />
  <li>Another form of Day of month: is  <%=clock.getDayOfMonth() %>
  <li>Year: is  <jsp:getProperty name=\xd3 clock\xd3  property=\xd3 year\xd3 />
  <li>Month: is  <jsp:getProperty name=\xd3 clock\xd3  property=\xd3 month\xd3 />
  </ul>
  
  <h4>Call a function declared on the JSP page</h4>
  <%-- Function declaration --%>
  <%! 
     public String getAString(String x)
     {
     return x + \xd2  was passed in\xd3 ;
     }
  %>
  
  <ul>
  <li>Call getAString: <%= getAString(\xd2 Hello\xd3 ) %>
  </ul>
  
  <h4>Use a Bean to access a database</h4>
  <%= sql.getSQL(request, \xd2 Select ID, LASTNAME, FIRSTNAME from EMPLOYEES\xd3 ) %>
  
  <h4>Execute a scriplet that has embedded text</h4>
  <% if (java.util.Calendar.getInstance().get(java.util.Calendar.AM_PM) == java.util.Calendar.AM) {%>
  Good morning!
  <% } else { %>
  Good afternoon
  !
  <% } %>
  
  <h4>Include the output of another JSP</h4>
  <jsp:include page=\xd3 include.jsp\xd3 />
  
  </html>

ページは次のように表示されます。

devJSPSampleOutput

機能   サンプルページは、次を含むJSPのほとんどの機能を示しています。

HTMLおよびJavaの混在   この例からもわかるように、JSPページには、HTMLおよびJavaコードの両方を含むことができます。この例は非常に単純で、JSP機能を示すことだけを目的としているため、両方を使用することが可能です。しかし、HTMLおよびJavaを同じファイルに撒き散らすことは、大きなアプリケーションでは理想的ではありません。これは、Webページ設計者が必ずしもJavaを知っているわけではなく、Javaプログラマもページ設計者と同様にHTMLを書かない場合があるからです。さらに、HTMLおよびJavaを同じ場所で維持すると、スタティックコンテンツとダイナミックコンテンツの区別があいまいになります。

このような理由から、通常は、JavaコードをJSPとは別に維持する必要があります。これを行うには、次の2つの方法があります。

これらの技術は両方とも、サンプルページで示されています。

 
Top of page

JSPページの開発

JSPベースのアプリケーション(Webアプリケーション)を開発するには、JSPページ、Javaサーブレット、JavaBeanコンポーネント、およびその他のサポートJavaクラスを次のように作成します。

  1. Webアプリケーションに必要な形式に従ってアプリケーションのディレクトリ構造を作成します。ディレクトリ構造は、次のようになります。

    注記:   Workbenchでは、希望の方法でファイルを整理し、ファイルの場所をWARファイルに必要な構造にマップすることができます。JSPページおよびWorkbenchを初めて操作する場合は、JSP開発に慣れるために、まずWAR仕様に一致するようにファイルを整理することが推奨されます。その後、希望の方法でファイルを整理するWorkbenchの柔軟性を利用できます。詳細については、『ツールガイド』の「 プロジェクトおよびアーカイブ」を参照してください。

    WARFileFormat

    WAR — Web Archiveファイル。Webベースのアプリケーションに対するコンテナです。

    ルートディレクトリ — JSPページ、HTMLドキュメント、およびアプリケーションのその他のコンテンツを含むことができます。ルートから外れたサブディレクトリの場合もあります。たとえば、jspsというディレクトリにJSPページを配置したい場合が挙げられます。

    WEB-INF — クライアントに対して直接使用可能になるべきではないアプリケーションのすべてのコンポーネントを含む必要なサブディレクトリ。WEB-INFディレクトリには、Webアプリケーションの配備記述子であるweb.xmlというファイルが含まれていなければなりません。

    WEB-INFサブディレクトリでは、次のサブディレクトリを含むことができます。

    classesサブディレクトリおよびlibサブディレクトリに加えて、WEB-INFサブディレクトリでは、オプションとして他のサブディレクトリを持つことができます。これらのサブディレクトリには希望の名前を付けることができます。たとえば、タグライブラリ記述子ファイルを含むtldsという名前のサブディレクトリを含めることができます。

  2. JSPページを作成し、Webアプリケーションのルートディレクトリまたはルートのサブディレクトリに保存します。

  3. アプリケーションにより要求されるJavaサーブレット、JavaBeanコンポーネント、またはその他のサポートJavaクラスを作成し、これらのクラスをコンパイルします。

Workbenchの場合   前に表示したメインJSPページのサンプルアプリケーションに対して作成されたWorkbenchプロジェクトは、次のとおりです。

devJSPProj1

JSPページは、jspsサブディレクトリにあります。タグライブラリ定義ファイル(SampleTags.tld)は、tldsサブディレクトリにあります。すべてのJavaソースファイルは、classes/utilディレクトリにあります。

アプリケーションがパッケージ化される前に、プロジェクトのすべてのJavaファイルがコンパイルされます。

JSPページはこの段階ではコンパイルされないので注意してください。つまり、JSPページは、アプリケーションを配備するときにサーバで、Javaサーブレットソースファイルに変換されてから、コンパイルされます。WARにパッケージ化されるファイルには、次のものがあります。

 
Top of page

アプリケーションのパッケージ化

Webアプリケーションのコンポーネントを作成したら、そのアプリケーションをWARにパッケージ化します。これを行うには、次の操作を実行します。

  1. アプリケーションの「配備記述子」を作成します。

    ファイルにはweb.xmlという名前を付け、このファイルをWEB-INFディレクトリに保存する必要があります。

  2. WARファイル(拡張子が.WARのJARファイル)を作成し、 JSPソースファイルおよびその他のアプリケーションコンポーネントをそのWARファイルに追加します。

配備記述子の作成

web.xmlファイルはWARファイルの配備記述子で、次のような設定情報を含んでいます。

web.xmlファイルで指定される大部分の情報は、Webアプリケーションで提供されるサーブレットに依存します。URLを通してユーザがサーブレットに直接アクセスできるようにするには、サーブレットに対する名前とURLパターンをweb.xmlで指定します。WEB-INFディレクトリの外部のパブリックディレクトリに配置されるJSPページの名前とURLパターンは指定する必要がありません(ユーザのリクエストに従って自動的に指定されます)。ただし、WARファイルのJSPファイルの場所に一致するURLではないURLを通してアクセス可能にする場合は、web.xmlでJSPページをマップできます。

web.xmlでは、WorkbenchインストールのResource/DTDCatalogサブディレクトリにあるweb-app_2_2.dtdというSun J2EE WebアプリケーションDTDにより指定された形式に従う必要があります。Javaサーブレット仕様のバージョン2.2には、各タグに関する完全なドキュメントがあります。このドキュメントは、Sun JavaのWebサイト( http://java.sun.com/j2ee/docs.html)から入手できます。

サンプルアプリケーションのweb.xmlファイルは次のとおりです。

  <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
  <web-app>
    <taglib>
      <taglib-uri>SampleTags</taglib-uri>
      <taglib-location>/WEB-INF/tlds/SampleTags.tld</taglib-location>
    </taglib>
  </web-app>

アプリケーションのweb.xmlファイルは非常に単純で、エントリは1つ(<taglib>)しかありません。このエントリは、タグライブラリのuri (タグライブラリを使用するJSPページで指定されている)をWARのファイルの場所にマップします(同じサンプルアプリケーションでは、SampleTags.tldファイルはWEB-INFディレクトリのtldsサブディレクトリにあります)。

Workbenchの場合   配備記述子エディタを使用すると、アプリケーションの配備記述子を容易に作成して維持できます。

devJSPwebxml

WARファイルの作成

Webアプリケーションは、WARファイルにパッケージ化される必要があります。WARファイルを作成するには、任意のアーカイブツールを使用します。

Workbenchの場合   アーカイブ(WARファイル)を作成するには、[Project]>[Build and Archive]の順に選択するか(コンパイルが必要なJavaファイルをコンパイルし、WARファイルを作成します)、または[Project]>[Rebuild All and Archive]の順に選択します(プロジェクトのすべてのJavaファイルをコンパイルし、WARファイルを作成します)。

 
Top of page

アプリケーションの配備

ユーザに対してアプリケーションを使用可能にするには、Novell exteNd Application ServerなどのJ2EEサーバにそのアプリケーションを配備します。これは、次のようにして行います。

  1. アプリケーションに固有なランタイム配備情報をファイルで指定します。

    この手順はサーバ固有です(J2EE標準では指定されていません)。各J2EEサーバには、ランタイム配備情報を指定するための独自の要件があります。たとえば、Novell exteNd Application Serverでは「配備計画」を使用し、Sun Reference Implementationでは「ランタイム配備記述子」を使用します。

  2. アプリケーションを配備します。

配備時に行われること   サーバでは次のことを行います。

  1. WARのすべてのJSPページをJavaソースファイルにコンパイルします。

    Javaソースファイルにより、HttpJspPageインタフェースを実装するクラスが定義されます。デフォルトでは、次のパッケージがインポートされます。

    必要な場合は、JSPページディレクティブのインポート属性を使用して、追加のパッケージまたはクラスをインポートできます。

    注記:   一部のJ2EEサーバでは、配備時ではなく、ランタイム時にJSPページをコンパイルします。

  2. Javaソースをコンパイルします。

    Javaクラスに対して生成されたコードは、JSP 1.1仕様に準拠しています。

  3. 配備されたWARファイルに結果を追加します。

  4. WARのすべてのリソースをユーザリクエストに対して使用可能にします。

JSPページに加えて、配備されたWARでは、サーブレットクラスおよび個別にコンパイルされたその他のサポートJavaファイルだけでなく、HTMLドキュメント、イメージ、およびアプリケーションで要求されたその他のファイルが含まれることがあります。.JSPファイルではないJavaソースファイルは配備でコンパイルされないことに注意してください。

Workbenchの場合   アプリケーションを配備する

  1. アプリケーションを配備する先のJ2EEサーバに対してサーバプロファイルを定義します。

    For more information    詳細については、『ツールガイド』の「 Workbenchプロファイルの設定」を参照してください。

  2. サーバが実行中でアクセス可能であることを確認します。

  3. Project]>[Deploy Archive]の順に選択します。

  4. [Deployment]ダイアログボックスに情報を入力します。

    入力しなければならない情報は、配備する先のサーバによって異なります。[Deployment]ダイアログボックスには、指定したサーバに関連する情報のみが表示されます。

  5. OK]をクリックして、アプリケーションを配備します。

サンプルアプリケーションがNovell exteNd Application Serverで配備された方法は、次のとおりです。Novell exteNd Application Serverでは、「配備計画」、つまりWARファイルのコンテンツとその配備方法に関する追加情報を提供するXMLファイルを使用します。計画は、配備計画エディタで作成します。配備計画の詳細については、『ツールガイド』の「 配備計画エディタ」を参照してください。

サンプルアプリケーションに対して配備計画エディタでプロパティを指定する方法は、次のとおりです。

devJSPDeployPlan

Workbenchでは、これらの仕様からXMLに配備計画を作成します。

配備計画は、アプリケーションを有効にし、アプリケーションのセッションタイムアウトを設定し、アプリケーションへのアクセスに使用できるURLを定義します。

最後に、アプリケーションは、[Project]>[Deploy Archive]の順に選択して、[Deployment]ダイアログボックスに入力し、[OK]をクリックすることによって配備されました。

devJSPDeploy

 
Top of page

アプリケーションの実行

アプリケーションは、いったん配備されたら、適切なURLを指定することによってブラウザで実行できます。

サンプルアプリケーションは次のとおりです。

devJSPSampleOutput

URLの各部に関する注意:

JSPページおよびその開発に関する基礎についての説明が終了したので、市販のJSP関連の書籍を入手して、独自の開発を進めてください。

    First Previous Next Last 開発ガイド  05/16/03 09:21:28 

Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC, a wholly owned subsidiary of Novell, Inc. All rights reserved.