总结:独立开发 jar 包组件——功能主要是支持查询数据库的所有表数据
前言:开发完一个项目,必定总结,这次就将总结记录在博客,第一次开发组件 jar 包,包含前端,后台,中间遇到好多问题,这里一一描述。转载请注明出处: https://www.cnblogs.com/yuxiaole/p/9775016.html
github地址:yuleGH github
配置步骤详见 github。喜欢就star。如果需要 jar 包可留言。

一、背景
这两周由于开发过程中发现每个项目都会做一件事,那就是开发一些页面,用于查询某些单表的数据,不是面向用户的,只是便于我们排查线上问题,这样就不需要去提线上日志。
于是,便有了这个系统。这个系统的目标肯定是需要支持配置化、扩展性、独立性等。并且其他项目只需引入这个 jar 包,然后配置一下,就可以使用前端页面,类似阿里巴巴的 com.alibaba.druid 的 jar 包。
二、确定技术方向
使用 IDEA 开发。
实现:maven + servlet(3.x以上) + spring + mybatis + oracle
前端实现:vue + element ui + require.js 的 CDN 方式
三、实现的功能
1、代码 down 下来,可以打包为 jar 包供其他项目使用。
2、通过配置 json 文件实现指定表查,指定字段不查。
3、支持多数据源,与业务隔离。
4、页面支持导出功能。
5、页面支持查询条件动态组装(没有 sql 注入)。
6、现支持 oracle 数据库。
7、现支持 oracle 大字段类型的查询:Long、Blob、Clob
四、必须要实现的技术点
1、IDEA 如何打 jar 包?
参考另一篇博客: IDEA 构建为了打 jar 包的工程,包含 maven 打 jar 包的过程
2、其他项目如何能够访问 jar 包里面的主页 index.html?
这里是参考阿里巴巴 druid 的做法,使用一个 servlet 来处理。
在 servlet 中可以直接返回这个页面,也可以重定向到这个页面。
3、主页 index.html 中又如何访问 js、css、字体文件?
这里要么采用那个 servlet,在 servlet 中获取文件流给 response。
要么就是采用 servlet 3.x 以上的特性来直接访问 jar 包的静态文件。
参考另一篇博客: html 如何访问 jar 包里面的静态资源(js、css、字体等)
4、主页 index.html 中如何使用 ajax 访问后台获取数据?
这里采用的是,还是使用那个 servlet,只是 url 规定为 .json 结尾,然后在 servlet 中针对 .json 结尾的处理采用 json 方式来处理。
参考另一篇博客:servlet 中处理 json 请求,并访问 service 类,返回处理结果
5、spring 如何配置多数据源?并且和业务系统的数据源要隔离,不能相互影响。
参考另一篇博客:springmvc 配置多个数据源,并动态切换
6、oracle 中如何查询当前用户可以看到的表名、表对应的所有字段?
参考另一篇博客:oracle 中如何查询当前用户可以看到的表名、表对应的所有字段
7、前端如何实现动态渲染表格?
参考另一篇博客:vue + element ui 实现实现动态渲染表格
8、servlet 在处理 ajax 请求时,接收到前端参数,如何传递给 service 层?
参考另一篇博客:servlet 中处理 json 请求,并访问 service 类,返回处理结果
9、excel 导出使用 poi,但是 poi 版本不向下兼容,版本之间是由差异的,版本不同,编译容易通不过,如何处理?
我发现不同版本之间的差异主要在于:导出 excel 时对字体、样式等个性化设置的代码有差异。
所以我这里索性就将导出 excel 时所有个性化设置去掉,保证不同版本的 poi 都能编译通过。
因为这个组件主要用于线上排查问题用,不面向用户,所以导出 excle 的字体文本的个性化设置可以去掉,使用 poi 默认的设置就好。
五、过程中遇到的其他问题
1、解决访问 jar 包里面的字体报错:OTS parsing error: incorrect file size in WOFF header
2、解决:java 读取 resources 下面的 json 文件
4、解决:oracle+myBatis ResultMap 类型为 map 时返回结果中存在 timestamp 时使用 jackson 转 json 报错
5、解决:oracle+myBatis ResultMap 类型为 map 时,表字段类型有 Long/Blob/Clob 时报错
转载请注明出处: https://www.cnblogs.com/yuxiaole/p/9775016.html
总结:独立开发 jar 包组件——功能主要是支持查询数据库的所有表数据的更多相关文章
- spring jar 包 用处功能:
自己积累的: @ spring-context-3.0.5.RELEASE.jar :主要用于 spring程序中加载类 ApplicationContext 用.eq: ApplicationC ...
- json-lib-2.4-jdk15.jar所需全部JAR包.rar java jsoup解析开彩网api接口json数据实例
json-lib-2.4-jdk15.jar所需全部JAR包.rar java jsoup解析开彩网api接口json数据实例 json-lib-2.4-jdk15.jar所需全部JAR包.rar ...
- webService-axis开发jar包
开发最小jar包集: activation-1.1.jar axiom-api-1.2.13.jar axiom-dom-1.2.13.jar axiom-impl-1.2.13.jar axis2- ...
- Spring常用jar包的功能
jar名称 描述 spring-framework.jar spring框架比较完整的功能,core+aop+ioc+transaction spring-core.jar 基本上的核心工具类,一些u ...
- spring开发中commons-logging.jar包的功能
删除后程序会报错 Java.lang.NoClassDefFoundError 记录日志,通常和 log4j.jar共同使用 原因: 在 sun 开发 logger 前,apache 项目已经开发了 ...
- Maven本地安装JAR包组件
http://www.mkyong.com/maven/how-to-add-oracle-jdbc-driver-in-your-maven-local-repository/ mvn instal ...
- [功能集锦] 002 - mysql查询数据库字典+导出+样式一键整合至excel
写在前面: 因为工作时候经常遇到半路接手项目的情况,由于年代久远,数据库字典这块经常缺失.故写此篇,以便复用,也希望对大家有点帮助. 随笔内容不高级,如有不妥,不吝指正. 20190730-加了一些简 ...
- Spring学习之Jar包功能介绍(转)
spring.jar 是包含有完整发布模块的单个jar 包.但是不包括mock.jar, aspects.jar, spring-portlet.jar, and spring-hibernate2. ...
- spring.jar是包含有完整发布的单个jar 包,spring.jar中包含除了spring-mock.jar里所包含的内容外其它所有jar包的内容,因为只有在开发环境下才会用到 spring-mock.jar来进行辅助测试,正式应用系统中是用不得这些类的。
Spring jar包的描述:针对3.2.2以上版本 org.springframework spring-aop ——Spring的面向切面编程,提供AOP(面向切面编程)实现 org.spring ...
随机推荐
- jmeter 中 浮点数计算精度问题
jmeter 中 浮点数计算精度问题解决方法: 编写 beanshell 时使用 java.math.BigDecimal 方法构造,使用 BigDecimal 并且一定要用 String 来够造. ...
- 货车运输(最大生成树+倍增LCA)
看到第一篇题解的神奇码风--我决定发一篇码风正常的题解造福人类 这题的做法也非常经典,最大生成树\(+LCA\),相当于先贪心一下,在LCA的时候记录一下当前最小的边权 顺便吐槽一下最后一个测试点: ...
- zookeeper的安装与配置(单机和集群)
单机模式: 1.首先去官网下载zookeeper的包 zookeeper-3.4.10.tar.gz 2.用FTP上传到服务器或者Linux虚拟机的/usr/local目录下 3.解压文件tar -z ...
- 利用django-simple-captcha生成验证码
参考文档 http://django-simple-captcha.readthedocs.io/en/latest/ django支持1.7+ 1.安装 pip install django-sim ...
- 群辉6.1.7安装scrapy框架执行爬虫
只针对会linux命令,会python的伙伴, 使用环境为: 群辉ds3615xs 6.1.7 python3.5 最近使用scrapy开发了一个小爬虫,因为很穷没有服务器可已部署. 所以打起了我那台 ...
- Docker仓库(四)
一.什么是仓库 仓库就是集中存放镜像的地方,分为公共仓库和私有仓库,一个容易混淆的概念是注册服务器,实际上注册服务器是存放仓库的具体服务器,一个注册服务器可以有多个仓库,而每个仓库下面有多个镜像 二. ...
- 06-02 Java值传递、数据加密
值传递: /* 思考题1:看程序写结果,然后分析为什么是这个样子的.并画图讲解.最后总结Java中参数传递规律. Java中的参数传递问题: 基本类型:形式参数的改变对实际参数没有影响.基本类型传递的 ...
- odoo开发环境搭建(一):安装VMware Workstation
odoo开发环境搭建(一):安装VMware Workstation
- hander消息机制原理(looper轮询监听机制)
基本原理 线程中调用Handler.sendMsg()方法(参数是Message对象),将需要Main线程处理的事件 添加到Main线程的MessageQueue中,Main线程通过MainLoope ...
- 跨站脚本攻击(xss)理解
一 概念 攻击者不直接攻击受害者,而是利用受害者登陆的网站中的漏洞,对受害者进行攻击. 二 危害 由于js本身的限制,并不能直接对用户的电脑造成侵害,但是可以: 1. 获取用户的storage,c ...