前言:开发完一个项目,必定总结,这次就将总结记录在博客,第一次开发组件 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 文件

  3、解决:jsp 页面不全,response 内容不完整

  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 包组件——功能主要是支持查询数据库的所有表数据的更多相关文章

  1. spring jar 包 用处功能:

    自己积累的: @   spring-context-3.0.5.RELEASE.jar :主要用于 spring程序中加载类 ApplicationContext 用.eq: ApplicationC ...

  2. 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  ...

  3. 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- ...

  4. Spring常用jar包的功能

    jar名称 描述 spring-framework.jar spring框架比较完整的功能,core+aop+ioc+transaction spring-core.jar 基本上的核心工具类,一些u ...

  5. spring开发中commons-logging.jar包的功能

    删除后程序会报错 Java.lang.NoClassDefFoundError 记录日志,通常和  log4j.jar共同使用 原因: 在 sun 开发 logger 前,apache 项目已经开发了 ...

  6. Maven本地安装JAR包组件

    http://www.mkyong.com/maven/how-to-add-oracle-jdbc-driver-in-your-maven-local-repository/ mvn instal ...

  7. [功能集锦] 002 - mysql查询数据库字典+导出+样式一键整合至excel

    写在前面: 因为工作时候经常遇到半路接手项目的情况,由于年代久远,数据库字典这块经常缺失.故写此篇,以便复用,也希望对大家有点帮助. 随笔内容不高级,如有不妥,不吝指正. 20190730-加了一些简 ...

  8. Spring学习之Jar包功能介绍(转)

    spring.jar 是包含有完整发布模块的单个jar 包.但是不包括mock.jar, aspects.jar, spring-portlet.jar, and spring-hibernate2. ...

  9. 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 ...

随机推荐

  1. 全球第一开源ERP Odoo操作手册 数据库简介

    1.3 数据库简介 每一个独立核算的企业都有一套相互关联的账簿体系, 把这一套完整的账簿体系建立在计算机系统中就称为一个数据库. 一般一个企业只用一个数据库. 如果企业有几个下属的独立核算的实体,也可 ...

  2. vue项目常见需求(项目实战笔记)

    一.起步 1.引入reset.css解决手机之间不同分辨率的问题(reset.css为别人封装的css文件) import './assets/styles/reset.css' 使用方式 1rem= ...

  3. 实验1 C语言开发环境使用和数据类型、运算符、表达式

    ♦ 实验结论 PART 1 验证性内容 问题: 1.结尾没有加“:”时回车到下一行的时候再输入下一行的语言首字对齐方式会发生变化,可以对上一行进行检查. (这一点需要在不同软件里面试一下,在机房里的软 ...

  4. MyEclipse 编写 JSP 代码时很卡的解决办法

    在网上看到很多方法,都是尝试过,个人感觉都没有说到重点,所以收效甚微. 后来自己总结了一下: 我们都是习惯在MyEclipse 工具,双击jsp 文件打开进行编辑.这时,工具会打开窗口的 Previe ...

  5. 02-01 Java关键字、标识符、注释、常量和进制问题、变量和数据类型

    1:关键字 (1)被Java语言赋予特定含义的单词 (2)特点: 全部小写. (3)注意事项: A:goto和const作为保留字存在. B:类似于Notepad++这样的高级记事本会对关键字有特殊颜 ...

  6. google浏览器高清壁纸保存

    谷歌浏览器 扩展程序里边 有一个主题壁纸 好多不错的,并且是高清大图!!! 主题应用市场: https://chrome.google.com/webstore/category/themes?hl= ...

  7. VM虚拟机-Ubuntu server- 桥接模式网络配置

    问题描述: 在Ubuntu虚拟机安装完毕之后,网络连接采用桥接模式,对虚拟机的eth0网卡进行静态IP设置,参数配置没有问题,但网络一直没有连接成功:即:无法实现本地主机连通虚拟机(ping不通该虚拟 ...

  8. 前端安全 -- XSS攻击

    XSS漏洞是最广泛.作用最关键的web安全漏洞之一.在绝大多数网络攻击中都是把XSS作为漏洞链中的第一环,通过XSS,黑客可以得到的最直接利益就是拿到用户浏览器的cookie,从而变相盗取用户的账号密 ...

  9. RabbitMQ AMQP (高级消息队列协议)

    目录 RabbitMQ AMQP (高级消息队列协议) Message Queue 简介 概念 基本组成 场景及作用 AMQP简介 模型架构 基础组件 AMQP-RabbitMQ 简介 模型 特性 参 ...

  10. 【Java初探03】——流程控制语句

    做任何事情都应当遵守一定的原则,程序设计也是如此,需要有流程控制语言来实现与用户的交流.流程控制对于任何一门编程语言来说都是至关重要的,它提供了控制程序步骤的基本手段,如果没有流程控制语句,整个程序将 ...