PDA

View Full Version : سوال: request.getSession().setAttribute()



pro_mvb
چهارشنبه 27 خرداد 1388, 18:46 عصر
سلام دوستان
من دوتا page JSP دارم.:لبخندساده:
در صفحه اول طرف USERNAME میده و LOGIN میکنه و به صفحه دوم میره. در اوونجا از دستور
request.getSession().setAttribute("khar",d);استفاده کردم.
که مقدار d اسم یوزری که کاربر وارد کرده.
وحالا دوباره به صفحه اول(همونجایی که بوزر را وارد کرده)میره و در اوون PAGE از دستور:
mkh =request.getSession().getAttribute("khar"); استفاده کردم که MKH از نوع String هست.
تا اینجا با مشکلی رو به رو نیستم!:تشویق:
اما وقتی می خواهم برنامه رو run کنم به mkh =request.getSession().getAttribute("khar");
گیر میده(اررور میده که مشکل دار ه):اشتباه:
اررورش هم اینه:
Error(36,59): incompatible types; found: java.lang.Object, required: java.lang.String

در ضمن این کدها و اررور ها در IDE به نام JDEVELOPER هست:چشمک:
ممنون میشم راهنمایی کنین:قلب:

javaphantom
چهارشنبه 27 خرداد 1388, 22:01 عصر
سلام دوستان
من دوتا page JSP دارم.:لبخندساده:
در صفحه اول طرف USERNAME میده و LOGIN میکنه و به صفحه دوم میره. در اوونجا از دستور
request.getSession().setAttribute("khar",d);استفاده کردم.
که مقدار d اسم یوزری که کاربر وارد کرده.
وحالا دوباره به صفحه اول(همونجایی که بوزر را وارد کرده)میره و در اوون PAGE از دستور:
mkh =request.getSession().getAttribute("khar"); استفاده کردم که MKH از نوع String هست.
تا اینجا با مشکلی رو به رو نیستم!:تشویق:
اما وقتی می خواهم برنامه رو run کنم به mkh =request.getSession().getAttribute("khar");
گیر میده(اررور میده که مشکل دار ه):اشتباه:
اررورش هم اینه:
Error(36,59): incompatible types; found: java.lang.Object, required: java.lang.String

در ضمن این کدها و اررور ها در IDE به نام JDEVELOPER هست:چشمک:
ممنون میشم راهنمایی کنین:قلب:

علتش کاملا معلوم چی هست و او این هست که شما J2SE کلا مفهوم object oriented رو بلد نیستید و مفهوم session رو نفهمیدید و رفتید کد زدید.

هنگامی که session رو از server تقاضا یا request می کنید به شما یک object بر می گرداند و شما باید این Object را در صورت null نبودن به نوع مربوط به آن که در هنگام ساختن به سرور فرستاید cast کنید. مثال من یک رشته string رو به یک session می چسبونم و در page بعد اون رشته رو می گیرم.
چه جوری ؟ این جوری


HttpSession session = request.getSession();
String name = "babak";
session.setAttribute("mySession",name);

در این قسمت از کد من یک session تقاضا کردم از server و بعد به اون نام mySession رو دادم و مقدار name که همان babak هست رو به اون چسبوندم یا وارد کردم و دادمش دست server حالا فرض می کنیم جای دیگه می خوام این مقدار رو که همون babak هست بخونم.

نکته بابک از نوع String هست پس session گرفته شده باید به نوع string کست (cast) شود.

چه جوری ؟ این جوری


HttpSession session = request.getSession();
if (session.getAttribute("mySession") == null) {
System.out.println("There is no session");
} else {
String myCastString = (String) session.getAttribute("mySession");
System.out.println(myCastString);
}

همانطور که می بینی در قسمت if چک می کنم که اولا sessionی که می گرم مقدار آن null نباشد و در صورتی که null نبود یعنی مقدار babak در آن قبلا ست شده است رو در یک متغیر از نوع string به نام myCastString ذخیره می کنم و چون می دونم babak از نوع String هست آن رو به نوع String که در پرانتز نوشتم cast می کنم.
حالا در این متغیر یعنی myCastString مقدار babak وجود دارد

pro_mvb
پنج شنبه 28 خرداد 1388, 00:18 صبح
سلام
ممنون از راهنماییتون:لبخندساده:
حقیقتش من اطلاعی در مورد

HttpSession ses = request.getSession();
نداشتم.:ناراحت:
متشکر :چشمک: