当前位置: 首页 > news >正文

全面解锁:通过JSP和Ajax实现钉钉签到数据展示及部门筛选功能

要在JSP页面中调用钉钉的签到接口,并将签到数据展示在页面上,同时提供部门筛选功能,你可以按照以下步骤操作:

  1. 准备钉钉API

    • 你需要首先获取钉钉开放平台的API凭证(如access_token)。请参考钉钉开放平台的文档来获取这些信息:钉钉开发者文档
  2. 后端代码:调用钉钉API

    • 在你的JSP项目的后端,通过一个Servlet来调用钉钉的签到接口,并将数据返回给前端页面。
  3. 前端代码:展示签到数据

    • 使用HTML和Ajax来调用后端的Servlet,获取签到数据并展示在页面上,同时提供部门筛选功能。

以下是一个完整的示例:

后端:Servlet代码

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.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;@WebServlet("/GetDingSignInData")
public class GetDingSignInData extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String accessToken = "YOUR_ACCESS_TOKEN";String departmentId = request.getParameter("departmentId");String apiUrl = "https://oapi.dingtalk.com/attendance/list?access_token=" + accessToken;URL url = new URL(apiUrl);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setRequestMethod("POST");conn.setRequestProperty("Content-Type", "application/json");conn.setDoOutput(true);String jsonInputString = "{\"department_id\": \"" + departmentId + "\"}";try(OutputStream os = conn.getOutputStream()) {byte[] input = jsonInputString.getBytes("utf-8");os.write(input, 0, input.length);           }int status = conn.getResponseCode();Scanner scanner;if (status > 299) {scanner = new Scanner(conn.getErrorStream());} else {scanner = new Scanner(conn.getInputStream());}StringBuilder jsonResponse = new StringBuilder();while (scanner.hasNext()) {jsonResponse.append(scanner.nextLine());}scanner.close();response.setContentType("application/json");response.getWriter().write(jsonResponse.toString());}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}
}

前端:JSP页面代码

<!DOCTYPE html>
<html>
<head><title>钉钉签到数据</title><script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script><script type="text/javascript">function fetchSignInData() {var departmentId = $('#departmentId').val();$.ajax({url: 'GetDingSignInData',type: 'POST',data: { departmentId: departmentId },success: function(response) {var signInData = JSON.parse(response);var html = '<table border="1"><tr><th>姓名</th><th>签到时间</th><th>签到地点</th></tr>';$.each(signInData.recordresult, function(index, record) {html += '<tr>';html += '<td>' + record.user_name + '</td>';html += '<td>' + record.user_check_time + '</td>';html += '<td>' + record.user_check_location + '</td>';html += '</tr>';});html += '</table>';$('#signInData').html(html);},error: function(error) {console.log("Error: ", error);}});}</script>
</head>
<body><h1>钉钉签到数据</h1><div><label for="departmentId">部门ID: </label><input type="text" id="departmentId" name="departmentId"><button οnclick="fetchSignInData()">查询</button></div><div id="signInData"></div>
</body>
</html>

说明

  1. Servlet部分

    • GetDingSignInData Servlet接收前端发送的请求,调用钉钉签到API,并将结果返回给前端。
    • access_token需要通过钉钉开放平台获取。
  2. JSP页面部分

    • 通过表单输入部门ID,并点击按钮发送Ajax请求到Servlet。
    • 成功获取签到数据后,使用JavaScript将数据展示在表格中。

这个示例提供了一个基本的实现方法,可以根据具体需求进行扩展和优化。

http://www.lryc.cn/news/411846.html

相关文章:

  • LLM应用-prompt提示:让大模型总结生成PPT
  • 安全防护软件的必要性:从微软蓝屏事件谈起
  • 解开基于大模型的Text2SQL的神秘面纱
  • 对象转化成base64-再转回对象
  • vue运行或打包报错 “‘node --max-old-space-size=10240“‘ 不是内部或外部命令
  • 反爬虫限制:有哪些方法可以保护网络爬虫不被限制?
  • 『 Linux 』基于阻塞队列的生产者消费者模型
  • vite+typescript项目 报错:找不到模块“./*.vue”或其相应的类型声明——解决方案
  • 连锁企业组网的优化解决方案
  • 网络通信---UDP
  • 从零开始学习网络安全渗透测试之基础入门篇——(四)反弹SHELL不回显带外正反向连接防火墙出入站文件上传下载
  • Nginx(1)
  • C# 构建观测者模式(或者为订阅者模型)
  • MyBatis入门如何使用操作数据库及常见错误(yml配置)
  • 大数据信用查询什么样的平台比较靠谱?
  • 后端程序员常犯的错误-本地缓存相关bug和技术思考
  • 【收集表单数据】
  • 【前端面试】九、框架
  • 水泥电阻在电源电路中的作用
  • 报销管理软件怎么选?主流的10款对比
  • 人工智能对就业产生怎样的影响?
  • Vue Router 路由守卫详解
  • Android 10.0 Launcher 启动流程
  • OPenCV高级编程——OpenCV视频读写及录制技术详解
  • jenkins获取sonarqube质量门禁结果
  • 【AI-12】浅显易懂地说一下损失函数
  • Python和java中super的使用用法(有点小语法上的差距,老忘就在这里置顶了)
  • 在 QML 中使用 C++ 类和对象
  • 什么是接口?
  • 传统自然语言处理(NLP)与大规模语言模型(LLM)详解