当前位置: 首页 > 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将数据展示在表格中。

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • TypeScript 迭代器和生成器详解
  • Python venv 虚拟环境
  • kafka从浅入深
  • #进阶:轻量级ORM框架Dapper的使用教程与原理详解
  • 基于MFC对话框吸管实验
  • 嵌入式初学-C语言-练习三
  • 【51单片机仿真】基于51单片机设计的整数/小数计算器系统仿真源码文档——文末资料下载
  • Leetcode第136场双周赛题解(c++)
  • 云原生应用程序简介
  • 《计算机网络》(第8版)第1章 概述 复习笔记
  • 【JavaScript】栈功能(先进后出)
  • WebSocket 协议介绍
  • 谷粒商城实战笔记-103~104-全文检索-ElasticSearch-Docker安装ES和Kibana
  • 什么是嵌入式
  • uniapp中实现语音识别(app+小程序)
  • 深入了解以太坊
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 11111111
  • nfs客户端进程变D,延伸linux的lock
  • nginx 配置多 域名 + 多 https
  • uva 10370 Above Average
  • Vue 重置组件到初始状态
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 利用jquery编写加法运算验证码
  • 使用权重正则化较少模型过拟合
  • 学习JavaScript数据结构与算法 — 树
  • 因为阿里,他们成了“杭漂”
  • 在Unity中实现一个简单的消息管理器
  • FaaS 的简单实践
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • ​力扣解法汇总946-验证栈序列
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • (4)事件处理——(7)简单事件(Simple events)
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (JS基础)String 类型
  • (STM32笔记)九、RCC时钟树与时钟 第二部分
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (七)Java对象在Hibernate持久化层的状态
  • (三)elasticsearch 源码之启动流程分析
  • (十) 初识 Docker file
  • (一)Dubbo快速入门、介绍、使用
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转)Mysql的优化设置
  • (自用)交互协议设计——protobuf序列化
  • .net refrector
  • .NET 中创建支持集合初始化器的类型
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .NET建议使用的大小写命名原则