ちょっと私は私のプロジェクトの管理モジュールに取り組んでいます。人がログインすると、ログインサーブレットにリクエストが送信されます。さらに他のオプションをクリックして他のレポートを要求すると、レポートのリクエストが他のサーブレットに送信され、通常のタイプのユーザーの時刻に表示されるページの結果が表示されます。セッションは2つのサーブレット間で失われます。あるサーブレットから別のサーブレットにセッションを転送する方法は?
他のページで生成されたレポートをナビゲートしようとしていますが、そのためには第2サーブレットのユーザータイプを知る必要があります。これは、ログインモジュールBeanクラスからuser_typeの値を取得することで実行できます。
このような状況を処理するにはどうすればよいですか?おかげ
は私のログインサーブレットは次のとおりです。
LoginService user = new LoginService();
user.setUserName(request.getParameter("username"));
user.setPassword(request.getParameter("password"));
user = UserDAO.login(user);
if (user.isValid())
{
HttpSession session = request.getSession(true);
session.setAttribute("currentSessionUser",user);
if(user.getUser_type().equalsIgnoreCase("admin")){
response.sendRedirect("administrator/homepage.jsp");
}else{
response.sendRedirect("homepage.jsp"); //logged-in page
}
}
else
response.sendRedirect("invalidlogin.jsp"); //error page
}
私は2番目のサーブレットでこれを使用してみました: -
LoginService session = (LoginService)request.getAttribute("currentSessionUser");
String drake = session.getUser_type();
System.out.println("usertype = " +drake);
ここでLoginServiceはログインモジュールのBeanクラスです。私はここでnullpointer例外を取得します。
なぜセッション中のユーザーが 'LoginService'のインスタンスですか? 1つのURLのHTTPと1つのHTTPSですか?その場合は、2つのプロトコル間でセッション共有を設定できる必要があります。 –
@DaveNewton 'LoginService'は自分が定義したクラスだと思います。彼はコードスニペットを作成し、セッション属性として設定します。 –
@G_H私はそれを理解しています。私の指摘は、それはユーザーのための愚かな名前だということです。セカンドサーブレットの 'session'もそうです。名前付けの問題:) –