Java用Cookie限制点赞次数(简版)_java

本文简单利用Cookie技术来简单的限制点赞次数,并不能杜绝游客的恶意点赞。

好了,不啰嗦了,先来看看基础知识:

ajax+springMVC+cookie

中间框架你随意,楼主这里用了springMVC,只要取得HttpServletRequest和HttpServletResponse你就可以操作cookie啦

什么是Cookie

cookie 是存储于访问者的计算机中的变量。每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie。你可以使用 JavaScript 来创建和取回 cookie 的值。

第2篇阅读中提到了cookie存放在http的request中,这为我们在java中操作cookie提供了可能

cookie主要用途编辑

服务器可以利用Cookies包含信息的任意性来筛选并经常性维护这些信息,以判断在HTTP传输中的状态。Cookies最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是Cookies的功用。另一个重要应用场合是“购物车”之类处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入Cookies,以便在最后付款时提取信息。

基本了解了Cookie,我们来看看java怎么操作cookie

建立一个无生命周期的cookie,即随着浏览器的关闭即消失的cookie,代码如下:

HttpServletRequest request
HttpServletResponse response
Cookie cookie = new Cookie("cookiename","cookievalue");
response.addCookie(cookie);

  建立一个有生命周期的cookie,可以设置他的生命周期

cookie = new Cookie("cookiename","cookievalue");
//此方法接收一个以秒为单位的整数,该整数表示cookie的最大生存期。负值表示当关闭浏览器时,该cookie将被清除,表示必须立即清除该cookie。
cookie.setMaxAge();
//设置路径,这个路径即该工程下都可以访问该cookie 如果不设置路径,那么只有设置该cookie路径及其子路径可以访问
cookie.setPath("/");
response.addCookie(cookie);

读取cookie,读取cookie代码如下

Cookie[] cookies = request.getCookies();//这样便可以获取一个cookie数组
for(Cookie cookie : cookies){
cookie.getName();// get the cookie name
cookie.getValue(); // get the cookie value
}

springMVC具体限制操作

/**
* 点赞操作
*
* @param comment
* @param request
* @param response
* @return
*/
@RequestMapping(value = TalkingConst.PATH_LOVE, method = RequestMethod.POST)
public @ResponseBody Map<String, Object> love(Comment comment, HttpServletRequest request, HttpServletResponse response) {
Map<String, Object> map = new HashMap<String, Object>();
// 根据cookie的name取的cookie getCookieByName()方法可以参考代码块上的链接处的封装
Cookie cookie = getCookieByName(request, comment.getCommentId() + "");
// 判断cookie是否为空
if (cookie != null) {
// cookie不为空,提示已经赞过
// 前台传值
map.put(TalkingConst.ATTRIBUTE_MSG, "您已赞过,请休息一下~");
map.put(TalkingConst.ATTRIBUTE_NAME_RESULT, Boolean.FALSE);
} else {
// 数据库操作,点赞个数加
commentService.love(comment);
// 创建cookie addCookie()方法可以参考代码块上的链接处的封装
addCookie(response, comment.getCommentId() + "", "", );
map.put(TalkingConst.ATTRIBUTE_NAME_RESULT, Boolean.TRUE);
}
return map;
}

至此,简单的cookie限制点赞次数基本完成。前台的代码没放因为每个点赞的样式都不大一样。

以上所述给大家分享了Java用Cookie限制点赞次数的相关知识,希望对大家有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索cookie点赞次数
cookie限制投票次数、cookie只能点赞一次、陌陌点赞次数上限、阴阳师点赞次数、微信点赞次数怎么修改,以便于您获取更多的相关知识。

时间: 2024-07-30 14:30:53

Java用Cookie限制点赞次数(简版)_java的相关文章

Java中Cookie和Session的那些事儿_java

Cookie和Session都是为了保持用户的访问状态,一方面为了方便业务实现,另一方面为了简化服务端的程序设计,提高访问性能.Cookie是客户端(也就是浏览器端)的技术,设置了Cookie之后,每次访问服务端,请求中都会带上Cookie:Session是服务端技术,在服务端存储用户的访问信息. 使用Cookie传递信息,随着Cookie个数增多和访问量增大,它占用的带宽会越来越大:使用Session保存信息,最大的弱点就是不容易在多台服务器之间共享. 1 Cookie 通俗地讲,当用户使用H

