freemarker

[转载]java导出word的5种方式

喜夏-厌秋 提交于 2020-04-28 08:22:46
在网上找了好多天将数据库中信息导出到word中的解决方案,现在将这几天的总结分享一下。总的来说,java导出word大致有5种解决方案: 1:Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁。通过Jacob实现了在Java平台上对微软Office的COM接口进行调用。   优点:调用微软Office的COM接口,生成的word文件格式规范。   缺点:服务器只能是windows平台,不支持unix和linux,且服务器上必须安装微软Office。 2:Apache POI包括一系列的API,它们可以操作基于MicroSoft OLE 2 Compound Document Format的各种格式文件,可以通过这些API在Java中读写Excel、Word等文件。   优点:跨平台支持windows、unix和linux。   缺点:相对与对word文件的处理来说,POI更适合excel处理,对于word实现一些简单文件的操作凑合,不能设置样式且生成的word文件格式不够规范。 3:Java2word是一个在java程序中调用 MS Office Word 文档的组件(类库)。该组件提供了一组简单的接口,以便java程序调用他的服务操作Word 文档。 这些服务包括: 打开文档、新建文档、查找文字、替换文字,插入文字、插入图片、插入表格

freemarker生成静态页面中文乱码(固定中文和动态生成的中文都乱码)

杀马特。学长 韩版系。学妹 提交于 2020-04-27 02:24:22
现象: freemarker生成静态页面中文乱码(固定中文和动态生成的中文都乱码) 检查: 1,FreeMarkerConfigurer已经初始化, 设置属性UTF-8 < bean id ="freemarkerConfig" class ="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer" >    < property name ="templateLoaderPath" value ="/WEB-INF/ftl/" /> < property name ="defaultEncoding" value ="UTF-8" /> </ bean > 2,模版文件ftl文件已经设置头信息, 编码格式为UTF-8 < head > < meta charset ="utf-8" /> 3,使用记事本查看网页不乱码; 4,使用IE浏览器切换成GB2312编码, 显示正常 原因: 由于前期使用maven控制台中文乱码, 在idea中设置了maven的命令-Dfile.encoding=GB2312 解决方案1: 删掉idea中maven的设置-Dfile.encoding=GB2312 解决方案2: 创建流对象时设置字符集: Write out = new OutputStreamWriter

keycloak 自定义页面开发

*爱你&永不变心* 提交于 2020-04-26 17:42:06
1.开发方式 主题类型 Account - Account management Admin - Admin console Email - Emails Login - Login forms Welcome - Welcome page 创建主题 HTML templates (Freemarker Templates) Images Message bundles Stylesheets Scripts Theme properties 主题开发 严格按照文件目录,文件名称,文件格式,可选的继承父主题。 调整主题 继承父主题,选择性的覆盖或增加表单控件,更改样式,更改文字内容等。 完全覆盖开发 基于freemarker模板引擎及vue等当下流行纯前端技术。 找到原页面中出现的接口。 找到并理解原页面中出现的表达式及含义。 2.难点 难点在于找到并理解原页面中出现的表达式及含义。 挖掘模板引擎中realm.password表达式含义: 在login.ftl中有如下代码: <#if realm.password> <form id="kc-form-login" onsubmit="login.disabled = true; return true;" action="${url.loginAction}" method="post"> ............. <#if>

【react】兄弟组件的通信方式,传统非redux

