Ajax+jQuery+bootstrap+Java实现异步点赞功能,并限制点击次数

简介:

在很多的网站上有很多不同的点赞,我不知道他们是怎么实现的,下面我来分享一下我写的点赞实现,共大家参考下,

这是我在一个项目抽取的代码,可能有些样式会发生变化,但是功能不会影响。


网页代码:

这个是根据数据库中是否可以点赞来限制能不能点的,strlist是从java后台返回的一个请求。在这里取出点赞数和文章点赞的编号做为参数到Ajax上

<span class="pull-right">
    <c:choose>
        <c:when test="${strlist.dzFlag==1}">
            <a href="javascript:void(0)" onclick="praise('${strlist.id}','${strlist.dzCount}')"
            class="btn btn-default btn-xs">
                赞
                <span id="praiseNo${strlist.id}">
                    ${strlist.dzCount}
                </span>
            </a>
        </c:when>
        <c:otherwise>
            <a href="javascript:void(0)" class="btn btn-default btn-xs">
                赞
                <span id="strategyPraiseNo">
                    ${strlist.dzCount}
                </span>
            </a>
        </c:otherwise>
    </c:choose>
</span>

Ajax请求的Js脚本:

<script type="text/javascript">
    function praise(recordNo, praiseCount) {
        $.ajax({
            url: '${ctx}/country/pointPraise',
            type: 'POST',
            data: {
                'recordNo': recordNo
            },
            dataType: "JSON",
            success: function(d) {
                if (d.success) {
                    var strategyPraiseNo = parseInt(praiseCount) + 1;
                    $('#praiseNo' + recordNo).html(strategyPraiseNo)
                }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                bootbox.alert("无法连接服务器:" + textStatus);
            }
        });
    }
</script>

Java代码:

Dao类接口层


<pre name="code" class="java">/**
	 * @Title: updateDzCount 
	 * @Description:点击赞后更改赞的数量
	 * @param mapNo 
	 * @author CHENJH
	 * @date 2015年6月27日
	 */
	public void updateDzCount(HashMap<String, Object> mapNo);
 

Dao类实现层

        @Override
	public void updateDzCount(HashMap<String, Object> mapNo) {
		this.update("updateDzCount", mapNo);
	}

service类接口层

/**
	 * @Title: updateDzCount
	 * @Description:点击赞后更改赞的数量
	 * @param recordNo
	 * @author CHENJH
	 * @date 2015年6月25日
	 */
	public boolean updateDzCount(HashMap<String, Object> mapNo);

service类实现层

@Override
	public boolean updateDzCount(HashMap<String, Object> mapNo) {
		logger.info("***** BlogServiceImpl.updateDzCount() method begin*****");
		boolean flag = true;
		try {
			blogDao.updateDzCount(mapNo);
		} catch (Exception e) {
			logger.error("------updateDzCount error:", e);
			e.printStackTrace();
			return false;
		}
		logger.info("***** BlogServiceImpl.updateDzCount() method end*****");
		return flag;

	}

Action类处理层代码

/**
	 * @Title: pointPraise
	 * @Description: 修改文章点赞
	 * @author CHENJH
	 * @date 2015年6月27日
	 */
	@SkipCheck
	@Action("pointPraise")
	public void pointPraise() {
		String recordNo = getParam("recordNo");// 获取文章信息编号
		HashMap<String, Object> mapNo = getSessionValue("recordNoMap");// 得到文章点赞集合
		Boolean bool = false;
		if (mapNo != null) {
			if (mapNo.get(recordNo) == null) {// 判断集合中是否存在改编号点赞
				mapNo.put(recordNo, recordNo);
				bool = true;
			}
		} else {// 未进行点赞
			mapNo = new HashMap<String, Object>();
			mapNo.put(recordNo, recordNo);
			setSessionAttr("recordNoMap", mapNo);
			bool = true;
		}
		if (bool) {// 可以点赞
			mapNo.put("recordNo", recordNo);
			// 点赞更新值
			bool = blogService.updateDzCount(mapNo);
		}
		outputJsons("success", bool);

	}

