oracle.lite.web.html
クラス TemplateParser

java.lang.Object
  |
  +--javax.servlet.GenericServlet
        |
        +--javax.servlet.http.HttpServlet
              |
              +--oracle.lite.web.html.TemplateParser
 

public abstract class TemplateParser
extends javax.servlet.http.HttpServlet

この抽象クラスにより、静的HTMLページに動的コンテンツを追加できます。 これを行うには、標準のHTMLツールまたはテキスト・エディタを使用してHTMLページを1つ以上作成し、このHTMLページ上で動的コンテンツが必要な箇所に次のタグを挿入します。

<WRB_INC NAME="dynItem1" VALUE="defaultValue">

このクラスには、サブクラスでオーバーライドする必要があるメソッドが2つ含まれています。

getFileName(HTTPServletRequest req) - テンプレート・ファイルへのフル・パスを取り出します。

getWRB_TAGS(HTTPServletRequest req) - 要求内または要求のセッション・オブジェクト内に設定されたパラメータに基づいて、HTMLタグとタグに対応するメソッドのリストを取り出すようにオーバーライドする必要があります。

関連項目:
直列化された形式

コンストラクタの概要
TemplateParser()
           
 
メソッドの概要
 void afterGet(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res)
          このメソッドは、HTTP GET要求が処理された後にコールされます。
 void afterPost(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res)
          このメソッドは、HTTP POST要求が処理された後にコールされます。
 void beforeGet(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res)
          このメソッドは、HTTP GET要求が処理される前にコールされます。
 void beforePost(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res)
          このメソッドは、HTTP POST要求が処理される前にコールされます。
 void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          HTTP GET要求を処理します。
 void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          HTTP POST要求を処理します。
 java.lang.String FetchAndFormatData(java.sql.Connection conn, DBTable rec)
          DBTableパラメータに指定されているデータベースからデータをフェッチします。データはHTML表の形式にされ、HTMLは文字列の形式でコール側に返されます。
abstract  java.lang.String getFileName(javax.servlet.http.HttpServletRequest req)
          このメソッドは、HTMLテンプレート・ファイルの場所を返します。このメソッドはサブクラスで実装する必要があります。
 java.lang.String getMultipleSelectionAsList(javax.servlet.http.HttpServletRequest req, java.lang.String name)
          HTTP要求からの指定されたHTTPパラメータに対する一連の値をカンマで区切ったリストとして返す簡易関数です。
 java.lang.String getSingleParameterValue(javax.servlet.http.HttpServletRequest req, java.lang.String name)
          HTTP要求からの指定されたHTTPパラメータに対する最初の値を返します。パラメータがない場合はNULLを返します。
abstract  java.lang.String[][] getWRB_TAGS(javax.servlet.http.HttpServletRequest req)
          このメソッドは、タグとタグに対応するメソッドのリストを取り出すためにコールされます。
 java.sql.Connection retrieveConnection(javax.servlet.http.HttpServletRequest req)
          セッション情報から接続をフェッチします。
 
クラス javax.servlet.http.HttpServletから継承したメソッド
service
 
クラス javax.servlet.GenericServletから継承したメソッド
destroy, getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, init, log, log
 
クラス java.lang.Objectから継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

TemplateParser

public TemplateParser() 
メソッドの詳細

beforeGet

public void beforeGet(javax.servlet.http.HttpServletRequest req,
                      javax.servlet.http.HttpServletResponse res)
               throws java.lang.Exception,
                      oracle.lite.web.util.JupException 
このメソッドは、HTTP GET要求が処理される前にコールされます。 このメソッドを使用すれば、HTMLテンプレートの解析前に任意の初期化を実行できます。
パラメータ:
req - HTTP要求。
res - HTTP応答。
例外:
java.lang.Exception - エラーが発生した場合に発生します。

beforePost

public void beforePost(javax.servlet.http.HttpServletRequest req,
                       javax.servlet.http.HttpServletResponse res)
                throws java.lang.Exception,
                       oracle.lite.web.util.JupException 
このメソッドは、HTTP POST要求が処理される前にコールされます。 このメソッドを使用すれば、HTMLテンプレートの解析前に任意の初期化を実行できます。
パラメータ:
req - HTTP要求。
res - HTTP応答。
例外:
java.lang.Exception - エラーが発生した場合に発生します。

