intra-mart Accel Platform スクリプト開発モデル プログラミングガイド 第16版 2020-04-01

ルーティング

概要

../../../_images/jssp_simple_routing.png
ルーティングとはURLに対して処理の登録、振り分けを行う機能です。
処理の登録が行われていないリクエストに対しては、アプリケーションサーバへのリクエスト処理が続行します。
スクリプト開発モデル では「スクリプト開発モデル用ルーティングテーブル」を利用してURLに対して スクリプト開発モデル のプログラムの割り当てを行います。

スクリプト開発モデル用ルーティングテーブル

設定ファイルの例を用いてスクリプト開発モデル用ルーティングテーブルが行う役割について説明します。

URLへのスクリプト開発モデルのプログラムの割り当て

  • http://<HOST>:<PORT>/<CONTEXT_PATH>/app/foo を スクリプト開発モデル のパス business/foo に割り当てるルーティングテーブルを作成します。

    • プレゼンテーション・ページ

      %CONTEXT_PATH%/WEB-INF/jssp/src/business/foo.html にファイルを作成します。
      ファイルを以下の内容にします。
      This is foo.
      
    • ファンクション・コンテナ

      処理が存在しないため、ファンクション・コンテナは作成しません。
    • ルーティングテーブル

      %CONTEXT_PATH%/WEB-INF/conf/routing-jssp-config/routing-programming-guide-foo.xml にファイルを作成します。
      ファイルを以下の内容にします。
      <?xml version="1.0" encoding="UTF-8"?>
      <routing-jssp-config
          xmlns="http://www.intra-mart.jp/router/routing-jssp-config"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://www.intra-mart.jp/router/routing-jssp-config routing-jssp-config.xsd">
      
          <authz-default mapper="welcome-all" />
      
          <file-mapping path="/app/foo" page="business/foo" />
      
      </routing-jssp-config>
      
      file-mapping要素でURLと スクリプト開発モデル のプログラムのマッピングを行います。
      path属性にURLのパス /app/foo 、page属性に スクリプト開発モデル のパス business/foo を指定します。
  • 設定ファイルを反映させるために、アプリケーションサーバを再起動します。

  • http://<HOST>:<PORT>/<CONTEXT_PATH>/app/foo へアクセスします

    ページに以下が表示されます
    This is foo.
    

    コラム

    この項目では、下記のポイントを確認しました。

    • URLへの スクリプト開発モデル のプログラムの割り当てはfile-mapping要素を用いて行う。
    • file-mapping要素のpath属性にURLのパス、page属性に スクリプト開発モデル のパスを記述する。

PathVariables

../../../_images/jssp_path_variables_routing.png
  • http://<HOST>:<PORT>/<CONTEXT_PATH>/app/bar/{id} を スクリプト開発モデル のパス business/bar に割り当てるルーティングテーブルを作成します。

    • プレゼンテーション・ページ

      %CONTEXT_PATH%/WEB-INF/jssp/src/business/bar.html にファイルを作成します。
      ファイルを以下の内容にします。
      "id" is <imart type="string" value=id />.
      
    • ファンクション・コンテナ

      %CONTEXT_PATH%/WEB-INF/jssp/src/business/bar.js にファイルを作成します。
      ファイルを以下の内容にします。
      var id;
      
      function init(request) {
          id = request.id;
      }
      
    • ルーティングテーブル

      %CONTEXT_PATH%/WEB-INF/conf/routing-jssp-config/routing-programming-guide-bar.xml にファイルを作成します。
      ファイルを以下の内容にします。
      <?xml version="1.0" encoding="UTF-8"?>
      <routing-jssp-config
          xmlns="http://www.intra-mart.jp/router/routing-jssp-config" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="http://www.intra-mart.jp/router/routing-jssp-config routing-jssp-config.xsd">
      
          <authz-default mapper="welcome-all" />
      
          <file-mapping path="/app/bar/{id}" page="business/bar" />
      
      </routing-jssp-config>
      
      path属性の中に{[識別子]}と記述することでURLの途中の値がパラメータとして引き渡されます。
  • 設定ファイルを反映させるために、アプリケーションサーバを再起動します。

  • http://<HOST>:<PORT>/<CONTEXT_PATH>/app/bar/aoyagi へアクセスします

    ページに以下が表示されます
    "id" is aoyagi.
    
  • http://<HOST>:<PORT>/<CONTEXT_PATH>/app/bar/ueda へアクセスします

    ページに以下が表示されます
    "id" is ueda.
    

    コラム

    この項目では、下記のポイントを確認しました。

    • file-mapping要素のpath属性に{[識別子]}と記述することでURLの途中の値がリクエスト・パラメータとして扱える。

