2

質問が 2 つあります。

  1. JSP に<%@page session="false" %>. 私のWebアプリケーションでは、ログイン時にサーブレットから新しいセッションを作成し、request.getSession()その後属性を使用および設定しています。ただし、私の JSP ページには含まれておらず、<%@ page session="false" %>JSTL タグを使用して、セッションとリクエストに保存されているデータを表示しています。デバッグ後、新しいセッションがランダムに作成されていることがわかります。<%@ page session="false" %>新しいセッションが作成されないように JSP ページに追加すると、影響はありますか?

  2. また、web.xml で 15 分のタイムアウトを設定しました。通常、非アクティブ状態が 15 分以上続くと、アプリケーションはタイムアウトします。ただし、1 ~ 2 分でタイムアウトすることもあります。私はこの奇妙な行動を理解していません。これは、作成されている新しいセッションに関連していますか。タイムアウトすると、別のセッション ID を持つ新しいセッションが作成されることがわかりました。私のコードでは、次のようにタイムアウトを検出しています。

    if (request.getRequestedSessionId() != null
        && !request.isRequestedSessionIdValid()) {
        // redirect to a login page with a message
    }
    
4

1 に答える 1

0
  1. <%@page session="false" %>JSP に ディレクティブを記述するとHttpSession session = request.getSession();、自動生成されたサーブレットの Java ソース コードから行が取り出されます。いいえ、そもそもセッション情報を取得しないと、ページ内のセッション情報にアクセスできません。

  2. web.xml で設定された時間よりも長い時間後にタイムアウトした場合は問題ありませんが、それよりも早くタイムアウトした場合は問題ありません。どこかへの呼び出しのように、あなたが考えていない何かがあなたのアプリにあるに違いありませんsession.invalidate()

于 2013-01-04T17:58:52.780 に答える