0

私はStruts2プロジェクトを開発しています。そのプロジェクトでは、ユーザーはログインして、うまく機能することを行うことができます。そのユーザーが新しいタブを開いてプロジェクトの URL を入力すると、同じページが表示されます (ログイン ページの後)。上記のシナリオをどのように実装しますか?

4

1 に答える 1

1

1つの方法は、ここで説明したように、質問とほぼ同じです(概念は同じですが、.NETでの実装のみが異なります)。

アクションを渡すたびに一意の値を計算し、それをセッション変数 (つまりサーバー側) に入れ、それを使用して Web ページ (つまりクライアント側) の非表示フィールドにフィードします。

ページが非表示フィールドを含むフォームをポストバック (送信) すると、ページ フィールドとセッション フィールドが同じかどうかがわかります。

はいの場合: (唯一の OR) 最後に開いたページ/タブです。

「いいえ」の場合: 最後に開いたページではないページからフォームを送信しようとしています。

このようにして、Web アプリケーションのインスタンスは常に 1 つだけになり、Web アプリケーションの別のインスタンスを新しいページ/タブで開くと、前のインスタンスが無効になります。最後に開いたインスタンスのみが有効になります (複数であるため)。隠しフィールド、各ページに 1 つ、ただしセッション変数は 1 つだけ)。

Webアプリの単一のインスタンスを確保するのではなく、ユーザーが新しいタブを開くのを防ぐことが本当に必要な場合(そうですか?)、この原則から作業を開始し、最終的にここに戻ってきます(いくつかのコードを使用することをお勧めします)

于 2013-01-10T09:08:07.487 に答える