GWTでURLのパラメータの取得ってどうやるのかと
調べていたら意外に簡単に出来ることがわかった。
Window.Locationというクラスを利用すれば出来る。
Location.getParameter(”val”)
と書けば、
http://hoge/?val=xxxx
というようなURLのvalの値を取得することが出来る。
2011年7月26日火曜日
2011年7月25日月曜日
GWTのログ機能
GWTにはログ機能がある。
それをいじってみた。
本家のドキュメントはこちら。
http://code.google.com/webtoolkit/doc/latest/DevGuideLogging.html
java.util.loggingクラスをエミュレートしたログクラスが用意されており、
クライアント側、サーバ側の両方にログを出力することが出来るようです。
手順は簡単で、下記の2ポイントだけ。
.gwt.xmlファイルに下記の記述の追加。
ログハンドラの種類は、
SystemLogHandler
DevelopmentModeLogHandler
ConsoleLogHandler
FirebugLogHandler
PopupLogHandler
SimpleRemoteLogHandler
などがあり、必要に応じてENABLE,DISABLEを設定する。
ソースには、通常の java.util.loggingクラスを利用した方法と同様に記述
SimpleRemoteLogHandler をENABLEにするとサーバ側にログが記録されるようになる。
これをこのまま実行するとサーブレットが定義されていないというようなエラーが
出てしまうので、web.xmlにログ記録用のサーブレットを定義しておく必要がある。
それをいじってみた。
本家のドキュメントはこちら。
http://code.google.com/webtoolkit/doc/latest/DevGuideLogging.html
java.util.loggingクラスをエミュレートしたログクラスが用意されており、
クライアント側、サーバ側の両方にログを出力することが出来るようです。
手順は簡単で、下記の2ポイントだけ。
.gwt.xmlファイルに下記の記述の追加。
<inherits name="com.google.gwt.logging.Logging"/> <set-property name="gwt.logging.logLevel" value="SEVERE"/> <set-property name="gwt.logging.enabled" value="FALSE"/> <set-property name="gwt.logging.consoleHandler" value="DISABLED"/>
ログハンドラの種類は、
SystemLogHandler
DevelopmentModeLogHandler
ConsoleLogHandler
FirebugLogHandler
PopupLogHandler
SimpleRemoteLogHandler
などがあり、必要に応じてENABLE,DISABLEを設定する。
ソースには、通常の java.util.loggingクラスを利用した方法と同様に記述
Logger logger = Logger.getLogger("NameOfYourLogger");
logger.log(Level.SEVERE, "ログ");
SimpleRemoteLogHandler をENABLEにするとサーバ側にログが記録されるようになる。
これをこのまま実行するとサーブレットが定義されていないというようなエラーが
出てしまうので、web.xmlにログ記録用のサーブレットを定義しておく必要がある。
< servlet > < servlet-class>com.google.gwt.logging.server.RemoteLoggingServiceImpl </servlet-class > < servlet-name >logger < /servlet-name > < /servlet > < servlet-mapping > < servlet-name>logger </servlet-name > < url-pattern>/(ここは、環境によって変更する)/remote_logging </url-pattern > < /servlet-mapping >
2011年7月16日土曜日
Javaで件数に上限のあるキャッシュの作成
Javaで件数に上限のあるキャッシュの作成ってどうやるのが普通なんだろうと
いろいろ調べてみる。
LinkedHashMapを利用するとすごく簡単にFIFOタイプLRUタイプのキャッシュが
簡単に出来ることがわかった。
FIFO…最初に入ったやつ(古いものから追い出す)タイプ
LRU…一番最後に利用されたものから追い出すタイプ
こんな簡単に実装できるとはびっくりした。
下記がサンプルです。
いろいろ調べてみる。
LinkedHashMapを利用するとすごく簡単にFIFOタイプLRUタイプのキャッシュが
簡単に出来ることがわかった。
FIFO…最初に入ったやつ(古いものから追い出す)タイプ
LRU…一番最後に利用されたものから追い出すタイプ
こんな簡単に実装できるとはびっくりした。
下記がサンプルです。
import java.util.LinkedHashMap;
import java.util.Map.Entry;
public class CacheSample {
private static class FIFOCache<K,V> extends LinkedHashMap<K,V>{
/**
*
*/
private static final long serialVersionUID = 1L;
private int maxEntries;
public FIFOCache(int maxEntries) {
super(maxEntries,(float) 0.75,false);
this.maxEntries=maxEntries;
}
protected boolean removeEldestEntry(Entry<K,V> eldest) {
return size()>maxEntries;
}
}
private static class LRUCache<K,V> extends LinkedHashMap<K,V>{
/**
*
*/
private static final long serialVersionUID = 1L;
private int maxEntries;
public LRUCache(int maxEntries) {
super(maxEntries,(float) 0.75,true);
this.maxEntries=maxEntries;
}
protected boolean removeEldestEntry(Entry<K,V> eldest) {
return size()>maxEntries;
}
}
public static void main(String[] args) {
System.out.println("FIFOの場合");
//上限50個のFIFOキャッシュを作成
FIFOCache<Integer,String> fifocache = new FIFOCache<Integer,String>(50);
testCache(fifocache);
System.out.println("LRUの場合");
//上限50個のLRUキャッシュを作成
LRUCache<Integer,String> lrucache = new LRUCache<Integer,String>(50);
testCache(lrucache);
}
private static void testCache(LinkedHashMap<Integer,String> cache) {
for (int i=0;i<50;i++){
cache.put(new Integer(i), "HOGE"+i);
}
System.out.println(cache.get(new Integer(0)));
for (int i=50;i<70;i++){
cache.put(new Integer(i), "HOGE"+i);
}
if (cache.containsKey(new Integer(0))){
System.out.println("0が残っている");
}else{
System.out.println("0が消えている");
}
}
}
2011年7月2日土曜日
GWTで外部リンクを張る処理の記述方法
GWTでリンクを張る場合に、HyperLinkとかいうクラスを使うのかな
と思ってみてみたけど、どうやらこれではないようでした。
http://google-web-toolkit.googlecode.com/svn/javadoc/1.5/com/google/gwt/user/client/ui/Hyperlink.html
一応、下記のページを参考にしながら方法を書いてみる。
http://code.google.com/webtoolkit/doc/latest/DevGuideSecuritySafeHtml.html
まず、最初に、SafeHtmlTemplates を継承した下記のようなクラスを作成する。
これにより、htmlを返す
次に、下記のような記述でkオブジェクトの生成をする。
そんで、これを使って、下記のような感じでSafeHtmlを生成する。
こんな感じで書くと、リンクを張るようなものができました。
と思ってみてみたけど、どうやらこれではないようでした。
http://google-web-toolkit.googlecode.com/svn/javadoc/1.5/com/google/gwt/user/client/ui/Hyperlink.html
一応、下記のページを参考にしながら方法を書いてみる。
http://code.google.com/webtoolkit/doc/latest/DevGuideSecuritySafeHtml.html
まず、最初に、SafeHtmlTemplates を継承した下記のようなクラスを作成する。
これにより、htmlを返す
public interface LinkHtmlTemplates extends SafeHtmlTemplates {
@Template("<a href=\"{0}\" target=\"_blank\">{1}</a>")
SafeHtml makeLinkHtml(String url, String linkText);
}
次に、下記のような記述でkオブジェクトの生成をする。
private static final LinkHtmlTemplates LINK_TEMPLATES =
GWT.create(LinkHtmlTemplates.class);
そんで、これを使って、下記のような感じでSafeHtmlを生成する。
SafeHtml ihtml = LINK_TEMPLATES.messageWithLink(getBTSUrl(numPart), numPart); sb.append(ihtml);
こんな感じで書くと、リンクを張るようなものができました。
登録:
コメント (Atom)
-
AutoItとは、何かというと、人の入力なしにどんどんアプリケーションを 進めていくための仕組みといったところでしょうか。 といっても、かなり高度で、ほとんど開発言語と言ってもいいように思う。 今回は、AutoItで画面操作を記録する方法について書いて見ます。 AutoItのダウ...
-
AutoItでコンポーネントをクリックする命令を送る方法 仕様リンク: http://www.autoitscript.com/autoit3/docs/functions/ControlClick.htm AutitV3 WindowInfoのControlのAdv...
-
Javaでデータ圧縮するのとそれを解凍するサンプルを書いて見た。 最初は、単純に Deflaterのみを利用するパターン import java.io.ByteArrayOutputStream; import java.util.zip.DataFormatExcepti...