WebApp,Servlet,JSPの最近のブログ記事

StrutsによるWebアプリケーションスーパーサンプル

Eclipse 3によるJavaアプリケーション開発

Windows版 Tomcat5.x ではバイナリをインストールすると自動的にサービス登録が行われる。(サービス名 Tomcat5)
そのため同じ5.xバージョンを別ディレクトリにインストールしたとしてもサービス名が同一のため後からインストールした方の設定だけが Tomcat5 というサービスに上書きされてしまう。これを避け、複数の別バージョン Tomcat5.x をインストールするには以下の手順で行う。

すっかりVodafoneの端末のせいにしてましたが、コーディング間違ってました(^^;修正したらちゃんと表示されるようになりました。

結構シビアですよね。Docomo, Au, Dポケではちゃんと表示されてましたからね。もしかしてAu携帯での書き込みでの文字化けも一緒に直るのでは?と思ったが、これはまた別問題でした。

★誤
<meta http-equiv="Content-Type" content="text/html; charset=Shift-JIS">

★正
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">

ちなみに "Shift-JIS" でググると 12,900 件, "Shift_JIS" でググると 39,300 件がヒットします。たぶん、間違ってるページは相当あると思われます。

キャッシュ制御のためのコードのいたずらでおかしくなってるんじゃないかと思って昨日言ったコードを外してみたんだが、やはりVodafone携帯では「この端末では表示できません」になる。

んー( ̄~ ̄)ξ …。

どーにもならんなー。ボーダフォン。今月からヤミ値上げしとるし(って関係ないが…)

JSPもすごく単純なんだがな…。
あと何だろう? <meta> タグの問題かな?
手許にボーダフォン端末ないんで、テストできんしなー。
巷にあったVodafoneエミュレーターではちゃんと表示できる。

Vodafoneで動的ページ(JSP)が見れないのは「ファイル拡張子」が jsp だからじゃないかと思って web.xml, mod_jk.conf を変更設定して *.html で動的ページが生成されるように変更し友人にアクセスしてもらった。

結果:「そういう問題ではない」ということが判明!

んー( ̄~ ̄)。

単純な静的HTMLならちゃんと見れたんだがなー。

つーことで次なる試行錯誤はキャッシュ無効化のために挿入した以下のコードを外して試してみる。

<% /* キャッシュ無効化 */
Calendar objCal1=Calendar.getInstance();
Calendar objCal2=Calendar.getInstance();
objCal2.set(1970,0,1,0,0,0);
response.setDateHeader("Last-Modified",objCal1.getTime().getTime());
response.setDateHeader("Expires",objCal2.getTime().getTime());
response.setHeader("progma","no-cache");
response.setHeader("Cache-Control","no-cache");
%>

結果はまた明日…。

本業で最近はJSP,Java,Struts,flash,Oracle なんかを組み合わせてWEBアプリを作ったりする。それで折角自宅に Tomcat/Apache/Postgresql が立ち上がってたりなんかするんで、趣味の剣道の会のスケジュールシステムを2日徹夜で(徹夜はウソ!だけど2、3日夜間でゴソゴソ作るってのは、まあそんなもんでしょ)作ってみた。Struts 使ったりしてもいいけど、面倒くさいので JSP だけでベタ書きの SQLなんかを埋め込んだりした。ほとんどの場合、パソコンでの使用は想定してなくて会のみんなの携帯からアクセスすることを想定している。スケジュールの閲覧(大会参加、イベント、集合時間、場所、誰がとか…)。それと会の役員からはデータの新規登録、修正、削除ができるようにログイン認証機能も作った。

で、普段本業で作るやつはまあアクセス端末がパソコン(しかもイントラ向けだったりするとIE想定とかになってたりする)だけなんで汎用性はあんまり考えなくても大丈夫なんだけど、相手が携帯端末だと問題点噴出する。そもそもJSPなんかでシステム作るのに無理があるのかな? Javaスクリプトは使わないように、ポップアップも使わないようにしたんだがそれでも問題がたくさんでる。

で、問題点
(1)Auからアクセスしてフォームから入力すると文字化けする。もちろんページの文字コードはShift_JIS。getRequest() で文字コードをJava内部コードのUnicodeに変換するときは "MS932" を使っている。Docomo、DDIPocket(AirH”)、それからパソコン(IE、Opera)では文字化けしないことを確認。これについては未だ解決していない。

(2)なんかわかんないけど、Vodafoneの端末からアクセスするとJSPが処理されないというか、端末側で *.jsp ファイルは処理してないんじゃないかな。「表示できません」ってエラー表示になる。おそらくだがファイル名拡張子が問題なんじゃないかと踏んで、まずJSPファイルの拡張子を *.jsp ではなく *.html に変更するという大技(!)に出た。本来 /nantoka/*.jsp というアクセスがあった場合に Tomcat に処理依頼するところを /nantoka/*.html で 処理するように設定変更(mod_jk.conf)。 その場合、Tomcat では *.html はただの html ファイルとして処理してしまうので *.html ファイルも JSP ファイルであるというように設定変更した(web.xml)。 さてさて、これで Vodafone からアクセスした場合どうなりますか…。現在Vodafoneの携帯持ち主にチェック依頼中である。

(3)Docomoの場合、JSPでセッションを有効にしているのに、セッション情報が保持されない。仕方ないので <input type="hidden"> で値を引き継ぐようにした。

これらは携帯端末の機種依存(というかメーカー依存?)の部分なわけだ。iModeやらEzwebやらVodafoneLiveやらなんか、HTMLとは非互換な部分がたくさんあってブラウザも解釈がエー加減だなというのが感想。これだけ非互換な部分が多いと共通的なアプリ(携帯サイト)作るのは大変そうだね。ほんの趣味で2,3日やっただけでもこんなに出てくるんだから…。

もうひとつ。業務ではOracle使っていることが多いのだが、今回はPostgresqlを使っている。DBの文字コードをUnicodeにすると概ね問題は発生しなかったが、UnicodeだとMS-AccessからODBCアクセスしたり、Linux機自体で SQL した時に文字が読めなくて苦労する。それで一旦はUnocodeにしてたものをEUC_JPに変換した。大体は問題ないんだが、例の全角ハイフン【-】をフォーム入力すると文字化けしてしまう。あと、丸数字やらギリシア数字もダメだった。趣味でやってるやつだから別にご愛嬌でいいんだけど…。本業でPostgresql使う日が来ないとも限らない…。

jakarta Commons FileUpload

| コメント(0)

http://jakarta.apache.org/commons/fileupload/

ちょっと今更って感じだが…
ファイルアップロードを処理するライブラリ。
こんな感じ。

// Create a new file upload handler
FileUpload upload = new FileUpload();

// Set upload parameters
upload.setSizeMax(MAX_UPLOAD_SIZE);
upload.setSizeThreshold(MAX_MEMORY_SIZE);
upload.setRepositoryPath(TEMP_DIR);

// Parse the request
List items = upload.parseRequest(request);

// Process the uploaded fields
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();

if (item.isFormField()) {
processTextParameter(request, item);
} else {
processFileParameter(request, item);
}
}

日本語が含まれたアップロードファイルをユニコード文字列に変更する場合
byte[] data = null;
data = item.get();
String datastr = new String(data, "MS932");

ウェブページ

  • about
Powered by Movable Type 5.2.10

このアーカイブについて

このページには、過去に書かれたブログ記事のうちWebApp,Servlet,JSPカテゴリに属しているものが含まれています。

前のカテゴリはVCD/SVCD/DVDです。

次のカテゴリはZaurusです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。