别等时光非礼了梦想. 提交于 2020-04-26 06:04:07
很多用过redux开发的朋友们都知道,一般兄弟组件通信可以使用redux。 redux也是近期在挤时间学习中。可能也不是很懂,说不定是有错误的理解,若有。现在虽然自己搭建了一个react+router+redux的环境,但是还不知道应该怎么用好。因为是完全自己使用webpack从头开始搭建的环境,很多搭建步骤都是网上搜的,每篇文章都不全。各种报错。然后继续百度搜错误解决办法,才把问题一个个解决。 现在的环境完成度也相对好点了。但是每个组件中都要写上2个方法也是比较蛋疼的。 mapStateToProps和mapDispatchToProps,用于将reducer转化成组件的props 这样组件就可以通过this.props.state拿到所有公用的state, this.props.方法名就能拿到mapDispatchToProps中定义的方法,如:this.props.d2_1({type:"add"}) 但是有部分公司或项目并没有使用到redux和router。 就要使用一种全局变量的事件监听的形式,最好就是做成一个公用方法来,方便后来调用。 //事件 var E={ //自定义事件集合 listeners: [], //自定义事件监听 listenner: { /** * 添加、注册 * @param ch {String} 事件(频道)名称 * @param

Spring架构揭秘-AOP

喜你入骨 提交于 2020-04-18 01:52:41
1、AOP概述 2、Spring AOP原理 3、Spring AOP架构解析 一、AOP概述 Java程序员在写代码的时候通常都是使用新建对象类来描述业务特性,然后通过对象的继承、组合、扩展等手段来实现业务需求,这是典型的面相对象的编程方式即OOP,总的来说OOP是一种由上至下的竖向编程模式。 在实际的编程中,通常会遇到某些方法里会使用到相同的逻辑,比如记方法执行日志,这些代码在OOP中没法与业务代码完全的解藕,使得方法代码就有了混合逻辑,不符合编程的单一责任原则。如果可以把这块逻辑代码解藕,通把两种逻辑的代码区分开,然后在运行期再合起来就完美了,就相当于在运行期横向的添砖加瓦,也就是面向切面横向的编程即AOP。 二、Spring AOP原理 实现AOP的主要技术就是动态代理 ,动态代理的原理这里就不细说了,主要是来看看Spring AOP的实现原理 下载 。我们知道通常使用的动态代理技术有JDK的和CGLIB的,其中JDK的动态代理只能代理接口级别,而CGLIB则还可以代理类级别,在Spring中结合了这两者,使得其更灵活。 在细说Spring AOP原理之前先来看看以下几个重要的概念: a、连接点(JoinPoint):程序执行的莫个特定位置,比如类初始化之前,类初始化之后,方法执行之前,方法执行之后,异常抛出之后等等。 b、切点(PointCut):指定程序执行的位置

MyBatis-Plus Generator oracle 没有错误 没有文件

◇◆丶佛笑我妖孽 提交于 2020-04-17 23:27:54
表名字小写 ###### strategy.setInclude( "DC_SE_TEST" ); pom.xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.3.1.tmp</version> </dependency> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.30</version> </dependency> public class MabatisPlusGenerator { public static void main(String[] args) { // 代码生成器 AutoGenerator mpg = new AutoGenerator(); // 全局配置 GlobalConfig gc = new GlobalConfig(); gc.setOutputDir("d:/src/main/java"); gc.setAuthor("jobob"); gc.setOpen(false); // gc.setSwagger2(true); 实体属性

SpringBoot三步整合Thymeleaf模板技术

别等时光非礼了梦想. 提交于 2020-04-17 20:41:33
戏如人生,却不是人生;人生如戏,却也不是戏。 文章目录 前言 Thymeleaf 整合部分 Thymeleaf的基本语法 常量和变量的拼接 存值 取值 直接取值 通过标签取值 从域对象中取值 条件判断 if 判断 unless 判断 三元判断 循环 常用的方法 前言 关于如何搭建SpringBoot工程以及开启Web功能, 可以查看我的这篇博客: 用Spring Initializr快速构建SpringBoot及整合MVC Thymeleaf 都2200年了,还在用JSP吗?但可惜Spring官方支持的服务的渲染模板中,并不包含jsp,而是Thymeleaf和Freemarker等。而 Thymeleaf与SpringMVC的视图技术,及SpringBoot的自动化配置集成非常完美,几乎没有任何成本 。而且现在越来越多的公司都实行前后端分离了,所以还是跟着官方走吧! 整合部分 1.在依赖管理文件 pom.xml 中添加Thymeleaf的起步依赖 spring-boot-starter-thymeleaf : < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-thymeleaf </ artifactId > </

