PDA

View Full Version : refresh خودکار گزارشات در jsp



mojtaba_java
یک شنبه 19 اسفند 1386, 16:39 عصر
با سلام
من برنامه ای با jsp و sql server نوشتم .
شما فرض کنید مدیر یک صفحه باز کرده و در حال دیدن مثلا گزارشات است در این هنگام کاربری یک داده اضافه یا تغییر می دهد . مدیر تا صفحه را refresh نکند نمیتواند تغییرات را ببیند .
آیا کسی برنامه ای برای این مشکل من دارد ، تا داده ها خودکار refresh شوند؟
با تشکر

javaphantom
یک شنبه 19 اسفند 1386, 17:57 عصر
با سلام
من برنامه ای با jsp و sql server نوشتم .
شما فرض کنید مدیر یک صفحه باز کرده و در حال دیدن مثلا گزارشات است در این هنگام کاربری یک داده اضافه یا تغییر می دهد . مدیر تا صفحه را refresh نکند نمیتواند تغییرات را ببیند .
آیا کسی برنامه ای برای این مشکل من دارد ، تا داده ها خودکار refresh شوند؟
با تشکر

یک چیزی هست به اسم AJAX بد نیست یکم بخونی در موردش

fkohantorabi
دوشنبه 20 اسفند 1386, 05:55 صبح
با سلام
من برنامه ای با jsp و sql server نوشتم .
شما فرض کنید مدیر یک صفحه باز کرده و در حال دیدن مثلا گزارشات است در این هنگام کاربری یک داده اضافه یا تغییر می دهد . مدیر تا صفحه را refresh نکند نمیتواند تغییرات را ببیند .
آیا کسی برنامه ای برای این مشکل من دارد ، تا داده ها خودکار refresh شوند؟
با تشکر

یک کار دیگه هم که می توانی بکنی این است که از تگ refresh توی HTML Header استفاده بکنی. کافیه این رو بزاری تو header:



<meta http-equiv="refresh" content="600">


فرزاد-

mojtaba_java
دوشنبه 20 اسفند 1386, 11:28 صبح
این تگی که شما دادید صفحه را هر 600 ثانیه refresh می کند .
و به تغییرات کاری ندارد.

mojtaba_java
دوشنبه 20 اسفند 1386, 11:29 صبح
یک چیزی هست به اسم AJAX بد نیست یکم بخونی در موردش

اگه دستورشو می دونید بگید ممنون می شم.

javaphantom
دوشنبه 20 اسفند 1386, 14:23 عصر
اگه دستورشو می دونید بگید ممنون می شم.

دارید با من شوخی می کنید نه :D.
شما باید با javascript آشنا باشید. و از طریق ست کردن یک سری فایلهای xml و به کمک اسکریبپت نویسی به زبان javascript این مشکل رو حل کنید.
من به شما گفتم مطالعه کنید از کدهایی که من می زنم ارزشش بیشتره

mojtaba_java
جمعه 02 فروردین 1387, 14:16 عصر
با سلام
دوستانی که مشکل دوم من رو داشتن از Trigger می تونن استفاده کنند.
همونطور که دوست عزیز ما گفت از Ajax استفاده کنید.
البته خودم هنوز در حال مطالعه هستم

anubis_ir
جمعه 02 فروردین 1387, 21:05 عصر
Ajax اصلا ارتباطی به ریفرش شدن گزارش مدیر (در یک استیشن) زمانیکه یک کاربر دیگر در استیشنی دیگر مشغول به کار کردن است ندارد (یا به عبارتی مطلع سازی برنامه مدیر از تغییرات به صورت خودکار). Ajax یک مفهوم است و Service broker یک مفهوم دیگر است.
درباره مثلا SQL server service broker تحقیق کنید. این مورد به سؤال شما نزدیک‌تر است.
جواب fkohantorabi در این تاپیک باز بهتر بود. (ساده‌ترین راه حل موجود)

javaphantom
شنبه 03 فروردین 1387, 01:28 صبح
Ajax اصلا ارتباطی به ریفرش شدن گزارش مدیر (در یک استیشن) زمانیکه یک کاربر دیگر در استیشنی دیگر مشغول به کار کردن است ندارد (یا به عبارتی مطلع سازی برنامه مدیر از تغییرات به صورت خودکار). Ajax یک مفهوم است و Service broker یک مفهوم دیگر است.
درباره مثلا SQL server service broker تحقیق کنید. این مورد به سؤال شما نزدیک‌تر است.
جواب fkohantorabi در این تاپیک باز بهتر بود. (ساده‌ترین راه حل موجود)



اگر ایشون فرمودن refresh کردن صفحه کاملا منظورشون این بوده که صفحه باید یک بار دیگه refresh بشه که تا پیغامی که تازه آمده روی صفحه refresh شده گزارش بشه.
طبیعی هم است برای اینکه با refresh شدن صفحه دو باره دستورات به سرور فرستاده می شه و سرور هم دوباره می از database شروع می کنه data گرفتن و مسلم که data جدید اومده رو هم با خودش می آیره. پس هرکی گفته که از سمت database باید عملی انجام بشه چمودنم گفته trigger بنویس یا اینکه SQL server Serive borker این چیزها استفاده کنه اصلا مفهوم وب رو نفهمیده.

