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
}

解決策を知っておられる方や、同じような現象を知っておられる方は、少しでも
お力になっていただければ、ありがたいと思います。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

さらっと確認しただけですので、結論は言えませんが、「お礼」で記述された静的な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メソッドを記述して警告ダイアログを表示させて、どのタイミングでエラーが発生するのか確認するといいでしょう。
以上、参考になりましたでしょうか。
    • good
    • 0

ANo.#2で私の環境では発生しない回答しましたが、ごめんなさい、発生していました。

他のウィンドウの陰でエラーメッセージを見えませんでした。
さらに確認しましたが、やはり、replaceメソッドを使っているところが原因のようです。
 location.href="新しいURL";
にすれば、OKです。
失礼しました。

この回答への補足

JSPから問題部分を切り離し、HTMLとしてテストしてみるも、強制終了させられて
しまいました。問題点は、javascript部分にあると言うことがわかりましたので、
JAVAの問題ではないので、javascriptの方で質問してみようと思います。
問題点の切り分けができ、javascript部分でエラーが出ると言うことが分かっただけでも、だいぶ進歩しました。
nagataさん、nisikitさんアドバイスありがとうございました。

補足日時:2001/04/25 10:57
    • good
    • 0
この回答へのお礼

色々と貴重な時間を割いて調べていただきありがとうございます。
私も、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の記述を違うもので置きかえられないか、
エラー情報の見方を調べています。
現状として、こういう段階です。
長文になりまして、すいません。。

お礼日時:2001/04/24 14:01

ブラウザ側からみると、HTMLは静的も動的も区別する術はありません。


(動的なHTMLって DynamicHTML という意味ではありませんよね?)
問題はむしろ吐き出されたHTMLの中身にあるのだと思います。
ですから JSP のソースよりむしろ問題のおきる
"静的なHTML" や "動的なHTML" を示した方が
適切な助言が得られるのではないでしょうか。

#Netscape は(versionにもよるのかも知れませんが)非常に
#バグの多いブラウザです。複雑な処理( 例えばマニアックに JavaScript を使うなど)
#でツボにはまることはあります
    • good
    • 0
この回答へのお礼

早速のご返答ありがとうございます。
動的な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にデータがあるときは、何もエラーが起こったことがないので
下の部分は問題ない事がわかるのですが。。。
更なる、ご教示をいただけるとありがたいと思います。
長文になりまして、すいません。

お礼日時:2001/04/23 19:53

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qその文字ごとに変換する事はできないのでしょうか?

例えば~やサイ(動物の)と入力する時に単にやさいと
入力して変換するとどうしても野菜等の漢字にしか変換されません
まあこれは象やサイのように前後になんらかの文字をはさめば0で変換はできるのですが
長文の場合ひらがなかカタカナにしか変換されないものがたまにあります
これらを一文字あるいは二文字等に限定して変換させる事はできないのでしょうか?
つまり通常10文字中5文字単位でしか変換できないが1・2文字で変換する事は
できないか?という事です
できればマウスは使わずにキーボードだけで
分かりにくくてすいません
回答お願いします

Aベストアンサー

たぶん、これのことではないかと思いますが、

文字の変換中に、
「Shift」キーを押しながら「←」「→」キーで
変換範囲を変更できると思います。

「やさい」の場合は変換範囲を上記の方法で「や」だけに変更して、
その後「→」キーで「さい」の部分に移動(ただの移動なので「Shift」キーははなす)
して変換すればできると思います。

お試しください。

Q"try{}catch(){}"文で"close()"はどのように書けばよいのでしょうか。

こんにちは、片岡と言います。

プログラム1は、Java言語で学ぶデザインパターン入門(結城浩さん著)の
433ページを参考にして書きました。

私は、プログラム1のclose()の書き方よりもプログラム2のようなclose()の書き方が、
良いと思っています。
なぜならば、プログラム1では、out.writeObject(memento)行の例外によって、
close()が実行されないからです。

私のこの考え方は正しいのでしょうか。
もっと良いclose()の書き方はあるのでしょうか。
ご存知の方はいらっしゃいませんか。

