JSPで動的なコンテンツを作っていますが、sessionにオブジェクトを作成し保管しています。そこでwebサーバでsessionのタイムアウトが設定されているので、sessionがタイムアウトする前にHTMLをJSPから吐き出させ、sessionがタイムアウトしたあと、JSPで吐き出したHTMLから次の画面に遷移しようとすると、「"0x00000002"の命令が"0x00000002"のメモリを参照しました。メモリが"read"になることはできませんでした」といわれて、ブラウザが強制終了してしまいます。netscape4.75では、3割くらいの確立(?)で起こります。IE5.5では一度も起きた事は、ありません。
sessionのオブジェクトを参照するところのソースは、以下のような感じです。
String str1 = (String)session.getAttribute("str2");
if(str1 == null){
静的なHTML
}else{
処理内容
動的なHTML
}
解決策を知っておられる方や、同じような現象を知っておられる方は、少しでも
お力になっていただければ、ありがたいと思います。
よろしくお願いします。
No.1
- 回答日時:
ブラウザ側からみると、HTMLは静的も動的も区別する術はありません。
(動的なHTMLって DynamicHTML という意味ではありませんよね?)
問題はむしろ吐き出されたHTMLの中身にあるのだと思います。
ですから JSP のソースよりむしろ問題のおきる
"静的なHTML" や "動的なHTML" を示した方が
適切な助言が得られるのではないでしょうか。
#Netscape は(versionにもよるのかも知れませんが)非常に
#バグの多いブラウザです。複雑な処理( 例えばマニアックに JavaScript を使うなど)
#でツボにはまることはあります
早速のご返答ありがとうございます。
動的なHTMLとは、DynamicHTMLではありません。
まぎらわしい書き方をして、すいません^^;;
sessionの中にデータがなければ、
ただ単にsessionがtimeoutですよ。と言う注意HTMLをJAVASCRIPTを使って
新しいWINDOWに作成し、元のWINDOWをある特定のHTMLにしています。
これを「HTML1」と名づけます。
sessionの中にデータがあれば、JDBC接続でDBからデータを取得して
それをHTMLに埋め込んでいます。
これのことを動的なHTMLと言う表現をしてしまいました^^;;
このデータの埋め込まれたHTMLを「HTML2」と名づけます。
String str1 = (String)session.getAttribute("str2");
if(str1 == null){
HTML1
}else{
HTML2
}
HTML1の内容
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>題名</TITLE>
<SCRIPT Language="JavaScript1.2">
<!--
function centerWin(){
var l =(screen.width-950)/2;
var t =(screen.height-700)/2;
var win = window.open
("注意.htm", "sub", "resizable=yes,width=950,height=650");
win.opener.location.replace("http://特定のHP.html");
win.moveTo(l,t);
win.focus();
}
//-->
</SCRIPT>
</HEAD>
<BODY onLoad="centerWin()">
</BODY>
</HTML>
と言う感じにしています。
少しばかり、複雑にJAVASCRIPTを使っています。
JAVASCRIPTの方は、あまり詳しくなく今回急きょ作ってみたものなので
JAVASCRIPTが悪いのか、netscape4.75が悪いのか、JSPでのJAVAの構造が悪いのか
と言う切り分けも難しく、頭を悩ませています。
sessionにデータがあるときは、何もエラーが起こったことがないので
下の部分は問題ない事がわかるのですが。。。
更なる、ご教示をいただけるとありがたいと思います。
長文になりまして、すいません。
No.2ベストアンサー
- 回答日時:
さらっと確認しただけですので、結論は言えませんが、「お礼」で記述された静的なHTML(HTML1)の内容をコピーしてHTMLファイルとして保存し、呼び出しましたが、私の環境では質問された現象は発生しませんでした。
そこで「環境のせい」では答えにならないので、気になっている点を記述します。
JavaScriptで「win.opener.location.replace(..)」とありますが、自分自身のlocationオブジェクトを参照するために、開かれたウィンドウ(win)の開いた親ウィンドウ(opener)の「location」と遠回しにせずに、「location(またはwindow.location)」だけで十分です。
加えてURLを変更するのにreplaceメソッド利用していることがもっと気になりました。この場合、locationオブジェクトのhrefプロパティを変更します。すなわち、
location.href="新URL" ;
とします。
さらにいえば、replaceメソッドでは、引数が2つ(置換前、置換後の2つ)必要な気がしました。
また、ブラウザによって挙動が違う場合、他の回答者(nagataさん)同様サーバーサイドよりクライアントサイドを疑った方が解決の近道です。
たとえば、JavaScriptで疑わしい場合、適切な位置に(見当がつかない場合1行ごとに)alertメソッドを記述して警告ダイアログを表示させて、どのタイミングでエラーが発生するのか確認するといいでしょう。
以上、参考になりましたでしょうか。
No.3
- 回答日時:
ANo.#2で私の環境では発生しない回答しましたが、ごめんなさい、発生していました。
他のウィンドウの陰でエラーメッセージを見えませんでした。さらに確認しましたが、やはり、replaceメソッドを使っているところが原因のようです。
location.href="新しいURL";
にすれば、OKです。
失礼しました。
この回答への補足
JSPから問題部分を切り離し、HTMLとしてテストしてみるも、強制終了させられて
しまいました。問題点は、javascript部分にあると言うことがわかりましたので、
JAVAの問題ではないので、javascriptの方で質問してみようと思います。
問題点の切り分けができ、javascript部分でエラーが出ると言うことが分かっただけでも、だいぶ進歩しました。
nagataさん、nisikitさんアドバイスありがとうございました。
色々と貴重な時間を割いて調べていただきありがとうございます。
私も、Alertを全行にいれて試してみたところ、
replaceメソッドのところで、エラーが発生しました。
それで、nisikitさんに教えていただいた通り、location.href="URL"に
変更してみました。
ところが、またエラーが出てしまいました。
エラー内容は、以下の通りでした。
例外:アクセス違反(0xc0000005),アドレス:0x00000002
そこで色々とそこの部分を変えてみました。
location.href="URL";
window.location.href="URL";
location.replace("URL");
window.location.replace("URL");
すべて、エラーを出してしまいました。
そこで、今は、エラー内容の書き出されたログファイルを調べています。
書き出されている内容には、以下のものがあります。
例外 (エラー) 情報
アプリケーション エラーが起きたユーザーとコンピュータについてのシステム情報
システムで実行中だったタスクの一覧
アプリケーションが読み込んだモジュールの一覧
スレッド ID に対するステート ダンプ
1.レジスタのダンプ
2.現在のプログラム カウンタ周辺のコードの逆アセンブル結果
3.スタックのバック トレース
4.スタックのダンプ
シンボル テーブル
と言う内容なのですが、いかんせん見方もわからずで、先に進まなくなって
しまいました。
今できることとして、JAVASCRIPTの記述を違うもので置きかえられないか、
エラー情報の見方を調べています。
現状として、こういう段階です。
長文になりまして、すいません。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラミングの問題です。大...
-
配列にnullを代入すると、null...
-
デバッグツールの具体例を教え...
-
eclipseで作ったプログラムを他...
-
eclipse実行ができない
-
入力候補を選択した時点でDBを...
-
ゲーム開発の入門書を探しています
-
jdbcでinsert,delete,createをe...
-
session,requestはjspで未定義...
-
サーブレットをapacheで公開す...
-
下記のリストならno002が含まれ...
-
is this even a thing?
-
JAの支部?地域の農協のカード...
-
えハミルトン路と全域木のちが...
-
CSV出力を画面から選択したデー...
-
ショートカットキーについて
-
list の空は [] ってあわらすのに
-
あんまりお料理しないのに台所...
-
質問です。 配列が100以上の場...
-
次のhtml・cssでspan内の文字を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ゲーム開発の入門書を探しています
-
配列にnullを代入すると、null...
-
マイクラでPythonのプログラミ...
-
jdbcでinsert,delete,createをe...
-
プログラミングの問題です。大...
-
eclipseで作ったプログラムを他...
-
Eclipse 動的プロジェクトで404...
-
正規表現について質問です。 カ...
-
「main メソッドを持つクラスが...
-
jdk17.06のインストーラーが起...
-
自作Androidアプリのデータ引き...
-
JaneStyleのスレッドが見れなく...
-
プログラムの単体テストで金額...
-
is this even a thing?
-
CSV出力を画面から選択したデー...
-
次のhtml・cssでspan内の文字を...
-
デバッグツールの具体例を教え...
-
StringReaderのサンプルプログ...
-
一覧表示画面で正しくDBから取...
-
JSFタグのfタグとは
おすすめ情報