afterGet

public void afterGet(javax.servlet.http.HttpServletRequest req,
                     javax.servlet.http.HttpServletResponse res)
              throws java.lang.Exception,
                     oracle.lite.web.util.JupException 
このメソッドは、HTTP GET要求が処理された後にコールされます。 このメソッドを使用すれば、HTMLページが作成されてブラウザに返された後のクリーンアップを実行できます。
パラメータ:
req - HTTP要求。
res - HTTP応答。
例外:
java.lang.Exception - エラーが発生した場合に発生します。

afterPost

public void afterPost(javax.servlet.http.HttpServletRequest req,
                      javax.servlet.http.HttpServletResponse res)
               throws java.lang.Exception,
                      oracle.lite.web.util.JupException 
このメソッドは、HTTP POST要求が処理された後にコールされます。 このメソッドを使用すれば、HTMLページが作成されてブラウザに返された後のクリーンアップを実行できます。
パラメータ:
req - HTTP要求。
res - HTTP応答。
例外:
java.lang.Exception - エラーが発生した場合に発生します。

doGet

public final void doGet(javax.servlet.http.HttpServletRequest request,
                        javax.servlet.http.HttpServletResponse response)
                 throws javax.servlet.ServletException,
                        java.io.IOException 
HTTP GET要求を処理します。 このメソッドは、getFileName()で指定されている場所からHTMLテンプレート・ファイルをロードします。 次にgetWRB_TAGS()をコールして、タグ名をメソッドにマップする2次元配列を取り出します。 テンプレート内で見つかったタグ名ごとに、対応するメソッドがコールされ、タグがメソッドの結果に置き換えられます。

このメソッドに入った時点でメソッドbeforeGet()がコールされます。 初期化を実行する場合は、このメソッドをサブ・クラスでオーバーライドします。
HTMLページの作成後、メソッドafterGet()がコールされます。 クリーンアップを実行する場合は、このメソッドをサブ・クラスでオーバーライドします。
注意: このメソッドは最終メソッドであるため、オーバーロードできません。
パラメータ:
request - HTTP要求。
response - HTTP応答。
例外:
java.io.IOException - テンプレート・ファイルが読み込めなかった場合に発生します。
javax.servlet.ServletException - 致命的なサーブレット・エラーが発生した場合に発生します。

doPost

public final void doPost(javax.servlet.http.HttpServletRequest request,
                         javax.servlet.http.HttpServletResponse response)
                  throws javax.servlet.ServletException,
                         java.io.IOException 
HTTP POST要求を処理します。 このメソッドは、getFileName(req)で指定されている場所からHTMLテンプレート・ファイルをロードします。 次にgetWRB_TAGS()をコールして、タグ名をメソッドにマップする2次元配列を取り出します。 テンプレート内で見つかったタグ名ごとに、対応するメソッドがコールされ、タグがメソッドの結果に置き換えられます。

このメソッドに入った時点でメソッドbeforePost()がコールされます。 初期化を実行する場合は、このメソッドをサブ・クラスでオーバーライドします。
HTMLページの作成後、メソッドafterPost()がコールされます。 クリーンアップを実行する場合は、このメソッドをサブ・クラスでオーバーライドします。
注意: このメソッドは最終メソッドであるため、オーバーロードできません。
パラメータ:
req - HTTP要求。
res - HTTP応答。
例外:
java.io.IOException - テンプレート・ファイルが読み込めなかった場合に発生します。
javax.servlet.ServletException - 致命的なサーブレット・エラーが発生した場合に発生します。

getMultipleSelectionAsList

public java.lang.String getMultipleSelectionAsList(javax.servlet.http.HttpServletRequest req,
                                                   java.lang.String name) 
HTTP要求から、指定されたHTTPパラメータに対する一連の値をカンマで区切ったリストとして返す簡易関数です。
パラメータ:
req - HTTP要求。
name - HTTP変数の名前。
戻り値:
指定されたパラメータに対するすべての値をカンマで区切ったリストを含む文字列。

getWRB_TAGS

