org.opengion.hayabusa.taglib

## クラス CookieTag

- java.lang.Object
- - javax.servlet.jsp.tagext.TagSupport
  - - javax.servlet.jsp.tagext.BodyTagSupport
    - - org.opengion.hayabusa.taglib.CommonTagSupport
      - - org.opengion.hayabusa.taglib.CookieTag

- すべての実装されたインタフェース:
    java.io.Serializable, BodyTag, IterationTag, JspTag, Tag, TryCatchFinally

      public class CookieTag
      extends CommonTagSupport

       Cookie を読み書きするタグです。

       Cookie は少量の情報を Servlet から Web ブラウザに送り、 ブラウザにそれを
       維持しもらい、以降のアクセスでサーバに送り返してもらう仕組です。
       Cookie の値はクライアントを一意に識別できるようになっているので一般に
       セッション管理に用いられています。

       Cookie には名前と値が一つありますが、他にコメントやパス、ドメイン、
       最長存続期間、バージョンといったオプショナルな属性もあります。
       Web ブラウザの中にはオプショナルな属性の扱いにバグがあるものがあります。
       このため、Servlet の相互運用性を高めるためにはあまり使わないほうがいいでしょう。

       標準の JavaScript で登録機能はサポートしていましたが、メモリのみで、かつ
       画面単位の書き込みのみでした。
       今回の cookie タグでは、永続化(maxAge)の設定や、システム内(CONTEXT_NAME以下)
       での共有(デフォルト)や、その変更、ドメインを指定しての共有(domain)などの
       機能を持っています。
       また、漢字コードでの読み書き(useBase64)にも対応しています。
       読み込みに関しては、漢字を指定しなければ、{@SYS.COOKIE.カラム名}で、使用可能です。
       複数の読み込み、また、漢字コードを含むクッキーの場合は、読み込み(action="LOAD")
       してください。指定のキー以外に、別名に読み込む(aliasNames)事も可能です。

  関連項目:
    直列化された形式
  形式サンプル:

         ●形式：
            <og:cookie
                action    = "SAVE"       Cookie に対するアクションを指定します。(SAVE|LOAD|DELETE)
                keys      = "AAA,BBB"    キーをCSV形式で複数指定できます。
                vals      = "VAL1,VAL2"  値をCSV形式で複数指定できます。
                path      = "/ge"        クライアントがこの Cookie を返さなくてはいけないパスを指定します。
                domain    = ".foo.com"   この Cookie がどこで生成されたかを表すドメインを指定します。
                maxAge    = "3600"       Cookie の最長存続期間を秒単位で設定します。
                useBase64 = "false"      漢字等の２Byte文字を使用する場合に、BASE64で処理します。[true/false]
            >
         ●body：なし

         ●Tag定義：
           <og:cookie
               action           ○【TAG】アクション(SAVE,LOAD,DELETE)をセットします(必須)。
               keys             ○【TAG】クッキーのキーをCSV形式で複数指定します(必須)。
               vals               【TAG】keys属性に対応する値をCSV形式で複数指定します
               aliasNames         【TAG】クッキーのキーの別名をCSV形式で複数指定します
               path               【TAG】クライアントがこの Cookie を返さなくてはいけないパスを指定します(初期値:/+CONTEXT_NAME)
               domain             【TAG】この Cookie がどこで生成されたかを表すドメインを指定します(初期値:付与したサーバ)
               maxAge             【TAG】Cookie の最長存続期間を秒単位で設定します(初期値: -1 )
               useBase64          【TAG】漢字等の文字を扱う場合に、BASE64で処理を行うかどうか[true/false]を設定します(初期値:false )
               debug              【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false)
           />

         ●使用例
            例１)設定:複数キーを同時に書き込むことが可能です。
                <og:cookie
                    action="SAVE" keys="CDJ,FG_NAME" vals="{@CDJ},{@NAME}"
                />

            例２)取得:cookieタグで取得すると、それ以降では {@CDJ} や {@NAME} で扱えます。
                  aliasNames 属性を使わない場合は、keys に指定した変数にセットされます。
                <og:cookie
                    action="LOAD" keys="CDJ,FG_NAME" aliasNames="CDJ,NAME"
                />

            例３)取得:SYS パラメータでの取得も可能です。
                {@SYS.COOKIE.CDJ}

            例４) QUERY画面では値の表示(LOAD)を行い、RESULT画面で値の設定(SAVE)を行うケース

                QUERY画面
                <og:cookie action="LOAD" useBase64="true"
                                keys="CLM,NAME" aliasNames="CLM,LABEL_NAME" />

                <og:column name="CLM"        defaultVal="{@CLM}" />
                <og:column name="LABEL_NAME" defaultVal="{@LABEL_NAME}"/>

                RESULT画面
                <og:cookie action="SAVE" maxAge="360000" useBase64="true"
                                keys="CLM,NAME" vals="{@CLM},{@LABEL_NAME}" />

            例５) QUERY画面では、{@SYS.COOKIE.カラム名} で取得。
                RESULT画面では、ムラタ内全システム共通に使える値をセット。

                QUERY画面
                <og:column name="SYSTEM_ID" defaultVal="{@SYS.COOKIE.SYSTEM_ID}" />

                RESULT画面
                <og:cookie action="SAVE" maxAge="360000" domain=".opengion.org"
                                keys="SYSTEM_ID" vals="{@SYSTEM_ID}" />

  変更履歴:

    3.8.0.2 (2005/06/30) 新規作成

  機能分類
    画面制御
  バージョン
    0.9.0 2000/10/17
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK5.0,

