0 امتیاز
قبل در کامپیوتر و اینترنت توسط (50 امتیاز)
ویرایش شده قبل توسط

بر چه اساسی می توان امتیازدهی کاربران و یا آمار تعداد بازدید مربوط به ایتم خاص را محدود نمود؟

برای مثال در همین سایت جواب یاب مواقعی که شما چند بار یک سوال را مشاهده می کنید با این حال آمار بازدید افزایش نمی یابد؟

در جاوا چگونه می توان این راهکار ها را پیاده سازی کرد؟

قبل توسط (1.1هزار امتیاز)
همانطور که دوستومون Hosseini گفتند شما باید آی پی کاربری که از مطلبی بازدید می کند و همچنین آی دی کاربری که به مطلبی امتیاز می دهد را در جداول واسط پایگاه داده خود ذخیره کنید.
قبل توسط (1.9هزار امتیاز)
+2
اگر به جواب رسیدید لطفا در قالب جواب قرار بدید که من و بقیه هم استفاده کنیم ممنون

1 پاسخ

+1 امتیاز
قبل توسط (15 امتیاز)
ویرایش شده قبل توسط

این کار رو من با اسپرینگ انجام دادم. به گفته دوستان آی پی و آیدی کاربر و آیدی مطلب رو در پایگاه داده ذخیره کنید. فرض کنید جدول بازدید شما به این صورت می باشد.

ip subjectId userId
     

برای بازدید نیاز به کد Ajax ندارید کافی قبلش چک کنید و ببینید که آی پی کاربر و آیدی مطلب مورد نظر در جدول وجود دارد یا نه اگر نبود فیلد مربوط به بازدید رو یکی افزایش میدین و آی پی و آدی مطلب و کاربر رو در این جدول ذخیره می کنید در غیر این صورت لازم نیست کوئری ها گفته شده اجرا شوند.

برای امتیاز دادن به کد Axjax نیاز دارید. برای مثال کد مربوط به امتیاز مثبت رو در اینجا میارم که طبیعتا نمره منفی دادن نیز مشابه خواهد. برای مطالعه بیشتر درباره ی کتابخانه های استفاده شده برای ارتباط ajax و کنترلر در اسپرینگ به این آدرس مراجعه کنید. http://www.raistudies.com/spring/spring-mvc/ajax-form-validation-using-spring-mvc-and-jquery/

function up() {  
	var Id = $('#Id').val();
	var dataString = "Id="+Id;
	var up = parseInt($('#up').val());
	$.ajax({
	type: "POST",
	 dataType: 'json',
         async: true,
	url: "/up.htm",
	data: dataString,
	
	   success: function(response){
		      // we have the response 
		      if(response.status == "SUCCESS"){
		    	  up = up+1;
		    	  $('#up').val("+"+up);
		    	  $('#msg').show('slow');
		    	 
		    	  setTimeout(function(){
		    		  $('#msg').hide('slow');        
		    	    }, 2000); 
		      }else{
		      $('#msg1').show('slow');
		       $('#msg').hide('slow');
		       setTimeout(function(){
		    		  $('#msg1').hide('slow');        
		    	    }, 2000);
		      }	      
		    },  
    error: function(e){  
      alert('Error:'+e);  
    }  
  });  
}

و کد مربوط به کنترلر به این صورت می باشد

@RequestMapping(value="/up.htm")
public @ResponseBody JsonResponse up(HttpServletRequest request,Model model){
  JsonResponse res = new JsonResponse();
  int Id = Integer.parseInt(request.getParameter("Id").toString());
	if(voteService.checkVote(Id,request.getRemoteAddr())){// چک می کند که آیا تبه این مطلب توسط ایتن آی پی رای داده شده است یا نه
	  Vote vote = new Vote();
	  vote.seId(Id);
	  vote.setIp(request.getRemoteAddr(););// request.getRemoteAddr();برای دستیابی به آی پی کابر
           service.up(Id);//افزایش امتیاز 
           voteService.insertIP(vote);// ذخیره آی پی و آیدی 
          res.setStatus("SUCCESS");
		}
         else
        	 res.setStatus("FAIL");// پیامی ظاهر می شود که شما به این مطلب رای داده اید.
		return res;
	}

برای دیدن نمونه به این آدرس مراجعه کنید.

قبل توسط (15 امتیاز)
کد توابع و یا کلاس ها رو به این دلیل ننوشتم چون چندان مهم نبودن.(بیشتر مربوط به نوشتن در پایگاه داده و یا خوندن از پایگاه داده اس) و یا لینک کمکی برای مطالعه بیشتر رو ذکر کرده ام. اگه تابع و یا کلاس خاصی مد نظرتون هست بفرمایید تا کدش رو اضافه کنم.
همچنین سعی می کنم که در قالب یک پروژه eclipse قرار بدم.
قبل توسط (1.9هزار امتیاز)
hadi20@ بنده اون طوری که از سوال متوجه شدم را بیان کردم ممنون که تجربیات خودتون رو به اشتراک گذاشتید.

سوالات مشابه

+1 امتیاز
0 پاسخ 605 بازدید
0 امتیاز
0 پاسخ 329 بازدید
0 امتیاز
2 پاسخ 491 بازدید
+1 امتیاز
1 پاسخ 2.6هزار بازدید
+1 امتیاز
2 پاسخ 1.2هزار بازدید
...