認可

../../../_images/jssp_authz_routing.png
<?xml version="1.0" encoding="UTF-8"?>
<routing-jssp-config
    xmlns="http://www.intra-mart.jp/router/routing-jssp-config"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.intra-mart.jp/router/routing-jssp-config routing-jssp-config.xsd">

    <authz-default mapper="welcome-all" />

    <file-mapping path="/app/foo" page="business/foo" />

    <file-mapping path="/app/baz" page="business/baz">
        <authz uri="service://app/baz" action="execute" />
    </file-mapping>

</routing-jssp-config>
authz-default要素にはwelcome-allリソースマッパーが指定されています。この認可リソースマッパーは開発中に使用するものであり、アプリケーションリリース時には適したuriとactionまたはmapperを指定することを強く推奨します。
/app/foo へのアクセスの場合、file-mapping要素内にauthz要素が存在しないため、デフォルト認可設定であるwelcome-allマッパーが認可設定として利用されます。
/app/baz へのアクセスの場合、file-mapping要素内にauthz要素が存在するため、uriがservice://app/baz、actionがexecuteである認可設定として扱われます。
authz-default要素、authz要素共に省略可能ですが、file-mappingに対して有効な認可設定が指定されていない場合は省略できません。
メニュー項目はアクセス先のURLに対して権限があるもののみ表示されます。
詳細については 認可 を参照してください

コラム

この項目では、下記のポイントを確認しました。

  • authz-default要素、authz要素を用いて、認可設定を行えます。
  • URLに対して、認可設定が行われていない場合は省略できません。

クライアントタイプ

../../../_images/jssp_client_type_routing.png
  • http://<HOST>:<PORT>/<CONTEXT_PATH>/app/qux スマートフォンからアクセスされた場合に、 スクリプト開発モデル のパス business/qux_sp に割り当てその他の端末でアクセスされた場合に business/qux に割り当てるルーティングテーブルを作成します。

    • スマートフォン用プレゼンテーション・ページ

      %CONTEXT_PATH%/WEB-INF/jssp/src/business/qux_sp.html にファイルを作成します。
      ファイルを以下の内容にします。
      Smartphone.
      
    • スマートフォン以外からアクセス時のプレゼンテーション・ページの作成

      %CONTEXT_PATH%/WEB-INF/jssp/src/business/qux.html にファイルを作成します。
      ファイルを以下の内容にします。
      Not smartphone.
      
    • ファンクション・コンテナ

    処理が存在しないため、ファンクション・コンテナは作成しません。
    • ルーティングテーブル

      %CONTEXT_PATH%/WEB-INF/conf/routing-jssp-config/routing-programming-guide-qux.xml にファイルを作成します。
      ファイルを以下の内容にします。
      <?xml version="1.0" encoding="UTF-8"?>
      <routing-jssp-config
          xmlns="http://www.intra-mart.jp/router/routing-jssp-config" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="http://www.intra-mart.jp/router/routing-jssp-config routing-jssp-config.xsd">
      
          <authz-default mapper="welcome-all" />
      
          <file-mapping path="/app/qux" page="business/qux" />
      
          <file-mapping path="/app/qux" page="business/qux_sp" client-type="sp" />
      
      </routing-jssp-config>
      
      file-mapping要素でclient-type属性を指定することで、指定のクライアントタイプでのマッピング設定が行えます。
  • 設定ファイルを反映させるために、アプリケーションサーバを再起動します。

  • PCのブラウザで http://<HOST>:<PORT>/<CONTEXT_PATH>/app/qux へアクセスします

    ページに以下が表示されます
    Not smartphone.
    
  • スマートフォンのブラウザで http://<HOST>:<PORT>/<CONTEXT_PATH>/app/qux へアクセスします

    ページに以下が表示されます
    Smartphone.
    
    • サーバへアクセスできるスマートフォン端末がない場合は http://<HOST>:<PORT>/<CONTEXT_PATH>/menu/sitemap アクセス後の右上のユーティリティメニューの「スマートフォン版へ」を選択後に、URLにアクセスしてください。
      ../../../_images/utility_menu.png

    コラム

    この項目では、下記のポイントを確認しました。

    • file-mapping要素にclient-type属性を指定することで、特定のクライアントタイプでの スクリプト開発モデル のプログラムを指定できます。