openGionopenGion
5.1.9.0

org.opengion.hayabusa.taglib
クラス SqlAndTag

java.lang.Object
  上位を拡張 javax.servlet.jsp.tagext.TagSupport
      上位を拡張 javax.servlet.jsp.tagext.BodyTagSupport
          上位を拡張 org.opengion.hayabusa.taglib.CommonTagSupport
              上位を拡張 org.opengion.hayabusa.taglib.SqlAndTag
すべての実装されたインタフェース:
java.io.Serializable, javax.servlet.jsp.tagext.BodyTag, javax.servlet.jsp.tagext.IterationTag, javax.servlet.jsp.tagext.JspTag, javax.servlet.jsp.tagext.Tag, javax.servlet.jsp.tagext.TryCatchFinally

public class SqlAndTag
extends CommonTagSupport

Where句を作成するための条件を指定します。 このタグのvalue 値に、{@XXXX} 変数が含まれている場合、そのリクエスト値が ない場合は、このタグそのものがなにも出力しません。(つまり条件から消えます。) startKeyは、value を連結する場合の頭に置かれる文字列で、where句の最初には表示されず、 それ以降について、表示されます。(つまり、where VALUE1 and VALUE2 and VALUE3 … です。) startKey の初期値は、"and" です。 multi は、{@XXXX} 変数に、値が複数含まれている場合の処理を規定します。 複数の値とは、同一nameでチェックボックス指定や、メニューでの複数指定した場合、 リクエストが配列で送られます。multi="true" とすると、'xx1','xx2','xx3', ・・・ という 形式に変換されます。 具体的には、"where PN in ( {@PN} )" という文字列に対して、 "where PN in ( 'xx1','xx2','xx3' )" を作成することができます。 multi の初期値は、"false" です。 SystemData の USE_SQL_INJECTION_CHECK が true か、quotCheck 属性が true の場合は、 SQLインジェクション対策用のクォーティションチェックを行います。リクエスト引数に クォーティション(')が含まれると、エラーになります。 同様にUSE_XSS_CHECKがtrueか、xssCheck属性がtrueの場合は、 クロスサイトススクリプティング(XSS)対策のためless/greater than signのチェックを行います。 各属性は、{@XXXX} 変数が使用できます。 これは、ServletRequest から、XXXX をキーに値を取り出し,この変数に割り当てます。 つまり、このXXXXをキーにリクエストすれば、この変数に値をセットすることができます。

関連項目:
直列化された形式
形式サンプル:
 ●形式:<og:and startKey="[and|or|…]" value="…" multi="[false|true]" />
 ●body:あり

 ●使用例
     <og:query command="NEW">
         <jsp:text>
             select PN,YOBI,NMEN,HINM from XX01
         </jsp:text>
         <og:where>
             <og:and value="PN   =    '{@PN}'"    />
             <og:and value="YOBI like '{@YOBI}%'" />
         </og:where>
         <jsp:text>
             order by PN
         </jsp:text>
     </og:query>

          ・検索条件が入力された時(PN=AAA , YOBI=BBB)
            作成されるSQL文⇒select PN,YOBI,NMEN,HINM from XX01 where PN = 'AAA' and YOBI like 'BBB%' order by PN

          ・検索条件が片方入力されなかった時(PNがNULLのとき, YOBI=BBB)
            作成されるSQL文⇒select PN,YOBI,NMEN,HINM from XX01 where YOBI like 'BBB%' order by PN

          ・検索条件が入力されなかった時(PNがNULL, YOBIがNULL) WHERE句がなくなる。
            作成されるSQL文⇒select PN,YOBI,NMEN,HINM from XX01 order by PN

        注意:WhereTagを使わない場合に、検索条件が入力されなかった場合は、下記のようになります。
            select PN,YOBI,NMEN,HINM from XX01 where PN = '' and YOBI like '%' order by PN

    --------------------------------------------------------------------------------------------------------------

     <og:query command="NEW">
         <jsp:text>
             select PN,YOBI,NMEN,HINM from XX01 where PN="11111"
         </jsp:text>
         <og:where startKey="and">
             <og:and value="YOBI in   ({@YOBI})" multi="true" />
             <og:and value="HINM like '{@HINM}%'"             />
         </og:where>
         <jsp:text>
             order by PN
         </jsp:text>
     </og:query>

          ・YOBI を複数選択し、in で検索する時(YOBI=AA,BB,CC を選択)
            作成されるSQL文⇒select PN,YOBI,NMEN,HINM from XX01 where PN = '11111'
                             and YOBI in ( 'AA','BB','CC' ) and HINM like 'BBB%' order by PN
機能階層
画面部品
バージョン
4.0
作成者
Kazuhiko Hasegawa
導入されたバージョン:
JDK5.0,

フィールドの概要
 
クラス 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
 
コンストラクタの概要
SqlAndTag()
           
 
メソッドの概要
 int doAfterBody()
          Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。
 int doEndTag()
          Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
 int doStartTag()
          Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。
protected  java.lang.String getRequestValue(java.lang.String key)
          リクエスト情報の文字列を取得します。
protected  java.lang.String getTagName()
          タグの名称を、返します。
protected  void release2()
          タグリブオブジェクトをリリースします。
 void setInstrVals(java.lang.String val)
          【TAG】スペースで区切られた複数の値すべてを含む条件を作成します。
 void setMatchKey(java.lang.String mkey)
          【TAG】このタグ自体を利用するかどうかの条件キーを指定します。
 void setMatchVal(java.lang.String mval)
          【TAG】このタグ自体を利用するかどうかの条件値を指定します。
 void setMulti(java.lang.String flag)
          【TAG】複数の引数に対して処理するかどうか(true/false)を設定します(初期値:false)。
 void setQuotCheck(java.lang.String flag)
          【TAG】リクエスト情報の クォーティション(') 存在チェックを実施するかどうか(true/false)を設定します(初期値:USE_SQL_INJECTION_CHECK)。
 void setStartKey(java.lang.String skey)
          【TAG】SQL条件句の最初の演算子を指定します(初期値:and)。
 void setValue(java.lang.String val)
          【TAG】valueを セットします。
 void setXssCheck(java.lang.String flag)
          【TAG】リクエスト情報の HTMLTag開始/終了文字(><) 存在チェックを実施するかどうか(true/false)を設定します(初期値:USE_XSS_CHECK)。
 java.lang.String toString()
          このオブジェクトの文字列表現を返します。
 
クラス org.opengion.hayabusa.taglib.CommonTagSupport から継承されたメソッド
add, add, addEventColumn, addEventColumn, check, check, commitTableObject, debugPrint, doCatch, doFinally, get, getApplicationInfo, getAttributes, getBodyRawString, getBodyString, getContextAttribute, getContextPath, getCookie, getCSVParameter, getDataCondition, getDateFormat, getDBColumn, getDBFunctionName, getDocumentLink, getGUIInfo, getGUIInfoAttri, getLabel, getLabelInterface, getLanguage, getLongLabel, getMsglbl, getObject, getParameterNames, getParameterRows, getRequest, getRequestAttribute, getRequestCacheData, getRequestParameter, getRequestParameterValues, getRequestValue, getRequestValues, getResource, getSanitizedBodyString, getScope, getSessionAttribute, getUser, getUserInfo, isAjaxSubmitRequest, isDebug, isNoTransitionRequest, isNull, jspPrint, removeContextAttribute, removeObject, removeRequestAttribute, removeSessionAttribute, set, setAjaxSubmitRequest, setContextAttribute, setCookie, setDebug, setLanguage, setLbl, setMsglbl, setNoTransitionRequest, setObject, setParameterRows, setRequestAttribute, setRequestCacheData, setScope, setSessionAttribute, setUserInfo, startQueryTransaction, sys, sysBool, sysInt, useMainTrans, useQuotCheck, 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
 

コンストラクタの詳細

SqlAndTag

public SqlAndTag()
メソッドの詳細

doStartTag

public int doStartTag()
Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。

定義:
インタフェース javax.servlet.jsp.tagext.Tag 内の doStartTag
オーバーライド:
クラス CommonTagSupport 内の doStartTag
戻り値:
int
変更履歴:
4.0.0 (2006/12/05) BODY 部の値を value に使用する機能追加
4.0.0 (2005/08/31) useQuotCheck() によるSQLインジェクション対策
5.0.0.2 (2009/09/15) XSS対策

doAfterBody

public int doAfterBody()
Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。

定義:
インタフェース javax.servlet.jsp.tagext.IterationTag 内の doAfterBody
オーバーライド:
クラス CommonTagSupport 内の doAfterBody
戻り値:
int
変更履歴:
4.0.0 (2006/12/05) BODY 部の値を value に使用する機能追加

doEndTag

public int doEndTag()
Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。

定義:
インタフェース javax.servlet.jsp.tagext.Tag 内の doEndTag
オーバーライド:
クラス CommonTagSupport 内の doEndTag
戻り値:
int
変更履歴:
3.1.1.2 (2003/04/04) Tomcat4.1 対応。release2() を doEndTag()で呼ぶ。
3.8.8.1 (2007/01/06) makeInstrVals を加味する。
5.0.0.2 (2009/09/15) multi時のallNull対応
5.1.9.0 (2010/08/01) matchKey 、matchVal 対応

release2

protected void release2()
タグリブオブジェクトをリリースします。 キャッシュされて再利用されるので、フィールドの初期設定を行います。

オーバーライド:
クラス CommonTagSupport 内の release2
変更履歴:
2.0.0.4 (2002/09/27) カスタムタグの release() メソッドを、追加
3.1.1.2 (2003/04/04) Tomcat4.1 対応。release2() を doEndTag()で呼ぶ。
3.8.8.1 (2007/01/06) instrVals 属性追加
4.0.0 (2005/08/31) quotCheck 属性の追加
5.0.0.2 (2009/09/15) XSS対応
5.0.0.2 (2009/09/15) multi時のallNull対応
5.1.9.0 (2010/08/01) matchKey、matchVal 属性の追加

getRequestValue

protected java.lang.String getRequestValue(java.lang.String key)
リクエスト情報の文字列を取得します。 これは、通常のgetRequestParameter 処理の中で呼ばれる getRequestValue を オーバーライトしています。

オーバーライド:
クラス CommonTagSupport 内の getRequestValue
パラメータ:
key - キー
戻り値:
リクエスト情報の文字列
変更履歴:
5.0.0.2 (2009/09/15) valuesの全NULL/空文字をisNull扱いにする

setStartKey

public void setStartKey(java.lang.String skey)
【TAG】SQL条件句の最初の演算子を指定します(初期値:and)。

パラメータ:
skey - String
説明:
 value を連結する場合の頭に置かれる文字列で、where句の最初には表示されず、
 それ以降について、表示されます。
 (つまり、where VALUE1 and VALUE2 and VALUE3 … です。)
 startKey の初期値は、"and" です。

setValue

public void setValue(java.lang.String val)
【TAG】valueを セットします。

パラメータ:
val - value
説明:
 value 値に、{@XXXX} 変数が含まれている場合、そのリクエスト値がない場合は、
 このタグそのものがなにも出力しません。(つまり条件から消えます。)
 BODY 部に記述することが可能です。その場合は、value 属性になにも設定できません。

setInstrVals

public void setInstrVals(java.lang.String val)
【TAG】スペースで区切られた複数の値すべてを含む条件を作成します。

パラメータ:
val - value
関連項目:
ColumnMarkerTag.setInstrVals( String )
説明:
 通常、value="CLM LIKE 'ABC%'" という文字列を指定しますが、
 value="CLM" instrVals="ABC DEF GHI" と指定すると、
 value="CLM LIKE '%ABC%' AND CLM LIKE '%DEF%'  AND CLM LIKE '%GHI%' "
 という文字列を作成します。
 これは、instrVals に指定した引数に対して、スペース区切りで分割し、
 前方の value に複数のAND検索を同時に実現できるように指定します
 個別にLIKE検索項目を AND 連結する為、現れる場所に依存しません。
 逆に、現れる順序を指定する場合は、ABC%DEF の様に指定可能です。
 ただし、columnMarker の instrVals で、複数文字のマーカーを行う場合、
 ABC%DEF という文字列は、オリジナルでないので、マークアップされません。

setMulti

public void setMulti(java.lang.String flag)
【TAG】複数の引数に対して処理するかどうか(true/false)を設定します(初期値:false)。

パラメータ:
flag - マルチ変換する ("true")/しない (それ以外)
説明:
 {@XXXX} 変数に、値が複数含まれている場合の処理を規定します。
 multi="true" に設定すると、複数の引数は、'xx1','xx2','xx3', ・・・ という
 形式に変換します。
 where 条件で言うと、 "where PN in ( {@PN} )" という文字列に対して、
 "where PN in ( 'xx1','xx2','xx3' )" を作成することになります。
 初期値は、 false (マルチ変換しない) です。

setQuotCheck

public void setQuotCheck(java.lang.String flag)
【TAG】リクエスト情報の クォーティション(') 存在チェックを実施するかどうか(true/false)を設定します(初期値:USE_SQL_INJECTION_CHECK)。

パラメータ:
flag - クォーティションチェックする ("true")/しない (それ以外)
説明:
 SQLインジェクション対策の一つとして、暫定的ではありますが、SQLのパラメータに
 渡す文字列にクォーティション(') を許さない設定にすれば、ある程度は防止できます。
 数字タイプの引数には、 or 5=5 などのクォーティションを使用しないコードを埋めても、
 数字チェックで検出可能です。文字タイプの場合は、必ず (')をはずして、
 ' or 'A' like 'A のような形式になる為、(')チェックだけでも有効です。
 (') が含まれていたエラーにする(true)/かノーチェックか(false)を指定します。
 初期値は、SystemData#USE_SQL_INJECTION_CHECK です。
変更履歴:
4.0.0 (2005/08/31) 新規追加

setXssCheck

public void setXssCheck(java.lang.String flag)
【TAG】リクエスト情報の HTMLTag開始/終了文字(><) 存在チェックを実施するかどうか(true/false)を設定します(初期値:USE_XSS_CHECK)。

パラメータ:
flag - boolean XSSチェックする (true)/しない (false)
説明:
 クロスサイトスクリプティング(XSS)対策の一環としてless/greater than signについてのチェックを行います。
 (><) が含まれていたエラーにする(true)/かノーチェックか(false)を指定します。
 初期値は、SystemData#USE_XMLLTAG_CHECK です。
変更履歴:
5.0.0.2 (2009/09/15) 新規追加

setMatchKey

public void setMatchKey(java.lang.String mkey)
【TAG】このタグ自体を利用するかどうかの条件キーを指定します。

パラメータ:
mkey - String
説明:
 matchKey.matches( matchVal ) の値が、true の場合は、このタグは使用されます。
 false の場合は、このタグは使用されません。
 value 値に、{@XXXX} 変数が含まれている場合と同じ効果を得られます。
 何も指定しない場合、または、引数が null の場合は、true と同じで使用されます。
変更履歴:
5.1.9.0 (2010/08/01) 新規追加

setMatchVal

public void setMatchVal(java.lang.String mval)
【TAG】このタグ自体を利用するかどうかの条件値を指定します。

パラメータ:
mval - String
説明:
 matchKey.matches( matchVal ) の値が、true の場合は、このタグは使用されます。
 false の場合は、このタグは使用されません。
 value 値に、{@XXXX} 変数が含まれている場合と同じ効果を得られます。
 何も指定しない場合、または、引数が null の場合は、true と同じで使用されます。
変更履歴:
5.1.9.0 (2010/08/01) 新規追加

getTagName

protected java.lang.String getTagName()
タグの名称を、返します。 自分自身のクラス名より、自動的に取り出せないため、このメソッドをオーバーライドします。

オーバーライド:
クラス CommonTagSupport 内の getTagName
戻り値:
タグの名称
関連項目:
CommonTagSupport.getDocumentLink()
変更履歴:
4.0.0 (2005/01/31) 新規追加

toString

public java.lang.String toString()
このオブジェクトの文字列表現を返します。 基本的にデバッグ目的に使用します。

オーバーライド:
クラス CommonTagSupport 内の toString
戻り値:
このクラスの文字列表現

openGion 5.1.9.0

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