springmvc+mybatis+mysql8+idea+jqgrid前端

一、背景

主要是为了学习jqgrid前端技术,熟练一下前后端交互数据

二、效果图

访问地址:http://localhost:8080/cr/views/jqGridDemo.jsp

三、代码展示

控制层JqGridController.java
@Controller
@RequestMapping("/jqgrid")
public class JqGridController {private String page=""; //当前显示页码private String rows=""; //每页显示的多少条数private Map<String, Object> map;@Autowiredprivate IJqGridService jqGridService;@RequestMapping(value = "/getRoleList", method = {RequestMethod.GET,RequestMethod.POST})@ResponseBodypublic Map<String, Object> getRoleList(String page, String rows){//分页查询map = jqGridService.getRoleListPage(page, rows);return map;}

service层

@Service("jqGridService")
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT)
public class JqGridServiceImpl implements IJqGridService {@Autowiredprivate IJqGridDao jqGridDao;@Overridepublic Map<String, Object> getRoleListPage(String page, String rows) {Map<String, Object> map = new HashMap<>();//总记录,已分页List<Role> roleListPage = jqGridDao.getRoleListPage((Integer.parseInt(page) - 1)*Integer.parseInt(rows), Integer.parseInt(rows));//总记录数countString totalRecordCount = jqGridDao.getRoleListCount();//总页码String totalPage = (Integer.parseInt(totalRecordCount) % Integer.parseInt(rows)==0?(Integer.parseInt(totalRecordCount) / Integer.parseInt(rows)+""):(Integer.parseInt(totalRecordCount) / Integer.parseInt(rows)+1+""));map.put("info", roleListPage);map.put("totalRecordCount", totalRecordCount);map.put("totalPage", totalPage);map.put("page", page);return map;}
}

dao层

public interface IJqGridDao {@Select("select * from sys_role order by order_num limit ${page},${rows}")List<Role> getRoleListPage(@Param("page") Integer page, @Param("rows") Integer rows);@Select("select count(*) from sys_role where 1=1")String getRoleListCount();
}

页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %><%String path = request.getContextPath();System.out.println("path="+path);String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";System.out.println("basePath="+basePath);
%>
<html>
<head><meta charset="UTF-8"><title>我是demo.html页面</title><link type="text/css" href="../css2/themes/base/jquery.ui.all.css" rel="stylesheet" /><!-- jQuery UI样式--><link rel="stylesheet" href="../css2/jquery-ui-1.8.2.custom.css"/><!-- jqGrid CSS--><link rel="stylesheet" type="text/css" media="screen" href="../jqgrid2/css/ui.jqgrid.css" /><link rel="stylesheet" type="text/css" href="../css2/themes/base/jquery.ui.datepicker.css"/><link type="text/css" rel="stylesheet" href="../css2/jquery.validator1.css"/><!-- jQuery库--><script type="text/javascript" src="../js2/jquery-1.7.2.min.js"></script><!-- jqGrid语言库--><script type="text/javascript" src="../jqgrid2/js/i18n/grid.locale-cn.js"></script><!--jqGrid库,目前最新版本3.6--><script type="text/javascript" src="../jqgrid2/js/jquery.jqGrid.min.js"></script><script type="text/javascript" src="../js2/jquery.bgiframe.js"></script><script type="text/javascript" src="../js2/jquery.validator.js"></script><script type="text/javascript" src="../js2/local/zh_CN.js"></script><script type="text/javascript" src="../ui2/jquery.ui.core.js"></script><script type="text/javascript" src="../ui2/jquery.ui.datepicker.js"></script><script type="text/javascript" src="../ui2/i18n/jquery.ui.datepicker-zh-CN.js"></script><script type="text/javascript" src="../ui2/jquery-ui.custom.js"></script><script src="../ui2/jquery.ui.button.js"></script>
</head>
<style>.ui-jqgrid .ui-jqgrid-htable th div {overflow: hidden;position: relative;height: 22px;}
</style>
<body>
<!--显示jqGrid内容-->
<table id="list1"></table><!--显示jqGrid分页-->
<div id="pager1"></div></body>
</html><script>jQuery().ready(function(){$("#list1").jqGrid({url:'<%=basePath%>jqgrid/getRoleList',datatype:"json",mtype: 'GET',colNames:['序号','角色名称','角色权限字符串','显示顺序','角色类型','备注'],colModel:[{name:'id',index:'id', width:75,align:"center"},{name:'roleName',index:'roleName',width:90},{name:'roleKey',index:'roleKey',width:100},{name:'orderNum',index:'orderNum',width:90},{name:'roleType',index:'roleType',width:90},{name:'remark',index:'remark',width:150,sortable:false}],jsonReader : {   			//jsonReader用于设置如何解析从Server端发回来的json数据。total:"totalPage",  	// json中代表页码总数的数据page:"page",		// json中代表当前页码的数据records:"totalRecordCount",	// json中代表数据行总数的数据root:"info",		// json中代表实际模型数据的入口repeatitems: false, // 如果设为false,则jqGrid在解析json时,会根据name来搜索对应的数据元素(即可以json中元素可以不按顺序);而所使用的name是来自于colModel中的name设定。id:"0"},rowNum:5,   			//用来指定每页显示记录数 默认是:20 后台可以使用:rows变量进行参数接收autowidth: true,		//用来自适应父容器rowList:[5,10,15],   	//用来指定下拉列表中每页显示条数  注意:是一个数组pager: jQuery('#pager1'),  //用来指定分页工具栏标签的id  注意:分页工具栏可以放在任意位置   使用方式: <div id="pager1"></div>    grid中设置:pager:"#pager1"sortname: 'id',				//用来指定使用哪个列作为排序列  注意:后台使用sidx接收排序列结果viewrecords: true,			//用来显示总记录数sortorder: "desc",			//排序caption:"jqgrid表格"     //表格标题}).navGrid('#pager1',{edit:false,add:false,del:false})})
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/192919.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

拥抱变化,良心AI工具推荐

文章目录 &#x1f4a5; 简介&#x1f344; 工具介绍&#x1f353; 功能特点&#x1f957; 使用场景&#x1f389; 用户体验&#x1f9e9; 下载地址&#x1f36d; 总结 &#x1f4a5; 简介 我是一名资深程序员&#xff0c;但薪资缺对不起资深两个字&#xff0c;为了生存&#x…

安装selenium+chrome详解

1、创建yaml文件 创建yaml文件,命名为:docker-compose-chrome.yaml,具体内容如下: version: "3.9" services:spiderdriver:image: selenium/standalone-chrome:114.0restart: alwayshostname: spiderdrivercontainer_name: spiderdriverdeploy:resources:limit…

使用Docker部署开源分布式任务调度系统DolphinScheduler

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 使用Docker部署开源分布式任务调度系统DolphinScheduler 前些天发现了一个巨牛的人工智能学习网…

【iOS】Bug调试

文章目录 前言一、定位编译错误二、设置与查看断点1.文件行断点设置2.符号断点设置3.Exception Breakpoint4.Constraint Error Breakpoint 三、调试工具四、输出窗口五、变量查看窗口六、查看线程七、LLDB调试工具1.p&#xff0c;po命令2.expr命令3.bt命令 前言 在我们的编码过…

Collection的其他相关知识

前置知识&#xff1a;可变参数 就是一种特殊参数&#xff0c;定义在方法 构造器的形参列表里&#xff0c;格式是&#xff1a;数据类型...参数名称&#xff1b; 可变参数的特点和好处 特点&#xff1a;可以不传数据给它&#xff1b;可以传一个或者同时传多个数据给它&#xff…

Vue3+nuxt+ts项目引入高德地图API实现步骤

看了好多相关的文章都没有完全贴合选用Vue3nuxtts框架的&#xff0c;也不太靠谱&#xff0c;只好自己踩坑实现了 首先去高德开放平台用自己的账号申请一个key&#xff0c;位置如下&#xff0c;申请好后保存好生成的key 我们使用vuemap/vue-amap&#xff0c;一个高德地图2.0版本…

阅读软件OmniReader Pro mac功能特色

OmniReader Pro mac是一款文字识别和阅读软件&#xff0c;它可以将印刷体和手写体的文字转换为数字文本&#xff0c;并将其朗读出来。该软件适用于视力受损、阅读困难、语言障碍等用户&#xff0c;可以帮助他们更加轻松地获取信息和阅读文本。 OmniReader Pro具有简洁直观的用户…

单细胞个性化细胞注释

关于单细胞中级的课程内容&#xff0c;前面已经有了三次直播。欢迎回看&#xff5e; 单细胞直播一理解seurat数据结构与pbmc处理流程 单细胞直播二从GSE104154中理解seurat结构 单细胞直播三seurat数据结构与数据可视化 本期主要内容 本期指哪打哪&#xff0c;自己选定细胞&…

java的四种内部类,从0讲清楚

什么是内部类&#xff1f; 为什么要学习内部类&#xff1f; 可以发现&#xff0c;发动机虽然跟汽车相关&#xff0c;但发动机不像车龄或颜色一样&#xff0c;只用一个变量就可以描述&#xff0c;而是要有发动机品牌&#xff0c;发动机年限&#xff0c;多个变量描述发动机。那么…

MATLAB 自抗扰控制 - Active Disturbance Rejection Control

系列文章目录 MATLAB 模型参考自适应控制 - Model Reference Adaptive Control 文章目录 系列文章目录前言一、控制器结构1.1 一阶逼近1.2 二阶逼近 二、指定控制器参数参考 前言 自抗扰控制 (ADRC) 是一种无模型控制方法&#xff0c;适用于为具有未知动态特性以及内部和外部…

Azure Machine Learning - 使用 Azure SDK 进行全文搜索

了解如何使用 Azure SDK 中的 Azure.Search.Documents 客户端库创建、加载和查询使用示例数据的搜索索引&#xff0c;实现全文搜索。 全文搜索使用 Apache Lucene 进行索引和查询&#xff0c;使用 BM25 排名算法对结果进行评分。 关注TechLead&#xff0c;分享AI全维度知识。作…

【Spring Boot 源码学习】ApplicationContextInitializer 详解

Spring Boot 源码学习系列 ApplicationContextInitializer 详解 引言往期内容主要内容1. 初识 ApplicationContextInitializer2. 加载 ApplicationContextInitializer3. ApplicationContextInitializer 的初始化 总结 引言 书接前文《初识 SpringApplication》&#xff0c;我们…

【傻瓜级JS-DLL-WINCC-PLC交互】6.​向PLC里面装载数据变量

思路 JS-DLL-WINCC-PLC之间进行交互&#xff0c;思路&#xff0c;先用Visual Studio创建一个C#的DLL控件&#xff0c;然后这个控件里面嵌入浏览器组件&#xff0c;实现JS与DLL通信&#xff0c;然后DLL放入到WINCC里面的图形编辑器中&#xff0c;实现DLL与WINCC的通信。然后PLC与…

使用String.valueOf()的坑

说明&#xff1a;记录一次使用String.valueOf()的坑&#xff0c;以下是一段有问题的代码&#xff1a; String count String.valueOf(listData.get(0).get(0).get("count");if (StringUtils.isBlank(count) || "0".equals(count)) {result.setResult(page)…

【bat】批处理脚本大全

目录 1.概述 2.变量 3.运算符 3.2.重定向运算符 3.3.多命名运算符 3.4.管道运算符 4.命令 4.1.基本命令 4.2.参数传递 4.3.查看脚本内容 4.4.注释 4.5.日期和时间 4.6.启动脚本 4.7.调用其他bat 4.8.任务管理 4.8.1.任务列表查看 4.8.2.任务终止 4.9.文件夹 …

美容院管理系统服务预约会员小程序效果如何

美容院在美业场景中需求度较高&#xff0c;尤其女性爱美悦己消费逐年增加&#xff0c;如清洁焕肤、祛皱抗衰、激光脱毛等美容项目都有不少需求者。 互联网深入美业行业多年&#xff0c;传统线下经营模式已经很难满足当今客户消费流程&#xff0c;如品牌寻找、服务预约、到店、…

Effective Java解读

Effective Java 第一章 引言第二章 创建和销毁对象第1条&#xff1a;用静态工厂方法代替构造器第2条&#xff1a;遇到多个构造器参数时要考虑使用构建器第3条&#xff1a;用私有构造器或者枚举类型强化Singletion属性第4条&#xff1a;通过私有构造器强化不可实例化的能力第5条…

pandas基础操作2

数据读取 我们想要使用 Pandas 来分析数据&#xff0c;那么首先需要读取数据。大多数情况下&#xff0c;数据都来源于外部的数据文件或者数据库。Pandas 提供了一系列的方法来读取外部数据&#xff0c;非常全面。下面&#xff0c;我们以最常用的 CSV 数据文件为例进行介绍。 …

【LeetCode:1423. 可获得的最大点数 | 滑动窗口】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

微前端实战:打造高效、灵活的前端应用架构

文章目录 一、微前端简介二、微前端的优势1. 高度模块化2. 独立部署3. 易于扩展4. 技术栈无关5. 独立升级 三、微前端的原理四、微前端案例思路《微前端实战》编辑推荐内容简介作者简介目录前言/序言 随着互联网行业的快速发展&#xff0c;前端应用的规模和复杂度也在不断增加。…