این سوالات و این نوع باسخ گفتن کاملا نشون می ده که مطالعه کم هست و نظر دادنم که همه استاد هستند.

اما نکته جالب اینکه فرمودید AJAX یک مفهوم هست :قهقهه:
جناب مهندس اگر AJAX برای شما یک مفهوم هست برای من همه چیز دارای مفهوم هست من هم قبول دارم که AJAX یک مفهومی داره اما ای کاش مفهومش می گفتین. من در پست قبلیم نخواستم بگم بلکه این دوست گرام برن بخون و این مفهوم رو یاد بگیرن. که نکردن مشخصم هست که دنبالش نرفته و سطحی به موضوع نگاه کرده. برای اینکه مشکل ایشون اصلا ربطی به این فسمت فروم نداره.
چون با jsp کار کردن پس همه مشکالات به java ختم می شه؟ خیر این طور نیست.

متاسفانه کسانیکه توی ایران که در قسمت database کار می کنند و اطلاعات آنها بیشتر در مورد یک سری جداول relational ی هست نه تازه objective در تمام امور مهندسی نرم افزار و سخت افزار نظریه می دهند و می خواهند همه مشکلات رو از طریق لایه database حل کنند.

شما تا تفضای خودتون رو به سرور ندهید به هیچ وجه اطلاعاتی از سمت database به شما داده نخواهد شد پس هر تغییر توی لایه database فقط بر می گرده به لایه database حالا می خواد trigger باشه SQL server Service borker باشه.

