-
Servlet のセッション管理方法は?
J2EE Tutorial の Servlet のところに書いてある。
要約すると、cookie が使えれば使うし、使えなければ URL に埋め込む。
ただし、URL を直接書いちゃダメ(あたりまえ)。
encodeURL() が返す値を使うこと。
埋め込むべきかどうか自動判定してくれる。
-
フリーな EJB コンテナは?
JBoss がある。
ポート 8080 はデフォルトでは空なので、びっくりしないこと。
最初は J2EE 附属のコンテナを使って Tutorial をやってみれば。
-
Mac OS X で J2EE を動かすには?
動くが、注意する点がいくつかある。
- deploytool は Metal Look & Feel で動かす。
deploytool 自体は shell script なので、ちょっといじって、-Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeel が java に渡るようにする。
- デフォルトの locale が shift-jis なので、jterminal などで動かす場合は、j2ee -verbose |& nkf -u -e などとする。
- 大量にメモリを使うので、j2ee, deploytool, runclient など同時に動かすにはそれなりのメモリを実装すること。
-
(番外編)パスネットは便利
パスネットで、横浜から渋谷まで東横線、乗り換えて新玉川線で池尻大橋に行ったら、いったん改札を出たのに、乗り継ぎと見倣された。
賢いね。
同行した友人は、横浜 - 渋谷、渋谷 - 池尻大橋、と切符を買い直したので、高かった。
-
HTML の </FORM> で改行されないコツ
通常、</FORM> の後は改行が入るブラウザが多い。
<TABLE> の各行に <FORM> を入れると改行されて腹が立つ場合は、
<FORM><TR>...</TR></FORM>
とすると改行されない場合がある。
-
Tomcat: JSP で Bean を見つけられない。なぜ?
Bean を package にする。
Tomcat が生成する Java のソースを見ると、package 宣言が入っている。
そのため、package でない Bean には Tomcat が付ける package 名が付いてしまい、見つけられない。
JSP の先頭の page 指令に import 属性を入れる手もあるが、Bean を package にした方が後々まごつかない。
-
Java の String を XML Parser に渡したい。
Parser はエンコード済みのバイト列を期待しているので、Java の String は直接は渡せない。
いったん、XML 宣言にある Encoding で byte[] にし、byte[] から ByteArrayInputStream を作って Parser に渡せば良い。
-
Tomcat の web.xml での失敗
Servlet mapping に "/" を入れるとえらいことに...
-
Display-less マシンで Java での描画ができない。なぜ?
Unix 系システムでは、描画のための情報を X Window System から得ている Java 処理系が多い。
Java VM が X の client になるわけ。
使わなくても X を動かしておけば良い。
Display Hardware がない場合は vnc が使える。
ただしセキュリティには注意を!
-
Java で JPEG イメージを作るには?
Sun の J2SDK や JRE に付属する com.sun.image.codec.jpeg パッケージが使える。
ただし、これは全ての J2SE プラットフォームで実装されているわけではない。
また、Batik の JPEGTranscoder も使える。
-
HTML の Anchor タグの中の & について。
Anchor タグの中の & を & にするのは忘れがち。
たとえば次のように。
詳しくはここを見よ。
- 誤: <A HREF="submit.html?a=123&b=456">
- 正: <A HREF="submit.html?a=123&b=456">
-
MHonArc のリソースに ISO-2022-JP 日本語を使う姑息な方法
MHonArc ではリソースファイル内に $名前$ という文字列を見つけると、変数と見倣して値に展開しようとする。
ISO-2022-JP の日本語には $ が含まれるため、リソースファイルに ISO-2022-JP で日本語を書くのはタブーだった。
変数の展開を抑制できれば、この問題を解決できるが、ISO-2022-JP の shift in/out を追跡せねばならず、そう簡単ではない。
そこで姑息な方法を紹介する。
<DefineVar> という、ユーザ変数を定義するためのエレメントがある。
これを利用して、日本語の値を持つ変数を作る。
<DefineVar>
MyVariableName
なに
</DefineVar>
これで $MyVariableName$ が「なに」と展開されるようになる。
しかし、ISO-2022-JP の「なに」には 3 個の $ が含まれるため、このままではまた変数展開されてしまう。
そこで、MHonArc のソースを一箇所変更する。
--- mhrcvars.pl.orig Thu Aug 22 00:13:23 2002
+++ mhrcvars.pl Thu Aug 22 00:13:30 2002
@@ -611,7 +611,7 @@
## User defined variable check ##
## --------------------------- ##
if (defined($CustomRcVars{$var})) {
- $expand = 1;
+ $expand = 0;
$tmp = $CustomRcVars{$var};
last REPLACESW;
}
ご覧のように、$expand = 1 を $expand = 0 に変えるだけである。
これは、ユーザ定義変数に限っては、これ以上変数展開をしないようにするという意味である。
これで「なに」の中の $ が展開されることはなくなったので、次のように安心して $MyVariableName$ を使える。
<IdxTitle>
Handle $MyVariableName$ safely
</IdxTitle>
日本語を使うたびに <DefineVar> するのが面倒だが、MHonArc のソースの変更が最小限(1 バイト、いや 1 ビット(笑))で済むのだから、文句は言えないね。
-
Unix Clone で ISO9660 イメージファイルをマウントする方法
- Linux など loop device があれば、それを使う。
mount ファイル名 /mnt/cdrom -t iso9660 -o loop
- BSD 系では vnode disk を使う。
vnconfig vn0c ファイル名
mount -t cd9660 -o ro /dev/vn0c /mnt/cdrom
-
Jakarta Struts と日本語
世の中が全て Unicode になるまでは、Web Application プログラマーは日本語エンコード方法にまつわる悩みから逃れることはできないだろう。
Struts も例外ではない。
- 入力フォームが化ける
src/share/org/apache/struts/util/RequestUtils.java の populate() で、request の locale の getLanguage() が Locale.JAPANESE.getLanguage() と等しければ、JISAutoDetect を使って変換してやる。100% 確実ではないが、しようがない。
- 表示で日本語が???になる
<%@ page で contentType="text/html; charset=euc-jp"> などを忘れていませんか。
- html:submit のラベルを国際化するには
<html:submit><bean:message --></html:submit>
-
Java: JTree でダブルクリックを扱うには?
JTree の Javadoc に説明がある。
-
Java: ウィンドウを前に出すには?
java.awt.Window.toFront()
-
Java: JTextField などを伸び縮みするようにするには?
setPreferredSize(null)
-
Java: 文字コード(Encoding)を指定して出力するには?
OutputStreamWriter を使う。
-
Tomcat: Servlet の path を得るには?
getServletContext().getRealPath("...")
-
Java: this に注意!
無名クラス内の this は無名クラスのインスタンスをさす。