失礼いたします。
セッション情報の受け渡しを勉強しています。
送り手側で
HttpSession ses = request.getSession();
String login = (String)ses.getAttribute("login");
String name = (String)ses.getAttribute("name");
if( !("ttttt".equals( login )) )
{ //(以下処理)
受けて側で
String name = request.getParameter("user");
String pass = request.getParameter("pass");
HttpSession ses = request.getSession();
if ( name.equals("admin") && pass.equals("hoge")) {
ses.setAttribute("login","ttttt");
ses.setAttribute("name",name);
out.println("<h3>ログインしました。</h3>");
}
とし、セッション管理を行っています。
しかし、今ひとつこの「セッション情報」と普通のパラメーターの受け渡しの違いが分かりません。どちらも文字として次ページへ送っていますので。セッションがずっと保持されるとはソースのどういう所から分かるのでしょうか?漠然とした質問ですが、よろしくお願いします。
No.2
- 回答日時:
そもそも、セッション情報はページをまたがって送るということはしません。
この辺りのことは、Webアプリケーションのシステムを理解していないとなかなか難しいと思います。
パラメータというのは、リクエストのパラメータのことですね。
これは、HTTPのパラメータのことで、
HTTPのメソッドのGETとPUTで若干仕組みが変わりますが、ほぼ同等の意味になります。
これは、ブラウザから送信される情報で、HTTPに載ってサーバーに送られてきます。
HTTPの仕組みを調べてみて下さい。
一方、セッションというのはセッションコンテナによって管理されている領域のようなものです。
セッション情報は、メモリに保持されどこにも渡ったりしません。
request#getSession()メソッドを呼ぶことによって、自分のセッション領域を取得します。
セッション管理を調べてみて下さい。
この辺りのことは、一朝一夕では理解できないと思いますので、色々自分で試してみたりするといいかも知れません。
という私も、これを完全に理解するのに半年もかかりました。
この回答への補足
半年かかったというお言葉に勇気付けられました。
ローマは一日にして成らないですよね。
少し考えてみます。
それで分からなかったらまたお願いします。
ありがとうございました。
No.1ベストアンサー
- 回答日時:
こんにちは。
getParameterで値を取得する場合はフォームよりサブミットされる必要があります。
(getの場合はURLで)
セッションは一度値を登録してしまえばセッションが切れるまでは
サブミット等のリクエストが無くても情報を取り出すことができます。
ログイン画面よりユーザIDとパスワードを入力しサブミット
パラメータで受け取ったユーザIDとパスワードを使用して認証を行い、OKだった場合はセッションにユーザID等のログイン情報を格納
認証が必要なページにてセッションの有無を確認し、ログインしているかしていないかをチェック
セッションを使わないと、ユーザIDやパスワードをフォームのhidden項目に埋め込んだりして、
常にクライアントに次へのボタン等でアクションを起こさせる必要があります。
セッションに登録してあれば、そこから値を取るだけなのでフォームのhidden項目等に埋め込むこと、
またボタンを押してもらう等の操作が不必要になります。
ソースのどの部分からというよりは、作り方の問題だと思います。
>サブミット等のリクエストがなくても
決定的な違いがそこにありました。
ありがとうございます!
最近ちょっと泥沼状態(焦ってます)でして、人に言ってもらわないとそんなことすら気付きませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP php ログイン 1 2022/11/01 00:24
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- PHP php 入力画面から確認表示画面へ情報の受け渡しについて。 1 2023/06/07 18:00
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- PHP $_SESSIONについて教えて下さい。 2 2023/03/02 09:18
- Java java final 1 2022/06/10 22:49
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別ブラウザにセッションを渡す...
-
ブラウザを閉じずにセッション...
-
ブラウザの×(閉じる)ボタンの...
-
フレーム表示されているページ...
-
DVD-Rの「セッションを閉じる」...
-
コネクション・セッション・ト...
-
会社への勤怠届出にGoogleフォ...
-
IE6で新しいウィンドウを開くと...
-
コンピュータへの接続数が最大...
-
DataGridViewのチェックボック...
-
エクセルVBAで画面の大きさを取...
-
チャレンジタッチの画面にスマ...
-
Q&Aフォームを作成したいのです...
-
Accessの画面更新を一時的に停...
-
Webページ上のボタン等の位置を...
-
aspxをhtmlに変換する方法について
-
c# 文字列の最後から1文字削除...
-
【ASP.NET】ページ遷移してもGr...
-
ASP.NetのGridViewで任意の行ク...
-
数字のみ入力可
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コネクション・セッション・ト...
-
DVD-Rの「セッションを閉じる」...
-
コンピュータへの接続数が最大...
-
ブラウザの×(閉じる)ボタンの...
-
ブラウザを閉じずにセッション...
-
DVDの中身が表示されません。
-
セッションIDを取得したい
-
会社への勤怠届出にGoogleフォ...
-
フォームデータをlocation.repl...
-
ASP.NET 電卓計算
-
ルータのPPPのランプの色が変
-
セッションIDについて
-
SESSIDってなんですか?
-
自分のPCへアクセスしているコ...
-
DVDデータ追記時に、ポカ しま...
-
別ブラウザにセッションを渡す...
-
サーバー上の全セッション変数...
-
多段プロキシが原因?
-
CD-Rに追記したときに消え去っ...
-
ODBC-JDBCブリッジドライバを使...
おすすめ情報