SAStrutsを使っていて、formをsubmitしたら何故か404エラーという現象で困ったのでメモって置きます。
RoutingFilterがHttpServletRequestのパラメータ名とActionのMethod名との一致をチェックしていますが、
formがmultipart/form-dataだとHttpServletRequestのパラメータが空なので
<s:submit/>で指定したMethod名が見つからずNot foundとなるようです。
「index」というメソッドを実装しておくと、これがデフォルトで選ばれてforwardされるので、
multipart/form-dataのフォームを受け取るActionには「index」という名前のメソッドを作って置こう。
-
SAStrutsとmultipart/form-data
2012年05月19日 16時38分comment (0) -
Windows7のタスクバーにファイルをドロップしてアプリを起動
2012年04月20日 19時41分前回の方法も間違いというほどではなく、
あれはあれで使い道も有りそうですが少々手順が複雑です。
そこで、もっと簡単な方法があったのでメモっておきます。
Shiftキー押しながらドロップ
ものすごく遠回りした気がします。
さらに、Shiftキーを押さずにドロップを可能にするソフトもありました。
ただ、常駐するタイプなのであまり好みではありません。
レジストリを変更すればShiftキーの有り/無しをトグルに出来そうな気がして調べたのですが、該当のキーは見つかりませんでした。
無いことは無いと思うのですが・・・ -
Windows7のタスクバーにドロップ可能なアイコンを置く
2012年04月18日 20時31分Windows7の話です。
プログラムのアイコンをタスクバー表示すると、開きたいファイルをドロップ出来ません。
いや出来るのですが、「いつも表示」というわけのわからん物として登録されます。
そうなると、ファイルをドロップする系のプログラム(テキストエディタとか圧縮プログラムとか)は
デスクトップに置くことになるわけですが、これもウィンドウが上に被さったりして使いにくいです。
そこで、タスクバーにアイコンを表示しつつファイルをドロップ出来るようにする方法を調べました。
「Windows 8がそろそろ出ようかという時期に7の話かよ!」と思わなくもないですが、
8がでても7はそれなりに使うと思いますのでメモっておこうと思います。
1. タスクバーの固定を解除しておきます
2. 適当にフォルダを作ります(仮にShortcutとします)
3. 作ったフォルダにタスクバーに置きたいショートカットを入れます
4. タスクバー上で右クリック → ツールバー → 新規ツールバー → 作ったフォルダを選択
選択するとこうなります
5. フォルダ左のブツブツを右クリック → アイコンを大きくして、ボタン名の表示とタイトルの表示をOFF
6. タスクバーに表示されるので、好みの位置に移動など -
D言語用 DirectX モジュール version 1.0.4
2012年04月05日 20時36分 -
HttpURLConnectionのタイムアウト
2012年03月31日 12時09分JavaでHTTP接続が必要になったので、HttpURLConnectionを使おうと思ったのですが、
connect timeoutとread timeoutの意味がよくわからなかったので調べました。
調べた環境はjdk1.7.0_02 (Windows 64bit)です。connect timeout
connect timeoutは接続にかかった時間で、setConnectTimeoutで設定します。
引数はミリ秒で指定し、0を指定すると無限になります。
デフォルト値はJavadocに書いてないのですが、0になっています。
connect timeoutが発生するのはconnectメソッド内です。
接続にかかった時間がtimeout値を超えるとSocketTimeoutExceptionが発生します。read timeout
read timeoutはデータ取得にかかった時間で、setReadTimeoutで設定します。
(リクエストを投げてレスポンスが帰ってくるまでの時間)
引数はミリ秒で指定し、0を指定すると無限になります。
デフォルト値はJavadocに書いてないのですが、0になっています。
read timeoutが発生するのは、レスポンスデータを参照するメソッドです。- getContent
- getHeaderFields
- getInputStream
- getResponseCode
- getResponseMessage
- getContentEncoding
- getContentLength
- getContentLengthLong
- getContentType
- getDate
- getExpiration
- getHeaderField
- getHeaderFieldDate
- getHeaderFieldInt
- getHeaderFieldKey
- getLastModified
ただ、上記の内、SocketTimeoutExceptionが発生するのは次のメソッドだけです。- getContent
- getHeaderFields
- getInputStream
- getResponseCode
- getResponseMessage
他のメソッドはnullとか0とかエラー値を返すだけです。
SocketTimeoutExceptionが発生しないメソッドだけを使うと、
timeoutが起こったことがわからないので注意が必要です。
どのメソッドが例外を投げるかはJavadocに書いてないので実際の動作からしか読み取れません。
(getInputStreamだけは書いてあったりしてますますよくわかりません。)
実際に使用する環境でも念のため調べておいた方が無難でしょう。