2012-11-19 18 views
6

JAVAでログインアプリケーションを作成しています。私はJSPでプレゼンテーションを行い、サーブレットのすべてのロジック(データベース接続性)を[これは私の知る正しい方法ではありません]。 サーブレットでユーザー名のパスワードを確認してから、セッション変数を作成します。 とそれはvariable.Iは、セッション変数や動きを維持する方法が必要になり、セッションを削除しsendredirectでJavaでセッションを維持する

response.sendRedirect("student.jsp"); 

student.jsp言うそして、私はそのホームページにユーザーをリダイレクトにこの

sess.setAttribute("username",oName); 

のようにセッションを追加student.jspへ。forwadingを使用しようとしましたが、うまくいきませんでした。

RequestDispatcher dispatcher = 
       getServletContext() 
        .getRequestDispatcher("/student.jsp"); 

      if (dispatcher != null) { 
       dispatcher.forward(request, response); 
      } 

転送要求ではありませんが、ページアドレスは正しくないstudent.jspに変更されません。 この点で任意のヘルプは を理解されるであろう戻ってくると、同じセッションに接続するためにリダイレクトされたリクエストのためにあなたに

+1

転送の仕組み:URLではなくブラウザのコンテンツを置き換えます。リダイレクトを使用する必要がありますが、テストを行っているブラウザはCookieを許可しません。ブラウザでCookieを有効にして、アプリケーションを再度実行します。 –

+1

ここには良い指導書があります。それは放棄のために役立つかもしれません。サーブレットでのJSP forwadingの意味 http://www.javapractices.com/topic/TopicAction.do?Id=181 –

答えて

5

をありがとう、それは通常JSESSIONID(または別の名前)クッキーにまたはで運ばれ、セッションIDを必要としますパラメータとしてのURL。

このCookieまたはURLパラメータは、サーブレットコンテナによって追加する必要があります。追加する必要はありません。

ブラウザにCookieが表示されず、JSESSIONIDをURLに付加していない場合は、リクエストごとに新しいセッションが作成され、同じセッションには追加されません。

-1

RequestDispatcherを使用し、request.setAttribute()を使用してユーザー名変数を設定します。この場合、ディスパッチャは新しいリクエストを作成しませんが、同じリクエストはforward()メソッドを使用して転送されます。

+1

これはOPの具体的な問題を解決しませんすべて。このようにして、ユーザは後続のリクエストではログインしません。 – BalusC

0

tomcat context.xmlファイルを編集して<Context>タグを<Context useHttpOnly="false">に変更してみると、これが役に立ちました。

関連する問題