StrutsのAction、ActionForm周りについて

  • Request#populateメソッドは、リクエストデータをアクションフォームに設定する。
  • DynaActionFormのgetterはget("hoge")となる。
    • "hoge"はDynaActionFormの属性名
  • terasolunaでActionFormを実装するときは原則として「ValidatorActionFormEx」を継承する。
  • クラスを作らないでstruts-configの設定だけで作れるのが「DynaValidatorActionFormEx」という。
  • 自作Action内のexecute(return:ActionForward)でrequest#getParameter(request#getXXXX)した値をrequest#setAttributeして詰め替えておくことで、フォーワード先(たいていはJSP)にユーザからの入力値を伝播できる。
  • struts-configでprefixをつけたときにアクションフォーム生成エラーが出る件
    • http://struts.wasureppoi.com/env/01_action.html
    • 指定した値と、リクエストパラメータ名が前方一致する場合に、アクションフォームにセットされる。 name属性が指定してある場合に有効。
    • TERASOLUNA機能説明書(P116)
      • Struts 設定ファイル(struts-config.xml)でprefix を設定している場合は、その設定値が除去された後のパラメータ名に対してチェックを行う。
    • web.xmlのSecurityValidateFilterでprohibitedParameterNamesにプレフィックス付きのリストを付加し忘れていたのが原因。

Antについて

tar xvzf apache-ant-1.9.7-bin.tar.gz
sudo mv apache-ant-1.9.7 /usr/local/
echo "export ANT_HOME=/usr/local/apache-ant-1.9.7" >> ~/.bashrc
echo "export PATH=$ANT_HOME/bin:$PATH" >> ~/.bashrc
source ~/.bashrc

  • ant1.8以前では、jdk1.8をつかったjavacコンパイルが動かない(以下のようなエラーがでる)

    BUILD FAILED
    C:\pleiades\workspace\hogehoge\ant\build.xml:66: Class not found: javac1.8

    stackoverflowにもコメントがある http://stackoverflow.com/questions/20702626/javac1-8-class-not-found

  • バージョン確認方法(CentoOSの場合)

    ant -version

  • windowsインストーラを使わずにjdk1.5を入れる方法
    • 正確には、いったんインストールして、jdkのフォルダをバックアップしておいて、アプリケーションをアンインストールしたのちに退避しておいたjdkフォルダを元に戻して使う。
    • 1.8との共存

      JAVA_HOME5: 1.5のホームパスを指定
      JAVA_HOME8: 1.8のホームパスを指定
      JAVA_HOME: そのときに使うjdkのホームパスを貼る(JAVA_HOME5もしくはJAVA_HOME8)
      PATH: JAVA_HOME\bin

Mavenについて

Oracleについて

  • ユーザの作成方法

    sqlplus sys/oracle@teradb as sysdba
    CREATE USER hogeuser IDENTIFIED BY "hogepass";
    GRANT DBA TO hogeuser;

  • クライアント環境の文字コード設定(sqlplusでテーブル操作する前に行う)

    Windowsの場合>
    set NLS_LANG=japanese_japan.JA16SJISTILDE
    Linuxの場合>
    export NLS_LANG=Japanese_Japan.AL32UTF8

  • 作成したユーザでsqlplusに接続する

    <ローカルの場合>
    sqlplus hogeuser/hogepass@hogedb
    <リモートの場合>
    sqlplus hogeuser/hogepass@127.0.0.1:1521/hogedb
    127.0.0.1のところはリモートDBのIPアドレスで置き換える)

  • データベースにsqlを流す

    <ローカルの場合>
    sqlplus hogeuser/hogepass@hogedb @ hoge.sql
    <リモートの場合>
    sqlplus hogeuser/hogepass@127.0.0.1:1521/hogedb @hoge.sql

  • テーブル一覧の確認(sqlplusに接続して確認)
    • SELECT TABLE_NAME FROM USER_TABLES;
  • Oracle12cの場合:
    • jdbc接続するときは、サーバ側のtnsnames.oraの記述内容は影響しない ⇒ そもそもtnsnames.oraはクライアントから
  • Oracle12cの場合:
    • cdbとpdbがあって、cdbの中にpdbがある。teradbはpdbにあり、fsuserもpdbに登録されている。Jdbc接続のときにユーザ認証エラーになる(ora-01017)のは、cdbに接続しにいこうとしているのではないか
  • データベースの文字コード確認コマンド(sql)は以下。

    SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';

  • oracleのバージョン確認は、sqlplusにログインして、以下のsqlを発行する

    SQL> select * from v$version;