- - ### フィールドのサマリー

    フィールド
    修飾子とタイプ | フィールドと説明
    --- | ---
    `static java.lang.String` | `ACT_DELETE` action 引数に渡す事の出来る アクション 削除 "DELETE"
    `static java.lang.String` | `ACT_LOAD` action 引数に渡す事の出来る アクション 取得 "LOAD"
    `static java.lang.String` | `ACT_SAVE` action 引数に渡す事の出来る アクション 設定 "SAVE"

    - ### クラスから継承されたフィールド org.opengion.hayabusa.taglib.CommonTagSupport

      `BR, BUFFER_MIDDLE, CR`

    - ### クラスから継承されたフィールド javax.servlet.jsp.tagext.BodyTagSupport

      `bodyContent`

    - ### クラスから継承されたフィールド javax.servlet.jsp.tagext.TagSupport

      `id, pageContext`

    - ### インタフェースから継承されたフィールド javax.servlet.jsp.tagext.BodyTag

      `EVAL_BODY_BUFFERED, EVAL_BODY_TAG`

    - ### インタフェースから継承されたフィールド javax.servlet.jsp.tagext.IterationTag

      `EVAL_BODY_AGAIN`

    - ### インタフェースから継承されたフィールド javax.servlet.jsp.tagext.Tag

      `EVAL_BODY_INCLUDE, EVAL_PAGE, SKIP_BODY, SKIP_PAGE`

  - ### コンストラクタのサマリー

    コンストラクタ
    コンストラクタと説明
    `CookieTag()` デフォルトコンストラクター

  - ### メソッドのサマリー

    すべてのメソッド インスタンス・メソッド concreteメソッド
    修飾子とタイプ | メソッドと説明
    --- | ---
    `int` | `doEndTag()` Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
    `protected void` | `release2()` タグリブオブジェクトをリリースします。
    `void` | `setAction(java.lang.String act)` 【TAG】アクション(SAVE,LOAD,DELETE)をセットします。
    `void` | `setAliasNames(java.lang.String names)` 【TAG】クッキーのキーの別名をCSV形式で複数指定します。
    `void` | `setDomain(java.lang.String pattern)` 【TAG】この Cookie がどこで生成されたかを表すドメインを指定します(初期値:付与したサーバ)。
    `void` | `setKeys(java.lang.String key)` 【TAG】クッキーのキーをCSV形式で複数指定します。
    `void` | `setMaxAge(java.lang.String expiry)` 【TAG】Cookie の最長存続期間を秒単位で設定します(初期値: -1 )。
    `void` | `setPath(java.lang.String uri)` 【TAG】クライアントがこの Cookie を返さなくてはいけないパスを指定します(初期値:/+CONTEXT_NAME)。
    `void` | `setUseBase64(java.lang.String flag)` 【TAG】漢字等の文字を扱う場合に、BASE64で処理を行うかどうか[true/false]を設定します(初期値:false )。
    `void` | `setVals(java.lang.String val)` 【TAG】keys属性に対応する値をCSV形式で複数指定します。
    `java.lang.String` | `toString()` このオブジェクトの文字列表現を返します。

    - ### クラスから継承されたメソッド org.opengion.hayabusa.taglib.CommonTagSupport

      `add, add, addEventColumn, addEventColumn, check, commitTableObject, debugPrint, doAfterBody, doCatch, doFinally, doStartTag, get, getApplicationInfo, getAttributes, getBodyRawString, getBodyString, getCommonTagThrowable, getContextAttribute, getContextPath, getCookie, getCSVParameter, getCSVParameter, getDataCondition, getDateFormat, getDBColumn, getDBFunctionName, getDocumentLink, getGUIInfo, getGUIInfoAttri, getHostName, getLabel, getLabelInterface, getLanguage, getLASTAttri, getLongLabel, getMsg, getMsglbl, getNVLAttri, getObject, getParameterNames, getParameterRows, getRequest, getRequestAttribute, getRequestCacheData, getRequestMethod, getRequestParameter, getRequestParameterValues, getRequestValue, getRequestValue, getRequestValues, getReservedParameter, getReservedValue, getResource, getSanitizedBodyString, getScope, getSessionAttribute, getSumRequestValue, getTagName, getTransaction, getUser, getUserEditInfo, getUserInfo, isAjaxSubmitRequest, isDebug, isNoTransitionRequest, isNull, jspPrint, makeUrl, removeContextAttribute, removeObject, removeRequestAttribute, removeSessionAttribute, set, setAjaxSubmitRequest, setCaseIf, setCaseKey, setCaseNN, setCaseNull, setCaseVal, setContextAttribute, setCookie, setDebug, setLanguage, setLbl, setNoTransitionRequest, setObject, setObject, setParameterNames, setParameterRows, setRequestAttribute, setRequestCacheData, setScope, setSessionAttribute, setUserInfo, startQueryTransaction, sys, sysBool, sysInt, useMainTrans, useQuotCheck, useTag, useXssCheck`

    - ### クラスから継承されたメソッド javax.servlet.jsp.tagext.BodyTagSupport

      `doInitBody, getBodyContent, getPreviousOut, release, setBodyContent`

    - ### クラスから継承されたメソッド javax.servlet.jsp.tagext.TagSupport

      `findAncestorWithClass, getId, getParent, getValue, getValues, removeValue, setId, setPageContext, setParent, setValue`

    - ### クラスから継承されたメソッド java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

    - ### インタフェースから継承されたメソッド javax.servlet.jsp.tagext.Tag

      `getParent, setPageContext, setParent`

