web-dev-qa-db-ja.com

セッション属性へのアクセスとintへの変換?

サーブレットで次のコマンドを使用して、セッションにユーザーIDを保存しました。

HttpSession session = request.getSession();
session.setAttribute("user", user.getId());

ここで、別のサーブレットからそのユーザーIDにアクセスしたいと思います。

HttpSession session = request.getSession(false);
int userid = (int) session.getAttribute("user"); // This is not working

OR

User user = new User();
user.setId(session.getAttribute("user")); This ain't possible (Object != int)

質問:

  1. SELECTステートメントのためにintにキャストしてIDをDAOに送信するにはどうすればよいですか?
9
a k

intを保存した場合でも、そのメソッドはオブジェクトを想定しているため、自動ボクシングによりintIntegerになります。 Integerにキャストバックしてみてください。問題ないはずです:

int userid = (Integer) session.getAttribute("user");

ただし、属性がnullの場合は、ここでNullPointerExceptionを取得するため、Integerを最後まで使用することをお勧めします。

Integer userid = (Integer) session.getAttribute("user");

この後、useridnullであるかどうかを安全に確認できます。


編集:あなたのコメントに応えて、これが私が「nullをチェックする」という意味です。

Integer userid = (Integer) session.getAttribute("user");
User user = null;
if (userid != null) {
    user = new UserDAO().getUser(userid);
}
// here user will be null if no userid has been stored on the session,
// and it wil be loaded from your persistence layer otherwise.
14
Costi Ciudatu

私はJavaが得意ではありませんが、以前は
Integer.parseInt(session.getAttribute("user").toString())

一度試してみてください。ただし、toStringを呼び出す前に、必ずsession.getAttribute("user")に対してcheck nullを実行してください。

2
Mayank

Javaには Integer ラッパークラスがあり、int値をIntegerのオブジェクトに格納できます。

//setting
Integer intObj = new Integer(intVal);
session.setAttribute("key",intObj);
//fetching
Integer intObj = (Integer) session.getAttribute("key");
2
Jigar Joshi

int userid = (Integer) session.getAttribute("user");を試してください

1
Bala R
Integer userid = Integer.parseInt(session.getAttribute("user"));
1
Rob Parker

これを試して

int userid = Integer.parseInt(session.getAttribute("user").toString());
0
mansoor Sntli

セッションから2つの文字列を乗算します。

int z = Integer.parseInt((String)session.getAttribute("sintelestis"));
int y = Integer.parseInt((String)session.getAttribute("_embadon_akinitou"));
System.out.println("Ο Συνολικός Φόρος είναι: "+ (z*y));
0

私はこれを使用しました:

Integer.parseInt(session.getAttribute("String").toString())
0
antmog

これを試してみてください、それは私のために働きました:HttpSession session = request.getSession(); if (session.getAttribute("user") != null) { userid = ((Integer) session.getAttribute("user")).intValue(); } else { userid = 0; }

0
Jasser Saanoun