電子書籍の厳選無料作品が豊富!

Web上で動作するプログラムをJSPを用いて作成しているのですが、
2重ログインのチェックができないのです。

JSPのアプリケーション変数を使用すると思うのですが、
具体的に教えてくだされば助かります。

A 回答 (5件)

この質問の問題は解決したのでしょうか?

    • good
    • 0

> session変数というのは同一ユーザーのページ(画面間)でやりとりする変数だと思っていたのですが、他のユーザーも参照することは可能なのですか?



これは認識されている通りです。
他のユーザからは見れません。

どうも、私が2重ログインというの勘違いしていたようです。。。
ここで言われているのは、別ブラウザや別端末で同一ユーザがログインするのを
止めさせたいということですね?
私が考えていたのは、一度ログインしたユーザがページを移動してログインなどの
画面にやってきたときに、再びログイン画面が出て2重ログインになってしまう
というのを避けたいのだと思っていました。。。

>> ログインしているユーザを他のユーザが確認したいような場合には、
>> HttpSessionにログイン済みであることを書き込んで、ServletContext
>> にログインしているユーザのリストを書き込むような方法
>
> また↑はsession.setAttribute("セッション変数名",ユーザー名などの値)
> で行えばよいのでしょうか?

これは、
あるユーザがログインしたときに、

session.setAttribute("セッション変数",ログイン済みを表すObject);
List userList = (List)application.getAttribute("ログインリスト");
userList.add( "ユーザ名とか" );
application.setAttribute( userList );

としてやることを意味します。
ただし、この場合ユーザがログアウトした場合に、正しくapplicationの
ユーザリストから削除してやらないと、サーバが終了されるまで、その
ユーザはログインできなくなります。
また、ブラウザなどの場合、「×ボタン」が押されたことも想定しておく
必要があります。
    • good
    • 0

> application変数はVectorクラスのように動的に増やすことは可能なのでしょうか?



できません。
application というのはJSPで規定されているServletコンテナ(Tomcatとか)が
暗黙的に定義する変数で、ServletContextクラスのオブジェクトです。
これはNo.2でwatapenさんが言われているように、WEBアプリケーションで
1つしか存在しません。

また、application に追加するだけでは、例えば「A」という人が
ログインしたときに、WEBアプリケーションに「A」という人がログイン済みで
あることは知らせることができても、どのユーザが「A」という人なのかは分かりません。

ログインの情報を持たせるのはHttpSession(session変数)が多いです。
あるいは、クッキーに書き込んでも良いでしょう。
例えば、チャットのようなシステムのように、ログインしているユーザを
他のユーザが確認したいような場合には、HttpSessionにログイン済みで
あることを書き込んで、ServletContextにログインしているユーザのリストを
書き込むような方法が考えられますね。

この回答への補足

session変数というのは同一ユーザーのページ(画面間)でやりとりする変数だと思っていたのですが、他のユーザーも参照することは可能なのですか?

つまり、JSPではsession.getAttribute("セッション変数名");
で取得するのでしょうか?

>ログインしているユーザを他のユーザが確認したいような場合には、HttpSessionにログイン済みであることを書き込んで、ServletContextにログインしているユーザのリストを書き込むような方法

また↑はsession.setAttribute("セッション変数名",ユーザー名などの値)
で行えばよいのでしょうか?

補足日時:2003/03/02 20:50
    • good
    • 0

applicationはコンテキストに対してひとつしかないんじゃなかったかなぁ



application にPropertiesでもつっこんでやるほうがいいのかも
    • good
    • 0

applicationにユーザIdをつっこんで


そこにあったらログインさせないっていうのはどうですか?

この場合ログオフされたことを捕まえるために一工夫必要ですけど...

この回答への補足

はい、そのようにしたいのですが、application変数をアクセスユーザー分用意
しなければならないのでしょうか?

application変数はVectorクラスのように動的に増やすことは可能なのでしょうか?

補足日時:2003/02/28 14:43
    • good
    • 0

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