MyBatis3映射文件SQL语句

<!--文章点赞后修改数量-->
<update id="updateDzCount" parameterType="map">
	 update TAB_攻略表 set
       	点赞次数=((select 点赞次数 from TAB_攻略表 where 记录编号 = #{recordNo,jdbcType=VARCHAR})+1)
    	where 记录编号 = #{recordNo,jdbcType=VARCHAR} 
</update>


注:项目采用Maven开发,

this.update("updateDzCount", mapNo);
上采用了封装的。




目录
相关文章
|
Java
探索Java新境界!异步+事件驱动,打造响应式编程热潮,未来已来!
【8月更文挑战第30天】在现代软件开发中,系统响应性和可扩展性至关重要。Java作为主流编程语言,提供了多种机制如Future、CompletableFuture及事件驱动编程,有效提升应用性能。本文探讨Java异步编程模型与事件驱动编程,并介绍响应式模式,助您构建高效、灵活的应用程序。
206 3
|
Java
Java如何标记异步方法
【8月更文挑战第13天】Java如何标记异步方法
220 1
|
消息中间件 Java Kafka
如何在Java中实现异步消息处理?
如何在Java中实现异步消息处理?
|
监控 Java
java异步判断线程池所有任务是否执行完
通过上述步骤,您可以在Java中实现异步判断线程池所有任务是否执行完毕。这种方法使用了 `CompletionService`来监控任务的完成情况,并通过一个独立线程异步检查所有任务的执行状态。这种设计不仅简洁高效,还能确保在大量任务处理时程序的稳定性和可维护性。希望本文能为您的开发工作提供实用的指导和帮助。
465 17
|
JavaScript Java 中间件
Java CompletableFuture 异步超时实现探索
本文探讨了在JDK 8中`CompletableFuture`缺乏超时中断任务能力的问题,提出了一种异步超时实现方案,通过自定义工具类模拟JDK 9中`orTimeout`方法的功能,解决了任务超时无法精确控制的问题,适用于多线程并行执行优化场景。
420 0
JAVA并发编程系列(13)Future、FutureTask异步小王子
本文详细解析了Future及其相关类FutureTask的工作原理与应用场景。首先介绍了Future的基本概念和接口方法,强调其异步计算特性。接着通过FutureTask实现了一个模拟外卖订单处理的示例,展示了如何并发查询外卖信息并汇总结果。最后深入分析了FutureTask的源码,包括其内部状态转换机制及关键方法的实现原理。通过本文,读者可以全面理解Future在并发编程中的作用及其实现细节。
|
前端开发 JavaScript Java
Ajax进行异步交互:提升Java Web应用的用户体验
Ajax 技术允许在不重载整个页面的情况下与服务器异步交换数据,通过局部更新页面内容,极大提升了 Java Web 应用的响应速度和用户体验。本文介绍 Ajax 的基本原理及其实现方式,包括使用 XMLHttpRequest 对象发送请求、处理响应数据,并在 Java Web 应用中集成 Ajax。此外,还探讨了 Ajax 如何通过减少页面刷新、实时数据更新等功能改善用户体验。
263 3
|
前端开发 JavaScript Java
java实现异步回调返回给前端
综上,Java中实现异步回调并将结果返回给前端是一项涉及后端异步处理和前端交互的综合任务。在实际项目中,开发人员需要根据应用需求和性能预期选择合适的异步模型与工具,并进行适当的配置和优化。
900 3
|
JavaScript Java
点击按钮,向下添加目录。Java script+jQuery写法
点击按钮,向下添加目录。Java script+jQuery写法
162 1
|
前端开发 Java UED
java实现异步回调返回给前端
通过以上的方式,可以优雅地在Java中实现异步回调并将结果返回给前端,大大提升了应用程序的响应能力和用户体验。
868 1