- - ### フィールドの詳細

    - #### ACT_SAVE

          public static final java.lang.String ACT_SAVE

      action 引数に渡す事の出来る アクション 設定 "SAVE"
      関連項目:
        定数フィールド値

    - #### ACT_LOAD

          public static final java.lang.String ACT_LOAD

      action 引数に渡す事の出来る アクション 取得 "LOAD"
      関連項目:
        定数フィールド値

    - #### ACT_DELETE

          public static final java.lang.String ACT_DELETE

      action 引数に渡す事の出来る アクション 削除 "DELETE"
      関連項目:
        定数フィールド値

  - ### コンストラクタの詳細

    - #### CookieTag

          public CookieTag()

      デフォルトコンストラクター
      変更履歴:

        6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.

  - ### メソッドの詳細

    - #### doEndTag

          public int doEndTag()

      Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
      定義:
        `doEndTag` インタフェース内 `Tag`
      オーバーライド:
        `doEndTag` クラス内 `CommonTagSupport`
      戻り値:
        後続処理の指示(EVAL_PAGE)

    - #### release2

          protected void release2()

      タグリブオブジェクトをリリースします。 キャッシュされて再利用されるので、フィールドの初期設定を行います。
      オーバーライド:
        `release2` クラス内 `CommonTagSupport`

    - #### setAction

          public void setAction(java.lang.String act)

      【TAG】アクション(SAVE,LOAD,DELETE)をセットします。
      パラメータ:
        `act` - アクション (public static final 宣言されている文字列)
      関連項目:
        アクション定数
      説明:

             アクションは,HTMLから(get/post)指定されますので,ACT_xxx で設定される
             フィールド定数値のいづれかを、指定できます。
             無指定の場合は、なにもしません。

               アクションの説明
               action 名称機能
               SAVE   登録指定の keys のキーに vals の値をセットします。
               LOAD   取得指定の keys のクッキーを(リクエスト中に)取得します。
               DELETE 削除指定の keys のクッキーを削除します。

      変更履歴:

        6.3.4.0 (2015/08/01) Arrays.toString から String.join に置き換え。
        6.4.3.4 (2016/03/11) String配列 から、Setに置き換えます。

    - #### setKeys

          public void setKeys(java.lang.String key)

      【TAG】クッキーのキーをCSV形式で複数指定します。
      パラメータ:
        `key` - クッキーのキー
      説明:

             クッキーにセットするときのキーを指定します。CSV形式で複数指定できます。
             vals 属性には、キーに対応する値を、設定してください。
             分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。
             こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。

    - #### setAliasNames

          public void setAliasNames(java.lang.String names)

      【TAG】クッキーのキーの別名をCSV形式で複数指定します。
      パラメータ:
        `names` - クッキーの別名
      説明:

             クッキーから値を取得する(action="LOAD")場合に、読み込みキー(keys)に対応する
             別名を指定することで、別名の変数に読み込んだ値を登録することが出来ます。
             別名を指定しない場合は、keys に指定された名前が、使用されます。
             分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。
             こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。

    - #### setVals

          public void setVals(java.lang.String val)

      【TAG】keys属性に対応する値をCSV形式で複数指定します。
      パラメータ:
        `val` - keys属性に対応する値
      説明:

             キーに設定した値を、CSV形式で複数して出来ます。
             指定順序は、キーと同じにしておいて下さい。
             分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。
             こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。

    - #### setPath

          public void setPath(java.lang.String uri)

      【TAG】クライアントがこの Cookie を返さなくてはいけないパスを指定します(初期値:/+CONTEXT_NAME)。
      パラメータ:
        `uri` - パスを表すURL
      説明:

             この値を指定すると Cookie が該当するディレクトリ内、さらに、
             サブディレクトリに存在する全てのページから参照できるようになります。
             Cookie のパスには Cookie をセットした Servlet が含まれていなければなりません。
             例えば、/catalog を指定したとします。このとき、 サーバの /catalog 以下の全ての
             ディレクトリから Cookie が見えるようになります。
             初期値は、"/" + CONTEXT_NAME です。

             Cookie のパス名指定についての詳細は RFC2109 を参照してください。

    - #### setDomain

          public void setDomain(java.lang.String pattern)

      【TAG】この Cookie がどこで生成されたかを表すドメインを指定します(初期値:付与したサーバ)。
      パラメータ:
        `pattern` - 生成ドメイン名
      説明:

             ドメイン名の形式は RFC2109 で指定されています。
             ドメイン名は (.foo.com のように) ドットで始まります。 このように設定すると、
             Cookie は指定された Domain Name System (DNS) のゾーン内のサーバから見える
             ようになります(例えば、www.foo.com) からは見えるけれど、a.b.foo.com からは
             見えないというようにです)。 デフォルトでは Cookie を付与したサーバにしか送り返しません。

    - #### setMaxAge

          public void setMaxAge(java.lang.String expiry)

      【TAG】Cookie の最長存続期間を秒単位で設定します(初期値: -1 )。
      パラメータ:
        `expiry` - 最長存続期間(秒) (負の値は Cookie を保存しない、 0 なら Cookie を削除する意味となる)
      説明:

             正の値が指定されると Cookie はある秒数が過ぎた後、削除されます。
             この値は、Cookie の有効期限が切れる 最長 存続期間であることに注意してください。
             Cookie の現在までの存続期間ではありません。

             負の値は Cookie が永続的に保存されないことを意味しています。 この場合、
             Web ブラウザが終了すると Cookie も削除されます。 0 という値を指定すると
             Cookie が削除されることになります。
             初期値は、-1(永続的に保存されない)です。

    - #### setUseBase64

          public void setUseBase64(java.lang.String flag)

      【TAG】漢字等の文字を扱う場合に、BASE64で処理を行うかどうか[true/false]を設定します(初期値:false )。
      パラメータ:
        `flag` - BASE64処理可否 [true:する/false:しない]
      説明:

             クッキーへの読み書きは、ASCII に限られます。漢字等のコードを書き込む場合は、
             BASE64でエンコードして書き込む必要があります。読み込む場合も同様です。
             ただし、一般のASCIIは、BASE64 ではエンコードしないため、外部で指定する必要があります。
             BASE64 で書き込んだ場合ば、{@SYS.COOKIE.CDJ} での取得はできませんので、
             action="LOAD" で、取得してください。
             初期値は、false(使用しない)です。

    - #### toString

          public java.lang.String toString()

      このオブジェクトの文字列表現を返します。 基本的にデバッグ目的に使用します。
      オーバーライド:
        `toString` クラス内 `CommonTagSupport`
      戻り値:
        このクラスの文字列表現
      このメソッドは、nullを返しません

Webアプリケーションフレームワーク openGion
Copyright (c) 2009 The openGion Project.