public abstract java.lang.String[][] getWRB_TAGS(javax.servlet.http.HttpServletRequest req) 
このメソッドは、タグと対応するメソッドのリストを取り出すためにコールされます。 テンプレート内で見つかったタグごとに、対応するメソッドがコールされ、タグがメソッドの結果に置き換えられます。

注意:
TemplateParserから継承するスーパー・クラスでは、デフォルトの実装(下位互換性を保つためにgetWRB_TAGS()(パラメータなし)をコールする)をオーバーライドする必要があります。

それぞれが異なるタグ・セットを使用する複数のHTMLテンプレートをクライアントが実装できるように、HttpServletRequestパラメータが導入されています。 これにより、HTMLテンプレートの拡張性が大幅に高くなり、サーブレットでテンプレートを利用できます。
テンプレートの実装のサンプルを次に示します。
  public String[][] getWRB_TAGS(HttpServletRequest req)
  {
	   String templatetype = getSingleParameterValue(req,"templatetype");
	   if ("type1".equals(templatetype)
	   {
		 return new String[][]{
      // tag name    error message              method name
       {"buttonBar","Error creating ButtonBar","ButtonBar"}};
    }
    else
    {
		 return new String[][]{
      // tag name    error message              method name
       {"infoTable","Error creating InfoTable","InfoTable"}};
    }
  }
  
「templatetype」が「type1」の場合、タグ< WRB_INC name="buttonBar">がHTMLファイルで検索され、見つかった場合はメソッドButtonBar()がコールされます。HTMLテンプレート内のこのタグがButtonBarメソッドの結果に置き換えられます。 「templatetype」が「type1」以外の場合、タグ< WRB_INC name="infoTable">が検索され、見つかった場合はメソッドInfoTable()がコールされます。HTMLテンプレート内のこのタグがこのメソッドの結果に置き換えられます。
もちろん、複数のHTMLファイル・テンプレートを取り出すには、getFileName(HttpServletRequest)メソッドをこのメソッドといっしょに使用する必要があります。
メソッドのシグネチャは次のように指定する必要があります。
public String ButtonBar(HttpServletRequest request)
throws java.lang.Exception { }
 
戻り値:
タグ名と対応するメソッドを持つ2次元文字列配列。

getFileName

public abstract java.lang.String getFileName(javax.servlet.http.HttpServletRequest req) 
このメソッドは、HTMLテンプレート・ファイルの場所を返します。このメソッドはサブクラスで実装する必要があります。 このメソッドは、HTTP要求の処理中にコールされます。 このメソッドがHTTP要求の状態に応じたテンプレートを返すように、HTTP要求オブジェクトがこのメソッドに渡されます。
テンプレートの実装のサンプルを次に示します。
  public String[][] getFileName(HttpServletRequest req) {
    return "/foo/bar/my_template.html";
  }
  
戻り値:
テンプレート・ファイルへのフル・パスを含む文字列。

getSingleParameterValue

public java.lang.String getSingleParameterValue(javax.servlet.http.HttpServletRequest req,
                                                java.lang.String name) 
HTTP要求から、指定されたHTTPパラメータに対する最初の値を返します。パラメータがない場合はNULLを返します。
パラメータ:
req - HTTP要求。
name - HTTP変数の名前。
戻り値:
変数名の最初の値。

FetchAndFormatData

public java.lang.String FetchAndFormatData(java.sql.Connection conn,
                                           DBTable rec) 
DBTableパラメータに指定されているデータベースからデータをフェッチします。データはHTMLテーブルにフォーマットされ、HTMLは文字列の形式でコール側に返されます。 データベース・エラーが発生した場合、エラー・メッセージを含むHTML文字列が返されます。
パラメータ:
conn - データベースへの接続オブジェクト。
rec - フェッチされるデータとレイアウトを記述するDBTableオブジェクト。
戻り値:
HTMLテーブル上のデータベース・データまたは(エラーの場合は)エラー・メッセージを表すHTMLコードを含む文字列。

retrieveConnection

public java.sql.Connection retrieveConnection(javax.servlet.http.HttpServletRequest req)
                                       throws java.sql.SQLException 
セッション情報から接続をフェッチします。
パラメータ:
req - HTTP要求。
戻り値:
データベースへのJDBC接続オブジェクト。
例外:
java.sql.SQLException - 致命的なデータベース・エラーが発生した場合に発生します。