Ajax模拟视频点赞功能

前台

html 复制代码
<%--
  Created by IntelliJ IDEA.
  User: xx
  Date: 2023/9/4
  Time: 10:00
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script src="js/jquery-3.7.0.js"></script>
    <script>
        // 1.原始方式
        /*function like(){
           window.location.href = "likeServlet"
        }*/

        // 2.原生JS实现异步
        function like(){
            //获取XmlHttpRequest对象
            var xhr = new XMLHttpRequest();
            //设置请求
            xhr.open("get","likeServlet");
            //发送请求
            xhr.send();
            xhr.onreadystatechange = function (){
                //获取状态码
                if ( xhr.readyState== 4){
                    var msg = xhr.responseText;
                    document.getElementById("num").innerText = msg;
                }
            }
        }

        // 3.第一次封装
        /*$(function () {
            //点击事件
            $("#btn").click(function () {
                $.ajax({
                    url:"likeServlet",
                    data:null,
                    type:"get",
                    async:true,
                    dataType:"text",
                    success:function (msg) {
                        $("#num").text(msg);
                    }
                });
            });
        });*/

        // 4.第二次封装
        /*$(function (){
            $("#btn").click(function (){
                $.get("likeServlet",null,function (date) {
                    $("#num").text(date)
                },"text");
            });
        })*/
    </script>
</head>
<body>
<video src="" controls></video>
<input type="button" id="btn" onclick="like()" value="点赞"></input>当前点赞量为:
<span style="color: red" id = "num">
    ${count}
</span>
</body>
</html>

servlet

java 复制代码
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/likeServlet")
public class LikeServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //将获取的点赞了存储到ServletContext
        ServletContext servletContext = getServletContext();
        //获取当前点赞量
        Integer count =(Integer) servletContext.getAttribute("count");
        //如果是第一个点赞
        if (count == null){
            count = 1;
        } else {
            count++;
        }
        servletContext.setAttribute("count",count);
        /*原生js*/
        /*resp.sendRedirect("video.jsp");*/
        /*ajax*/
        PrintWriter writer = resp.getWriter();
        writer.print(count);
        writer.close();
    }
}
相关推荐
sheji34168 分钟前
【开题答辩全过程】以 婚纱影楼管理系统为例,包含答辩的问题和答案
java·eclipse
LuDvei10 分钟前
LINUX文件操作函数
java·linux·算法
全栈老石32 分钟前
手写一个无限画布 #1:坐标系的谎言
前端·canvas
葵续浅笑1 小时前
从Spring拦截器到Filter过滤器:一次报文修改加解密的填坑经验
java·后端·spring
XW01059991 小时前
4-11判断素数
前端·python·算法·素数
J2虾虾1 小时前
Spring Boot中使用@Scheduled做定时任务
java·前端·spring boot
Heo1 小时前
深入React19任务调度器Scheduler
前端·javascript·面试
一枚前端小姐姐1 小时前
Vue3 + Pinia 状态管理,从入门到模块化
前端·vue.js
boooooooom1 小时前
Vue3 nextTick 实现大变化:微任务优先,彻底搞懂渲染时机!
javascript·vue.js·面试
用户14436183400971 小时前
你不知道的JS上-(九)
前端·javascript