GO HOME
「JBuilder 2005ではじめるJSP&サーブレット プログラミング入門」追補情報
※ここは、拙著のJava入門書「JBuilder 2005ではじめるJSP&サーブレットログラミング入門」(秀和システム、518頁CD-ROM2枚付、3200円+税)に 関するコーナーです。現在、初版の見直し作業をしていますが、校正情報やよくある質問の答えなどをここでまとめて掲載します。
★バグ・校正情報★
※ここでは、ソースコードや内容に関する記述間違い、校正ミスなどについて整理しておきます。
※現在、特にありません。
現在、チェック中です。
※もし、他に間違いが見つかりましたら、どうか御連絡下さいませ。
★追補情報★
※ここでは、本書の内容を補うための追加情報などをまとめる予定です。
※サーバサイドJavaのクラスの出力先の変更
本書では、Foundation版を使う場合の注意点を随所に掲載してあります。それらでは、サーブレットなどクラスファイルを作成する場合には、ビルド 後に「手作業でWEB-INF内のclassesフォルダにコピーする」としてあります。これはもっとも単純でわかりやすい方法として、手作業のコピーが 一番であると思ったためです。
が、毎回ファイルをコピーするのは面倒だ、と思われる人もいることと思います。そのような人のために、「ビルドしたクラスファイルの出力先を変更する」 という方法もあげておきます。
1.<プロジェクト><プロジェクトプロパティ...>メニューを選ぶ。
2.現れたプロジェクトプロパティ・ウインドウで「パス」を選ぶ。
3.表示された設定項目の「出力パス」の右端にある「…」ボタンをクリックし、現れたダイアログで、クラスファイルを保存する場所(WEB-INF内の 「classes」フォルダ)を選択する。
4.「OK」ボタンでウインドウを閉じる。
これで、ビルドした際にはクラスファイルがWEB-INF/classes/内に作成されるようになり、手作業でクラスファイルをコピーする必要がなく なります。
※本書は改訂版?
本書は、2004年に上梓した「JBuilderではじめるJavaプログラミング入門」の改訂版ではありません。同じ出版社、同じ作者、同じ JBuilder、同じような書名ということで「前の本の改訂版か」と思われた人もいることと思いますので、前作との違いについて説明しておきます。
前作は、JBuilderを使った「Javaの基本的な入門」です。Javaの基本文法、基本的なライブラリ類、そしてSwingを使ったアプレット/ アプリケーションを中心に解説をしています。これにはサーバサイドの説明は一切登場しません。
が、実際問題として世の中ではJavaはサーバサイドでの需要が圧倒的となりつつあります。そこで「サーバサイドを中心としたほうがよいのではない か?」と考え、JBuilder 2005のリリースにあわせ、全く新しいものとして本書を執筆することにしました。
従って、本書はすべて新たに書き下ろしたものであり、全書の記述は一切含まれていません。JavaとJBuilderの基本的な部分については内容的に 重複する部分はありますが、それももちろんすべて新しく書き下ろしたものですので同じテキストではありません。ですから、「前の本があれば本書はいらない か?」という点でいえば「全く別の本なので、そういうことはありません」とご返事できます。
※Strutsで送信されたフォームの日本語文字化け問題について
本書ではStrutsの基本について簡単に説明してありますが、ページ数が限られた関係もあり、本当に初歩の部分しか触れていません。このため、実際に やってみて問題が起こる場合もあります。その端的な例は、「送信されたフォームの日本語テキストが化ける」という問題です。
サーブレットで説明したように、クライアントからJavaサーバに送信されたリクエストは、HttpServletRequestの setCharacterEncodingを使ってキャラクタエンコーディングを設定することで日本語を正しく得られるようになります。Strutsもそ の点は同じです。送信されたフォームの日本語をうまく取り出すには、キャラクタエンコードを設定しておく必要があります。
問題は「どのタイミングでそれを行なうか」ですが、これはアクションフォーム内の「reset」というメソッドを利用するのがもっとも簡単でしょう。こ れはアクションフォームが初期化される際に呼び出されるメソッドです。アクションフォームの中に、以下のようなメソッドを用意してみて下さい。
public void reset(ActionMapping mapping, HttpServletRequest request) {これで、送信された日本語フォームの内容も文字化けせずに扱うことができます。
try {
request.setCharacterEncoding("Shift_JIS");
} catch(UnsupportedEncodingException ex) {
ex.printStackTrace();
}
}
※Tomcat 5.xで、送信したフォームのテキストが文字化けする
Tomcat 5.xをお使いの方で、フォームからGETで送信されたテキストを取り出すと日本語が文字化けしてしまう現象に遭遇した人もいることでしょう。<@ page>でcontentTypeを設定したのに、request.setCharacterEncodingも書いたのに、おかしい・・と頭を 抱えている人。実は、これはあなたのせいではありません。
Tomcatはver. 5.xより、GETで送信されたフォームの内容についてrequest.setCharacterEncodingによるエンコードの設定を適用しないよ う仕様変更がなされています。このために、GETで送信したテキストが文字化けしてしまうのです。これを解消するには、そのための設定を行なってやる必要 があります。
- Tomcatのconfディレクトリ内にあるserver.xmlをテキストエディタなどで開きます。
- <Connector・・・>というタグを検索します。
- このタグ内に以下のような属性を追記します。
useBodyEncodingForURI="true"以上で、TomcatをリスタートすればフォームからGETしたテキストの文字化けが怒らなくなるはずです。
GO BACKGO HOME