このページで解決しない高度なJavaのシステム障害はJaTSにお任せください

Trouble 13: Servletに関する問題



<Q13-1>サーブレットを再起動せずにクラスファイルを変更する(自動ロード機能を使用する)と、JSPファイルにエラーメッセージが出力されてしまいます。


<発生環境>
OS Solaris2.5.1
JDK Solaris_JDK_1.2.1_04
Vender Sun
<A13-1>
クラスファイル変更時にサーブレットを再起動してください。
Page Top

<Q13-2>同PCで複数枚数のブラウザを開いてセッション管理を行う場合に、IE(5.0)を用いて2枚ブラウザを開き、1枚目操作→2枚目操作→1枚目でボタンによるPOST操作を行い、出力するHTMLファイルでJavaScriptのhistory.back()を使用すると、1枚目ブラウザの内容が2枚目ブラウザの内容と同じになってしまいます。


<発生環境>
OS Solaris2.5.1
JDK Solaris_JDK_1.2.1_04
Vender Sun
<A13-2>
history.back()を使わずに、POSTされた内容を表示用JSPファイルにリダイレクトすることで解決できます。
また、表示画面をフレーム分けしたり、Window.open()で別ウィンドウを開く場合は、各画面にユニークなNameをつけておく(例:セッションIDをつける)必要があります。
Page Top

<Q13-3>ブラウザ表示時に文字化けが発生してしまいます。


<発生環境>
OS Solaris2.5.1
JDK JDK1.2.1
Vender Sun
<A13-3>
文字列の再デコードを行います。
(例)String BB = "あいうえお"; ←これが文字化けする場合
String AA = new String(BB.getBytes("Shift_JIS"),"8859_1");

そして、htmlのMETAタグで文字コードを指定します。
(例)<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Shift_JIS">
Page Top

<Q13-4>JavaScriptのsetTimeout()を使用して、一定間隔でsubmit()してdoGet()やdoPost()を呼んでも、ブラウザ表示内容が更新されません(InternetExplorer 5.0にて発生) 。


<発生環境>
OS Solaris2.5.1
JDK JDK1.2.1
Vender Sun
<A13-4>
IEの「ツール」→「インターネットオプション」→「設定」→「ページを表示するごとに確認する」に設定すると、表示内容が更新されるようになります。
Page Top

<Q13-5>Cookieに入れた文字が文字化けしてしまいます。


<発生環境>
OS Any
JDK Any
Vender Any
<A13-5>
16-7と同様です。
Page Top

<Q13-6>Servletを実行し、ブラウザで表示させたところ、web.xmlのinit-paramタグで設定した日本語文字列が、文字化けを起こしてしまいます。


<発生環境>
OS Any
JDK Any
Vender Any
<A13-6>
web.xmlファイル自体のエンコーディングと、XMLのヘッダで指定するエンコーディング指定が異なっていることが考えられます。
例えばEUCエンコーディングで保存されたweb.xmlファイルに <xml version="1.0" encoding="Shift_JIS"?> といったヘッダ指定を行っていると、質問にあるような文字化けが発生します。

特に、ヘッダの指定がUTF-8であるのに対してweb.xml自体のエンコーディングがShift-JISやEUCである場合は、XMLファイルのパースに失敗してWebアプリケーション自体の起動に失敗する為注意が必要です。
XMLファイルのエンコーディング指定については16-5を参照してください。
Page Top

<Q13-7>JSPを表示させると、ブラウザの表示が途中で途切れることがあります。

Tomcatを使用しています。
JSPを表示させると、ブラウザに全てのコンテンツが表示されないまま、途中で表示が停止してしまうことがあります。

どのような原因が考えられますか?

<発生環境>
OS Windows XP SP1
JDK 1.4.2_05
Vender Sun、Tomcat4.1.x
<A13-7>
JSPコードの中で、例外が発生していないでしょうか。

アプリケーションサーバがブラウザにコンテンツを送信している最中に例外が発生すると、そこで処理が停止してしまうために、ブラウザの表示も中途半端なものになります。

通常アプリケーションサーバは、JSPコード中で例外が発生するとエラーメッセージを画面に表示しますが、ブラウザにコンテンツを送信し始めてしまった場合など、エラーメッセージを画面に表示できない場合があります。
そのような場合でもアプリケーションサーバのログにエラーが出力されている可能性があります。確認してください。

Tomcatの場合、ログのデフォルト出力ディレクトリは、
${TOMCAT_HOME}/logsです。
Page Top

<Q13-8>Strutsの正規表現による入力チェックにて、「&」が使えません。

Strutsを利用しています。
validation.xmlのmask設定を使用して正規表現による入力チェックを行なおうとしていますが、この定義において&記号を使う事ができません。

例えば「半角英数と四則演算の記号のみ許す」という表現は

^[a-zA-Z0-9\+\-\*\/]$

で表されますが、

^[a-zA-Z0-9\+\-\*\/\&]$

などとすると、validationそのものが全く効かなくなってしまいます。
そのとき、エラーも表示されません。

<発生環境>
OS Windows XP SP1
JDK 1.4.2_05
Vender Sun
<A13-8>
"&"の代わりに"&#x26;"あるいは"&amp;"を使用してください。 XMLでは"&"、"<"は特殊な意味を持ちます。
区切り文字として使用するか、コメント、処理命令、CDATAセクション内で使 用する場合のみ、そのままの形で使用できます。
通常は、文字参照(ISO/IEC 10646 文字コード指定)あるいは文字列"&"、文 字列"<"を使用して別扱いしなければなりません。
Page Top

注意:本文書の内容に誤りがあり、またこの文書によって不利益を被っても、
Acroquest Technology 株式会社は一切関知いたしません。

  • 現象別Index
  • 原因別Index

Find Bugsバグ詳細

Find Bugs Bug Descriptions日本語版

RSSで更新情報を取得する

RSSとは、ホームページの更新情報を配信する為のフォーマットです。
RSSを利用すると、登録したページの情報が更新された場合に、更新情報を自動的に受け取る事ができます。

詳細

弊社小森が執筆致しました

Javaでオブジェクト指向開発

Javaプログラミング言語習得において、新人プログラマーの最初の障害は「オブジェクト指向の壁」です。
本書は、Javaのソフトウェア開発を中心に事業を発展させてきたAcroquest社の新人教育セミナーを加筆・書籍化したもので、大卒の新人に対して、ゼロからJava言語を教えてきた実績をフィードバックしています。

メールマガジン配信中

Javaトラブルシューティングのメルマガをはじめました!是非ご購読ください

詳細