2012-02-23 33 views
0

私のアプリケーションから様々なイベントに対して動的にポップアップ表示されるフォームがあるシナリオがあります。私はフォームを記入し、それを提出してセッションの満了を引き起こします。フォーム提出時にセッションの有効期限が切れた

リクエストヘッダーの値をフォームに出力すると、jsession idが見つからないか、新しいjseesion idが作成されることがあります。

これは頻繁に起こることではありません。作業中のケースでは、私はjsession IDを紛失していないか、または異なるJseesion IDを取得していません。

提案がありますか?

以下はコードサンプルです。

<HTML> 
<HEAD> 
    </HEAD> 
    <% 
    Enumeration<String> headerNames = request.getHeaderNames(); 
while (headerNames.hasMoreElements()) 
{ 
    String headerName = headerNames.nextElement(); 
    String headerValue = request.getHeader(headerName); 
    System.out.println("Header Name " +headerName); 
    System.out.println("headerValue " +headerValue); 
} 
%> 
<body> 
Comments </br> 
<form name = 'savefrm' action ='save.jsp'> 
<textarea name = 'comments' id = 'text' cols=38 rows=8>"+comments.trim()+"</textarea> 
<input type="submit" value="ok"/> 
</form> 
</body> 
</html> 
+0

これは別のサーブレットまたはアプリケーション内の1つですか? – Virtual

+0

アプリケーションのサーブレットに組み込まれていません。 – tpsharish

+0

これがサーバーまたはクライアントの問題である場合は、最初に除外してください。それを判断するには、HTTPトラフィックを追跡する必要があります。 Chrome/IE9/FirebugではF12キーを押して「ネットワーク」のトラフィックを確認できます。要求/応答ヘッダーを調べます。必要に応じてさまざまなブラウザを試して、動作が同じかどうかを確認してください。クライアントが既にリクエストされた正しいJSESSIONIDクッキーを送信しているにもかかわらず、新しいJSESSIONIDクッキーを返すサーバーが実際にあれば、それはサーバーの問題です。そうでなければクライアントの問題です。 – BalusC

答えて

1

あなたはこのようにweb.configファイルを通して、あなたのセッションタイムアウトを設定する必要があります。

<configuration> 
    <system.web> 
    <sessionState timeout="100000"></sessionState> 
    </system.web> 
</configuration> 

は1000ms = web.xmlファイルで1秒

+0

私たちはsession.setMaxInactiveInterval(-1)としてプログラム的に設定しました。 – tpsharish

+0

セッションがアイドル状態のときは、これは起こりません。 – tpsharish

+0

申し訳ありません.Net環境用です。サーブレットについては、私の2番目の答えを試してください。 – Hatem

1

<web-app> 
    <session-config> 
     <session-timeout>20</session-timeout> 
    </session-config> 
</web-app> 

20を= 20分

またはあなたは、コード内でそれを行うことができます。

HttpSession session = request.getSession(); 
session.setMaxInactiveInterval(20*60); 

20 * 60 = 20分

+0

これは、セッションがアイドルであり、session.setMaxInactiveInterval(-1)としてプログラムで設定したときには起こりません。 – tpsharish

+0

なぜ-1に設定されていますか?この手順でセッションが終了します。あなたがしていることは、タイムアウトを-1に変更しようとしていることです。あなたのセッションがすぐに殺されるからです。 – Hatem

+0

いいえ-1は無限大を意味します。セッションタイムアウトは無限に設定されます。 – tpsharish

関連する問題