اما بریم سراغ AJAX مفهوم آن :
AJAX یک تکنیک هست اول از همه و نه یک تکنولوژی مخلوط java script و xml فایل شده (AJAX (Asynchronous JavaScript and XML
کارش چیه برای اینکه یک برنامه متعامل وب داشته باشیم.
آقا دارم email مو می خونم که یک دفه زیر صفجه یک پنجره باز می شه می گه که الان شما براتون یک email دیگه فرستاده شد مثلا از طرف مهندس.
الله اکبر. چه جوری می شه آخه من که به سرور تقاضا نفرستادم که بره دباره emailهامو توی قسمت database یک query بگیره که بعد بگه الان برات email جدید امومد. داستان چیه؟ trigger نوشتن؟ نوشتن که نوشتن مهم اینکه من نقاضا نفرستادم برای سرور . شایدم database بیشرفته شدن من نمی دونستم اونا بجای من از سرور تقاضا می کنند یا همون دستور رو می فرستند:قهقهه:
اونم با service broker که من نمی دونم چی هست.
این راه حل دوستمونم جناب fkohantorabi یکم غیر عادیه. مگه من توی چت روم هستم که هر چند وقت یک بار که توی صفحم چندتا frame هست حالا یکیش refresh بشه که اونایی که رفتن و اونایکه اومدن رو برام لیست کنه.
من دارم email می خونم یک دفعه وسطش صفحه refresh بشه:عصبانی++:
البته مهندس فرمودند که بهترین راه حله تا الان و البته بعد از راه حل خودشون این راه حل را تایید کردند.

حالا AJAX چی کار می کنه. گفتیم توی web آب می خوایم بخوریم باید یک جوری به سرور بفهمونیم. حالا این فرستادن تقاضاها به سمت سرور می تونه از طریق یک واسته باشه مثل یک دکمه مثل یک link که همه استفاده کردیم مثلا من الان کلیه لالایی دارم برای خودم می نویسم تا زمانی که رو دکمه فرستادن پاسخ نزنم ۱۰۰۰ trigger هم توی قسمت database بنویسن لالایی های من جایی ثبت نمی شه.
اما یک سری تقاضا هام هستند که می تونه یک جورایی که کاربر خبر نداره از طریق browser به سرور فرستاده بشه. مثل session ها . پروتکل http هست و بی ثباتی و فراموش کاری و اینجور حرفها بلااخره باید بدونه کاربرش کجای کار دیگه سرور با کمک این browser اون پشت یه کارایی با هم می کنند.
توابع AJAX توی زبان java script وجود داره. مثل توابع session که در همه زبانهای server side ی وجود داره. توی JEE ما interfaceی داریم به نام HttpSession که که دارای یک سری توابع هست که بتون session handling رو انجام بدیم.
خوب توی همه browser ها الان یک objectی وجود داره به نام چی بابا
XMLHttpRequest . کارش چیه که با کمک یک XML فایل اطلاعاتی که بازیابی میشه از طرف سرور رو کنترل می کنه.
برای همینه که داری email رو می خونی یک دفعه می گه email جدید اومد .
اون پشت این سروره خیلی کاراست که داره انجام می ده.

منتها همانطور که در پست قبلی همه گفتم اینها نیازمند دونستن خیلی مفهومها است.

بازم می گم خوندن کتابهای مرجع و معتبر خیلی بهتر از راه حل های من و امثال من هستند. بخونیم و بفهمیم و در عمل اگر نتونستیم پیاده سازی کنیم اون موقع کمک بخواهیم.
چاکس

anubis_ir
شنبه 03 فروردین 1387, 11:42 صبح
در مورد service broker می‌تونی تحقیق کنی.
http://msdn2.microsoft.com/en-us/library/t9x04ed2.aspx
یک مثال در مورد نحوه استفاده از آن در وب
http://davidhayden.com/blog/dave/archive/2006/04/29/2929.aspx

=====================

در مورد Ajax ، باز شدن یک پنجره جدید اطلاع دهنده آمدن ایمیل جدید، بدون شک با فرستادن کوئری به سرور و دریافت اطلاعات جدید از آن صورت می‌گیرد. این کار میتونه آسنکرون هم باشه.
چیزی به نام ajax timer هم وجود داره. کار این تایمر شبیه به همون ریفرش است، البته به صورت آسنکرون. یا ریفرش صفحه (یا قسمتی از صفحه) و اطلاعات به صورت مدرن.
خلاصه اینکه ajax نمی‌تونه کار service broker‌ رو انجام بده. اما میتونه یک تایمر مثل ریفرشی که دوستمون گفتند ایجاد کنه و به صورت آسنکرون و مدرن اینکار رو انجام بده. یعنی اینکه همون لحظه که کاربر در یک استیشن دیگر هست، مدیر مطلع نخواهد شد. باید زمان ریفرش اطلاعات با استفاده از تایمر و به صورت آسنکرون فرا برسد.


-----------------
پ. ن. علاقه‌ای به بی ادبی و توهین مستقیم به تو ندارم چون نیازی نداری.

javaphantom
شنبه 03 فروردین 1387, 12:45 عصر
در مورد service broker می‌تونی تحقیق کنی.
http://msdn2.microsoft.com/en-us/library/t9x04ed2.aspx
یک مثال در مورد نحوه استفاده از آن در وب
http://davidhayden.com/blog/dave/archive/2006/04/29/2929.aspx

=====================

در مورد Ajax ، باز شدن یک پنجره جدید اطلاع دهنده آمدن ایمیل جدید، بدون شک با فرستادن کوئری به سرور و دریافت اطلاعات جدید از آن صورت می‌گیرد. این کار میتونه آسنکرون هم باشه.
چیزی به نام ajax timer هم وجود داره. کار این تایمر شبیه به همون ریفرش است، البته به صورت آسنکرون. یا ریفرش صفحه (یا قسمتی از صفحه) و اطلاعات به صورت مدرن.
خلاصه اینکه ajax نمی‌تونه کار service broker‌ رو انجام بده. اما میتونه یک تایمر مثل ریفرشی که دوستمون گفتند ایجاد کنه و به صورت آسنکرون و مدرن اینکار رو انجام بده. یعنی اینکه همون لحظه که کاربر در یک استیشن دیگر هست، مدیر مطلع نخواهد شد. باید زمان ریفرش اطلاعات با استفاده از تایمر و به صورت آسنکرون فرا برسد.


-----------------
پ. ن. علاقه‌ای به بی ادبی و توهین مستقیم به تو ندارم چون نیازی نداری.

من sql server کار نکردم ولی اگر روی linux کار می کرد شاید ازش استفاد می کردم . من هنوزهم می گم ajax چون cross platform هست. بیشتر سایتهایی که حرفی برای گفتن دارن در حال خاضر دارن از این تکنیک استفاده می کنند.
این چیزی هم که نوشتید من که باز نفهمیدم که بلااخره AJAX جواب می ده یا نه وققط تنها چیز قابل فمهم بازهم این بود که AJAX با broker تفاوت داره که منکرش لعنت. AJAX خیلی کاربردهای دیگری هم داره و استفادها دیگری هم ازش میشه.
توهین هم کسی به شما نکرده شما نوشتهاتون توهین آمیزتر بود که کی گفته AJAX این حرفها
منهم گفتم من گفتم هنوزم بهتون دارم می گم. به اون خط قرمز هم بیشتر دقت کن و همچنین آبی

zer0cool
چهارشنبه 07 فروردین 1387, 10:47 صبح
http://en.wikipedia.org/wiki/Ajax_%28programming%29
http://java.sun.com/developer/technicalArticles/J2EE/AJAX/IntroAjaxPageAuthors/AJAXSequencev3.gif
http://en.wikipedia.org/wiki/Cross_platform


http://msdn2.microsoft.com/en-us/library/ms345108.aspx#sqlsvcbr_topic2
http://en.wikipedia.org/wiki/Message_queuing
http://en.wikipedia.org/wiki/Microsoft_SQL_Server#Service_Broker

با نگاه کردن به این لینکها میشه یکی توضیح بده چرا این دوتا رو دارید کارشون رو با هم مقایسه میکنید ؟!؟!؟!؟!؟!؟!؟!؟!؟!؟!؟!؟!؟