●プログラム1
public class Main {
public static void saveMemento(Memento memento) {
try {
ObjectOutput out = new ObjectOutputStream(new FileOutputStream("game.dat"));
out.writeObject(memento);
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
… //以下略
}

public class Memento implements Serializable {
… //以下略
}


●プログラム2
public class Main {
public static void saveMemento(Memento memento) {
try {
ObjectOutput out = new ObjectOutputStream(new FileOutputStream("game.dat"));
out.writeObject(memento);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
… //以下略
}

public class Memento implements Serializable {
… //以下略
}


なお、私の環境は以下の通りです。
OS: Microsoft Windows XP Professional SP2
開発環境:Eclipse 3.2.2
java: java version "1.4.2_13"

こんにちは、片岡と言います。

プログラム1は、Java言語で学ぶデザインパターン入門(結城浩さん著)の
433ページを参考にして書きました。

私は、プログラム1のclose()の書き方よりもプログラム2のようなclose()の書き方が、
良いと思っています。
なぜならば、プログラム1では、out.writeObject(memento)行の例外によって、
close()が実行されないからです。

私のこの考え方は正しいのでしょうか。
もっと良いclose()の書き方はあるのでしょうか。
ご存知の方はいらっしゃいませんか。

●プロ...続きを読む

Aベストアンサー

>私のこの考え方は正しいのでしょうか。
正しいです。質問者さんが書かれているやり方が一般的です。
念のため書いておきますが、outをtryの外で宣言しないとコンパイルが通りません。

まぁ、あくまでデザインパターンを学ぶための本ですから、細かなコーディングについて気にする必要はないでしょう(疑問を持つことは良いことですが)。

QVistaで、誤変換や変換できないものがある

ここ最近、Windows Vista標準ので、
誤変換や文やフクスウの変換ができなくなってます。
普通の変換すらできない言葉もでてきてます。
今も2行目の「ふくすう」が変換できません。

発覚した変換できないもの(カナ変換しかできないもの)
こめんとらん=コメントラン
いか=イカ
いがい=イガイ
ふくすう=フクスウ
かいとう=カイトウ
しつもん=シツモン
おおい=オオイ
あやまる=アヤマル
ごへんかん=ゴヘンカン
おねがい=オネガイ
etc・・・・

あまりにもおおすぎて手におえません。
たまに「MicroSoft IME 誤変換」がどうとか警告がでてきます。
どうしたらなおるでしょうか?
アドバイスおねがいします。

Aベストアンサー

IME2007をお使いなら下記のURLを参照して修正プログラムをインストールされたらと思います。

IME 2007 変換精度、学習機能を改善した修正プログラムのご案内
http://www.microsoft.com/japan/office/2007/ime/fixmodule.mspx

QString str = (String)url

classファイルでのアプレットで、自分のパスを編集しようと思っています。
自分のパスをgetCodeBase()で得て、文字列として認識させたいのだけど
それができていません。

String str;
str = getCodeBase().toString;

コンパイルエラー
シンボル: 変数 toString
位置 : java.net.URL の クラス
strBuf = getCodeBase().toString;

getCodeBase()はStringでなく、URL型を返すみたいです。
これを文字列のように編集したいからSrting型にしたいんだけど
どうすればいいんですか?

Aベストアンサー

もとのソースに()を付けるだけでOK。

String str=getCodeBase().toString();

便乗ですけど、先程の投稿の。。。

Event.ACTIONEVENT

は書き間違いです。

Event.ACTION_EVENT

が正しいので訂正させてもらいます。

QVSODivxToDVD でDVDに変換できないAVIファイル

AVIファイルをDVDに変換するには、VSODivxToDVD を利用しています。ほとんどのAVIファイルは変換できますが、まれに変換できないものがあります。そのファイルは他のソフト、Avi2Dvd、AVI2ISO、DVD Flickで試してみてもできません。AVI2JPGで再出力しようとしてもできません。パソコンでは何の問題もなく再生できるので、何とかDVDに変換することができないものでしょうか?
それが可能なソフトや方法がありましたら教えて下さい。

Aベストアンサー

#2です。

・・・???
真空波動研の結果(ファイル名以降)はそれだけでしたか?

コンテナファイルの形式(まあAVIでしょうが)や音声コーデックがないですし、DivXのFourCCや、フレームレート、ビットレートが抜けてます。
48KHzというのは、音声のサンプリングレートだと思いますが、ビットレートが0(音声がない?)です。VBRというのは音声が可変ビットレートを採用しているということですが・・・

もし、真空波動研での確認内容がそれだけなら、変換に失敗したか、ファイルが壊れていて再生、変換できない、ということになると思いますよ。
再生は出来ましたか?

QString str = "a\\b\\c";

String str = "a\\b\\c";

という文字列があった時に、a,b,cで分割したいのですが、どのようにsplitさせれば出来るでしょうか?

Aベストアンサー

str.split("\\\\")
円マークを4つよ。

Qにち ←なぜ漢字に変換できないのでしょうか?

【ひ】は【日】に変換できるのに、
【にち】はなぜ【日】に変換できないのでしょうか???

Aベストアンサー

もしかして「に」と「ち」で分かれて変換されてしまうということではないでしょうか?
その場合「Shift+右矢印キー」で「にち」全体にフォーカス(?)をかけて再度変換すれば「にち」で変換できると思います。

上記でない場合は、あまりに基礎的なことを言ってしまいすみません。
私もだいぶ前(PC初心者の頃)ですが、「しゅつ」が「主津(しゅ+つ)」になってしまい、「出」が出ないと大騒ぎした経験があるものですから…

Qjspでsessionを生成するには

java初心者です。

jspでセッションを生成し、その生成したセッションを
クッキーに入れて、サーブレットに渡すには
どのように書いたらよろしいのでしょうか。

Aベストアンサー

http://www.javaroad.jp/servletjsp/sj_jsp8.htm
セッションはこんな感じで↑

クッキーはセッションとは使い方が違いますが。。

参考URL:http://www.javaroad.jp/servletjsp/sj_jsp8.htm

Q漢字変換できないまま・・・

以前よりパソコンで漢字変換できなくなったトラブルを質問していましたが、多くの方に親切な回答を頂く事ができました。しかし結局どの方法を試しても元に戻る事はありませんでした。昨日リカバリーしましたがそれでも無理でした。なのでキーボードを買い換えようと考えています。しかしキーボードの故障かどうかがわからないので買い換える前にそれを確認する方法ってあるのでしょうか?(キーボードを変えても改善されないっていうパターンが嫌なので)
ちなみに症状としては、
・半角/全角キーで言語バーのカナ変換できない。
・スペースキーと変換キーが全く効かないので変換とスペースがあけられない。
・無変換キーでひらがなをカタカナには変換できる。
・ソフトキーボードでは変換できる。

宜しくお願い致します。

Aベストアンサー

kinkakutouさん 今日は!
済みません。
追加と訂正です。
>(キーボードを変えても改善されないっていうパターンが嫌なので)
質問者さんの内容を取り違えて居ました。ご免なさい!
正:
キーボードの故障ではなさそうです。
ポイントは、言語バーの設定です。
1:言語バーの「ツール」→「プロパティ」を選択し、画面の「標準に戻す」ボタンをクリックします。
2:前回回答のページで、基本設定します。
3:設定が終了したら、もう1度「プロパティ」で右上の「設定」アイコンをクリックし、画面の「キー設定」TABのキー一覧を確認します。
>・半角/全角キーで言語バーのカナ変換できない。
キーの半角/全角が、IMEオン/オフ(入力)以下項目は全て「-」。
半角/全角キーで言語バーは、立ち上げ時は「A」→「あ」の切替えになります。
>・スペースキーと変換キーが全く効かないので変換とスペースがあけ
>られない。
キーのスペースキーは、空白・全変換・変換+次・変換+次・文節変換
・全変換を確認します。
キーのシフト+スペースキーは、入力以外は半角空白を確認します。
これでIMEは修復可能です。
恐らくポイントの1で元に戻ると思います。

kinkakutouさん 今日は!
済みません。
追加と訂正です。
>(キーボードを変えても改善されないっていうパターンが嫌なので)
質問者さんの内容を取り違えて居ました。ご免なさい!
正:
キーボードの故障ではなさそうです。
ポイントは、言語バーの設定です。
1:言語バーの「ツール」→「プロパティ」を選択し、画面の「標準に戻す」ボタンをクリックします。
2:前回回答のページで、基本設定します。
3:設定が終了したら、もう1度「プロパティ」で右上の「設定」アイコンをクリックし、画面の...続きを読む

QJSPでsession変数が勝手に書き換えられる

お世話になっています。
JSPを使ってプログラミングをしていますが、画面遷移の途中でsession変数の内容が空になってしまう現象に悩まされています。

画面遷移は、
■入力画面
<jsp:useBean id="apply" scope="session" class="apply.Apply2009Bean" />
↓post
■確認画面(ここで、前の画面で入力された値をsessionに保存)
<jsp:useBean id="apply" scope="session" class="apply.Apply2009Bean" />
↓post
■申し込み完了画面(入力された値をDBに保存)
<jsp:useBean id="apply" scope="session" class="apply.Apply2009Bean" />

ここで、申し込み完了画面になるとapplyという変数の中が全部nullになっています。

念のため暗黙のsession変数からgetId()でセッションIDを画面に出してみると<%=session.getId()%>

申し込み画面:585C94623773F49C0708E050C95E20D2
確認画面:5C35DCF1B68850A762D531CAF2F9700E
完了画面:7D1035FD035C7767C8CEB1D938325D60

と、毎回セッションIDが変わっています。

 ちなみに、テスト環境ではこの問題は起こらず、本番環境のみで発生します。
 同様の問題を経験したことがあるかたはいらっしゃいませんでしょうか。

構成は
■テスト環境:
os:WindowsXP SP2
server:Tomcat 4.1
Java: 1.4.2

■本番環境:
os:FreeBSD 6.1-RELEASE-p6
server:Tomcat 4.1
Java: 1.4.2

 よろしくお願いいたします。

お世話になっています。
JSPを使ってプログラミングをしていますが、画面遷移の途中でsession変数の内容が空になってしまう現象に悩まされています。

画面遷移は、
■入力画面
<jsp:useBean id="apply" scope="session" class="apply.Apply2009Bean" />
↓post
■確認画面(ここで、前の画面で入力された値をsessionに保存)
<jsp:useBean id="apply" scope="session" class="apply.Apply2009Bean" />
↓post
■申し込み完了画面(入力された値をDBに保存)
<jsp:useBean id="apply" scope="session" class...続きを読む

Aベストアンサー

>私の今までの考えですと、ブラウザからのリクエストがHTTPServletRequestに格納されて、そこに入っているセッションIDがHTTPServetResponseオブジェクト(のどこか)に(自動的に)格納されてブラウザに返り、次のリクエストでまた同じセッションIDが送られてきて……というように、ブラウザを閉じない限りセッションIDは同一のものが使われるのだと思っていました。
>そうではない、ということですね?

 そうですね。
 時には手動でセッションIDをレスポンス内に明示する必要があります。
 そうしないと、その後のアクセスでブラウザはセッションIDを返さないので、Tomcatは新しいセッションIDを再発行する事になります。

> たとえば、そもそもTomcatがCookieを使ったセッション管理をしない設定ならブラウザは関係がなくなります。

>これはつまり、可能性として
>・テスト環境のTomcatは、クッキーを使ったセッション管理を自動的にしてくれるので、今まで動作していた。
>・本番環境のTomcatではそういう設定になっていないため、明示的にセッション管理をしないと、その都度セッションが切れてしまう

>ということが原因という可能性がある、というように考えていいのでしょうか。

 そうです。
 ちなみに、Contextに、cookies="false"という属性がセットされているならクッキーによるセッション管理は無効化されています。

 あと面白いページを見つけました。
 こんな問題もあるんですね。参考URLに乗せておきます。
 考慮すべき点が色々あって難しいです。

 

参考URL:http://blog.utils.jp/2008/06/tomcat.html

>私の今までの考えですと、ブラウザからのリクエストがHTTPServletRequestに格納されて、そこに入っているセッションIDがHTTPServetResponseオブジェクト(のどこか)に(自動的に)格納されてブラウザに返り、次のリクエストでまた同じセッションIDが送られてきて……というように、ブラウザを閉じない限りセッションIDは同一のものが使われるのだと思っていました。
>そうではない、ということですね?

 そうですね。
 時には手動でセッションIDをレスポンス内に明示する必要があります。
 そうしないと...続きを読む


人気Q&Aランキング

おすすめ情報