java多线程中的异常处理机制简析_java

在java多线程程序中,所有线程都不允许抛出未捕获的checked exception,也就是说各个线程需要自己把自己的checked exception处理掉.这一点是通过java.lang.Runnable.run()方法声明(因为此方法声明上没有throw exception部分)进行了约束.但是线程依然有可能抛出unchecked exception,当此类异常跑抛出时,线程就会终结,而对于主线程和其他线程完全不受影响,且完全感知不到某个线程抛出的异常(也是说完全无法catch到这个异常

java thread start()和run()方法简析_java

1.start()方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码: 通过调用Thread类的start()方法来启动一个线程, 这时此线程是处于就绪状态, 并没有运行. 然后通过此Thread类调用方法run()来完成其运行操作的, 这里方法run()称为线程体, 它包含了要执行的这个线程的内容, Run方法运行结束, 此线程终止, 而CPU再运行其它线程, 2.run()方法当作普通方法的方式调用,程序还是要顺序执行,还是要等待run方法体执

java实现Web简版机房环境监控

问题描述 小弟这几天正在弄java做Web简版的机房环境监控系统,有经验的大哥大姐帮忙指点一下该怎样分析. 问题补充:sheep3600 写道 解决方案 dll.exe只是取值(机房环境监控)方式不同,最终还是要与你的硬件通讯来的.根据你硬件的通讯协议,发送指令,返回结果,比如你硬件基于rs232(串口)获取温度的指令是CMD#aaa那么,你先配好rs232的基本参数(串口号.波特率.数据位.停止位.奇偶校验位等),然后通过串口发送'CMD#aaa',那么返回的就是温度值了.没有通讯协议,没没办

Java读写Cookie记录的方法

  本文实例讲述了Java读写Cookie记录的方法.分享给大家供大家参考.具体如下: 写Cookie ,cookie的value可以使String, list , map,int : ? 1 2 3 4 5 6 7 Cookie usernameCookie = new Cookie("username_" + schoolId, encodedUsername); usernameCookie.setMaxAge(60 * 60 * 24 * 365); response.addC

java for循环体循环一定次数终止程序重新开始循环(不是break,就是点那个正方形的那种终止)

问题描述 java for循环体循环一定次数终止程序重新开始循环(不是break,就是点那个正方形的那种终止) for(;;){ System.out.println("跳出来"); //终止循环体,在保留aid最后一次值的基础上,程序从这个位置重新开始运行. for(aid=91322;aid<=2000000;aid++){ q=bili.inputav(aid,page); j1++; System.out.println(aid+"连续扫描"+j1+&

Java使用cookie显示最近查看过的书_java

本文实例为大家分享了Java使用cookie显示最近查看过的书的相关方法,供大家参考,具体内容如下 1.ben包     import java.io.Serializable; public class Book implements Serializable { private String id; private String name; private String price; private String auth; private String publish; private S

单词计数-java mapreduce wordcount 统计出现次数

问题描述 java mapreduce wordcount 统计出现次数 一天时间内,每个小时内该网页有多少次访问记录,这么多访问记录中有多少个用户,如下格式: hourid url 0 com 0 com 0 cn 0 net 输出格式类似下面: hourid visitscount userscount 0 4 3 如果用wordcount的那种实现方法的话,都是根据key来直接累加value的,实在不知道该怎么弄,还请大神支招 有几条访问记录,visitscount就是几:userscou

【Python之旅】第五篇(四):基于Python Sockct多线程的简版SSH程序

 还是继续延续篇五中前三节的例子,通过对代码的修修补补,把它改成一个可以在连接后就能在Client端执行Server端命令的程序,所以就有点类似于SSH连接程序了.     至于还是用前面的例子来改嘛,是因为上课也一直这么干,而且老师也讲得非常不错,自己吸收后也作为一个学习的记录吧,因为确实是非常不错的!     之所以能对前面的例子如这样的修改,应当有这样的思想:前面的例子中,Server端能够返回Client端输入的字符串,那么如果Client端输入的是Linux的shell命令,Serve