2015年3月14日土曜日
2015年3月12日木曜日
[Android] R.string.*から文字列(String)を取得する
XML内では@string/somekeyのように書くことでres/values/strings.xmlに定義した文字列(下例参照)を得られます。
しかし、Javaコードの中では単純にR.string.somekeyはint値であるため、そのままでは指定した文字列を得られません。getResources().getString(int)を使います。
しかし、Javaコードの中では単純にR.string.somekeyはint値であるため、そのままでは指定した文字列を得られません。getResources().getString(int)を使います。
ラベル:
Android,
getResources,
Java,
String,
strings.xml,
xml
2015年1月15日木曜日
[Java] [Amazon Product Advertising API] ASINを指定して本のタイトルと著者を得るサンプル
Amazon Product Advertising API を使って、ASINを与えることで、当該商品(ITEM)の商品名を得るサンプル(Sample Code & Libraries : Amazon Web ServicesのProduct Advertising API Signed Requests Sample Code - Java REST/QUERY)をベースASINを指定した書籍のタイトルと著者を取得するメソッドを作ってみました。
作ってみた(元々のサンプルに手をいれた)サンプル => AWSTest
ビルドにはcommons-codecライブラリ(外部jar)が必要ですのでリンク先から取得してプロジェクトに追加してください。
また、実行にはAmazon Access Key ID、Amazon Secret Access Key、Amazon Affiliate IDの指定が必要です。この3つの値をItemLookupSampleクラスのAWS_ACCESS_KEY_ID、AWS_SECRET_KEY、AWS_AFFILIATE_IDのstatic変数にそれぞれセットします。
mainメソッドはItemLookupSampleにあります。
参考:
・Amazon Product Advertising API を利用して世界各国の商品価格差リサーチツールを作ってみる | imagination-i
・ISBN、UPC、JAN、EAN、ASINとは?
ビルドにはcommons-codecライブラリ(外部jar)が必要ですのでリンク先から取得してプロジェクトに追加してください。
また、実行にはAmazon Access Key ID、Amazon Secret Access Key、Amazon Affiliate IDの指定が必要です。この3つの値をItemLookupSampleクラスのAWS_ACCESS_KEY_ID、AWS_SECRET_KEY、AWS_AFFILIATE_IDのstatic変数にそれぞれセットします。
mainメソッドはItemLookupSampleにあります。
参考:
・Amazon Product Advertising API を利用して世界各国の商品価格差リサーチツールを作ってみる | imagination-i
・ISBN、UPC、JAN、EAN、ASINとは?
2014年6月30日月曜日
ServletのFilterで文字コードを統一する
Servletにおいては、リクエストボディの文字コードの指定とレスポンス(出力)の文字コードの指定を
のように指定しますが、各Servletで個別に設定するのは保守の観点からよくないです。
ですので、システム全体で一カ所で指定したいということになります。
これを行うにはServletのFilterインタフェースで実装することができます。
FilterインタフェースはServletの実行の前後に呼び出され、Servletに渡す種々の値に加工や絞り込み、値による認証等を行ったり、Servletの実行結果を加工してクライアントに送るといった事等を行うことができます(まさにフィルターです)。
initとdestroyの両メソッドは初期化処理と終了処理としてコールされます。マルチスレッド環境(つまりはServlet環境)では、initが最初のスレッドがこのフィルタを使うシステムにアクセスしたタイミングで、destroyがこのフィルタが全てのスレッドからの参照を失って廃棄されるタイミングでそれぞれ一度だけコールされるため、マルチスレッドに対応した仕組みになっています。ここではinitにおいてweb.xmlにキー"encoding"で設定された値をFilterConfigオブジェクトを使って読み出し、privateフィールドのencodingにセットしています。destroyではこの例では何も処理を行っていません。
doFilterメソッドはリクエストの度にコールされるこのフィルターの本体です。
ここで、initメソッドで得たencodingの値を使って文字コードを設定する事で個別のServletに文字コードを指定せず、一元化することができます。
responseのContent-Type="text/html"のcharsetにも指定した文字コードを渡しています。これによって出力の文字コード変換が行われ、同時にサーバ(Servlet)側からクライアント(主にブラウザ?)に使用している文字コードを明示的に伝える事ができます。そんなサーバの指示を無視して勝手に動くクライアントもいますが(^^;;
ちなみに、web.xmlには以下のように記述します(例では文字コードをShift_JISとしています)。
参考)
・http://www.ne.jp/asahi/hishidama/home/tech/java/j2ee/filter.html
・サーブレットで文字化けに対応する方法
・Servlet/JSPで漢字を扱う
のように指定しますが、各Servletで個別に設定するのは保守の観点からよくないです。
ですので、システム全体で一カ所で指定したいということになります。
これを行うにはServletのFilterインタフェースで実装することができます。
FilterインタフェースはServletの実行の前後に呼び出され、Servletに渡す種々の値に加工や絞り込み、値による認証等を行ったり、Servletの実行結果を加工してクライアントに送るといった事等を行うことができます(まさにフィルターです)。
initとdestroyの両メソッドは初期化処理と終了処理としてコールされます。マルチスレッド環境(つまりはServlet環境)では、initが最初のスレッドがこのフィルタを使うシステムにアクセスしたタイミングで、destroyがこのフィルタが全てのスレッドからの参照を失って廃棄されるタイミングでそれぞれ一度だけコールされるため、マルチスレッドに対応した仕組みになっています。ここではinitにおいてweb.xmlにキー"encoding"で設定された値をFilterConfigオブジェクトを使って読み出し、privateフィールドのencodingにセットしています。destroyではこの例では何も処理を行っていません。
doFilterメソッドはリクエストの度にコールされるこのフィルターの本体です。
ここで、initメソッドで得たencodingの値を使って文字コードを設定する事で個別のServletに文字コードを指定せず、一元化することができます。
responseのContent-Type="text/html"のcharsetにも指定した文字コードを渡しています。これによって出力の文字コード変換が行われ、同時にサーバ(Servlet)側からクライアント(主にブラウザ?)に使用している文字コードを明示的に伝える事ができます。そんなサーバの指示を無視して勝手に動くクライアントもいますが(^^;;
ちなみに、web.xmlには以下のように記述します(例では文字コードをShift_JISとしています)。
参考)
・http://www.ne.jp/asahi/hishidama/home/tech/java/j2ee/filter.html
・サーブレットで文字化けに対応する方法
・Servlet/JSPで漢字を扱う
登録:
投稿 (Atom)