Java代码实现点赞功能
场景
个人搭建的一个美食教程网站,每个美食教程的详细页面有一个点赞按钮,每个用户可以通过点击按钮来点赞与取消点赞,并可以看见当前菜品有多少个赞。
实现思路
因为点赞与取消点赞是一个在页面上用户操作比较频繁的功能,而点赞数这个字段是存储在美食教程表里的,用户每点击一次按钮就要修改这个字段会产生很大的数据库开销,所以不考虑直接操作MySQL数据库,转而采用Redis进行存储。后面可采用Quartz框架进行定时的数据同步操作。
采用Redis存储就面临着该选择那一种数据结构来存储每一个教程的点赞数据。根据上面提到的场景可以做出分析:
一个教程可以有多个用户点赞;
一个用户只能给每一个教程点一次赞,再次点击就是取消点赞;
而Redis的集合刚好可以满足我们这一需求。因为集合成员是唯一的,集合中不能出现重复数据。
时序图
核心代码
前端点赞按钮:
<div id="like" class="boxx-one" th:attr="dishId=${item.info.dishId}"><button th:if="${session.loginUser!=null}"></button>
</div><script type="text/javascript">var elementById1 = document.getElementById("like");elementById1.onclick = function () {var path = $("#like").attr("dishId")var p = document.getElementById("count")//发送ajax请求axios({//请求类型method: 'POST',//urlurl: 'http://item.meiwei.com/like',//设置请求体data: {dishId: path}}).then(function (res) {p.innerHTML = "已有" + res.data + "名用户点赞";})}
</script>
页面传给后端的Vo数据:
public class RequestVo {private String dishId;private String members;
}
后端核心代码:
@ResponseBody@PostMapping("/like")public void like(@RequestBody RequestVo requestBody, HttpServletResponse response, HttpSession session) {String dishId = requestBody.getDishId();//获取用户信息MemberRespVo user = (MemberRespVo) session.getAttribute(AuthServerConstant.LOGIN_USER);String username = user.getUsername();String key = "like:" + dishId;//判断redis中是否存在,即判断是否已点赞Boolean ifAbsent = redisTemplate.opsForSet().isMember(key, username);if (!ifAbsent) {//如果不存在,则存入redislikeService.add(key, username);} else {//如果存在,则从redis删除likeService.delete(key, username);}//将点赞数回显Long size = likeService.getCount(key);try {response.getWriter().write(size.toString());} catch (IOException e) {e.printStackTrace();}}
Java代码实现点赞功能相关推荐
- php 点赞 代码,WordPress模板如何使用纯代码实现点赞功能?
WordPress网站为了增加访客互动.展示文章热度,会添加一些阅读数.评论数等元素,其实还有一个比较好的元素,那就是点赞功能,跟QQ空间及朋友圈点赞一样.其实网上已经提供了很多点赞插件,但是更多的人 ...
- JAVA代码实现抽奖功能,自定义奖品以及奖品概率
JAVA代码实现抽奖功能,自定义奖品以及奖品概率 大家好,我是梦辛工作室的灵,最近做了一个抽奖功能,然后自己为了以后方便和拓展 就封装了一下,可以自定义奖品 自定义权重 和 价格等信息,还可以自由设置 ...
- java ajax 点赞功能_Ajax+jQuery+bootstrap+Java实现异步点赞功能,并限制点击次数
在很多的网站上有很多不同的点赞,我不知道他们是怎么实现的,下面我来分享一下我写的点赞实现,共大家参考下, 这是我在一个项目抽取的代码,可能有些样式会发生变化,但是功能不会影响. 网页代码: 这个是根据 ...
- 大数据 java 代码示例_功能Java示例 第7部分–将失败也视为数据
大数据 java 代码示例 这是称为" Functional Java by Example"的系列文章的第7部分. 我在本系列的每个部分中开发的示例是某种"提要处理程序 ...
- 【计算机网络 15】简单几行Java代码实现迅雷功能,java流式编程原理
public static void main(String[] args) throws Exception { //1.创建一个socket连接 Socket socket = new Socke ...
- java屏幕快速截图,java代码实现截图功能(屏幕截图)
代码如下: import java.awt.Dimension; import java.awt.Rectangle; import java.awt.Robot; import java.awt.T ...
- java购物系统点赞功能实现_springboot如何实现点赞功能
在资讯类的项目中,我们常常遇到文章评论和点赞等功能实现.但是这些功能再项目中是高频出现的,如果直接操作数据库的话,对数据库压力太大.那遇到这个问题怎么解决? redis缓存 首先我们想到的就是添加缓存 ...
- eclipse中设置java、xml文件的字体大小以及代码自动提示功能
设置字体大小: 在菜单windows-->prefereces里面,找到General-->Appearance-->Colors and Fonts, 设置xml文件字体大小:找B ...
- 基于java的微信小程序的实现(八)用户点赞/取消点赞功能相关后端接口开发
文章目录 1.需求分析 2.用户的点赞与取消点赞的接口编写 1.数据库表结构分析 3.点赞接口的实现 1.需求分析 2.代码实现 4.用户取消点赞接口的实现 1.需求分析 2.代码实现 5.查询用户与 ...
最新文章
- 同软件多个线程设置不同ip_5-13网络编程(附带多线程死锁,线程通信)
- Redis的数据类型详解
- ckeditor源码编辑模式,添加style、javascript内容丢失的解决
- 知识图谱基础知识之一——人人都能理解的知识图谱
- VC中操作INI文件的API
- 【渝粤题库】陕西师范大学400006 公共关系学 作业(专升本)
- centos 安装tomcat_简单介绍Linux配置mysql,tomcat,Nginx 开机自启动的几个方式
- TensorFlow 之快速上手详解
- AI产品经理需要了解的数据知识:余弦相似度
- Idea搭建一个JavaWeb项目(一)
- 4.3一个“简陋”的打字程序
- JAVA常用的XML解析方法
- JVM Troubleshooting
- Object类中的wait()和notify()
- 《软件创富----共享软件创业之道》读后感
- 安装教程--010Editor
- 计算机游戏屏幕中,电脑屏幕上的游戏怎么录制
- android svg 线条动画教程,【Web动画】SVG 实现复杂线条动画
- 自车坐标系下的物体相对和绝对位置和速度计算
- vue-music 跨域获取QQ音乐歌单接口
热门文章
- 某乎上看到的专业技术解读
- Linux 安装WinUSB
- word使用的奇技淫巧
- 新手蓝牙耳机选购攻略,2021什么牌子蓝牙耳机不容易踩雷
- BIM算量与传统算量软件的对比和模型精准解决方案
- OpenGL 4 : 一个漂亮的心 For you, My Love
- 【UGP VR眼镜排行榜】2018VR眼镜眼镜哪个好?什么VR眼镜值得买?综合推荐十大热品
- No connected devices found; please connect a device, or see flutter.dev/setup for getting started in
- 稀里糊涂的攻防世界之easyRE1
- TCPIP详解Protocol 读书笔记(八) Traceroute程序