更改Web根目录

微笑、不失礼 提交于 2020-04-16 16:48:38
【推荐阅读】微服务还能火多久?>>> 配置缓存 默认情况下,静态处理程序将设置缓存标头以使浏览器能够有效地缓存文件。 Vert.x的Web设置标题 cache-control , last-modified 和 date 。 cache-control max-age=86400 默认设置为。这相当于一天。 setMaxAgeSeconds 如果需要,可以配置它 。 如果浏览器发送带有 if-modified-since 标头的GET或HEAD请求,并且该资源自该日期起未被修改, 304 则返回状态,告知浏览器使用其本地缓存的资源。 如果不需要处理缓存头,则可以禁用它 setCachingEnabled 。 启用缓存处理后,Vert.x-Web将缓存内存中资源的最后修改日期,这样可以避免磁盘命中每次都检查实际的上次修改日期。 缓存中的条目具有到期时间,在此之后,将再次检查磁盘上的文件并更新缓存条目。 如果您知道您的文件永远不会在磁盘上更改,那么缓存条目将永远不会过期。这是默认值。 如果您知道在服务器运行时您的文件可能在磁盘上发生更改,那么您可以将只读文件设置为false setFilesReadOnly 。 要在任何时候启用可以在内存中缓存的最大条目数,您可以使用 setMaxCacheSize 。 要配置可以使用的缓存条目的到期时间 setCacheEntryTimeout 。

Freemarker + XML 导出Word

て烟熏妆下的殇ゞ 提交于 2020-04-14 10:24:45
【推荐阅读】微服务还能火多久?>>> 1、创建Word模板文档,如 2、设置Word模板的常量值(以Map形式输出,这里设置其key值),如 3、将Word模板文档另存为XML格式,如 4、将xml文件后缀名,转为ftl,即andy.ftl。ftl文件可以用“ foxe_CHS.exe ”工具打开。 这里要注意两点:①确定你定义的key没有被‘分解’,如果被分解,要删除中间的部分。正确的写法是在“<w:t>”,"</w:t>"之间是你定义的key值,如本例中的${username}。 ②如果你的模板中有图片文件,系统会在“<w:binData>",“</w:binData>"中间生成 很长很长的二进制(看不懂的)代码。正确的写法是,只需要把那些看不懂的代码删掉,写成你定义的key 即可,如本例中的${image}。 以上步骤做完,就可以导出Word文档了。具体代码如下: /** * @包名 :com.andy.freemarker<br> * @文件名 :ReportWord.java<br> * @类描述 :<br> * @作者 :Andy.wang<br> * @创建时间 :2014-6-17上午11:49:14<br> * @更改人 :<br> * @更改时间 :<br> */ package com.andy.freemarker; import java.io

Spring Boot原理剖析

…衆ロ難τιáo~ 提交于 2020-04-13 09:02:17
我们了解到 Spring Boot 提供了很多开箱即用的依赖模块,开发者只要在 Maven 的 pom 文件中添加相关依赖后,Spring Boot 就会针对这个应用自动创建和注入需要的 Spring Bean 到上下文中。 这篇,我们以 FreeMarker 的自动配置为例,重点讲解工作原理与加载过程。因为 FreeMarker 相对而言比较简单,Spring Boot 源码中只有三个类,所以作为案例相对而言比较好理解。 EnableAutoConfiguration 帮助我们做了什么 你还记得 @EnableAutoConfiguration 注解么? 我们先来回顾下。 @RestController @EnableAutoConfiguration @ComponentScan(basePackages = { "com.lianggzone.springboot" }) public class WebMain { public static void main(String[] args) throws Exception { SpringApplication.run(WebMain.class, args); } } 那么,现在我们剖析下 @EnableAutoConfiguration 的源码。 这里,关键在于 @Import 注解导入的