freemarker

【ME

99封情书 提交于 2020-03-02 19:32:35
Sprring + Email 1. pom.xml <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <!-- <version>1.6.2</version> --> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> </dependency> 2. 编辑:mail.properties文件中相关值 mail.smtp.user= mail.smtp.from= mail.smtp.password= 3. Freemarker不显示对象的属性值的原因 3.1 属性没有getter方法 3.2 对象是内部类的对象,最后变成普通的类就可以 4. 测试用例 TestMailActuator package net.liuzd.java.mail.actuator; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io

freemarker默认escape html 防范xss

女生的网名这么多〃 提交于 2020-03-02 19:16:26
freemarker 有html escape 方法,但是框架没有地方可以配置默认escape 1.<#escape>指令 2.<xxx?html>内建函数 方法一、 网上比较多的是通过TemplateLoader,给加载的template文件2头套 <#escape> <#escape x as x?html> your template code </#escape> 参考: http://techdiary.peterbecker.de/2009/02/defending-against-xss-attacks-in.html 但是现在我们应用的对freemarker做了扩展,一个页面分3个部分,一个layout、一个view、多个control。 多次render才到最终结果。要控制比较麻烦配置,也不友好。 方法二 改源码的$变量、默认全部转义、对固定的扩展的layout、一个view、多个control,配置正则原义输出。 变量是string类型的时候,用了xxx?string作为原义输出的内建函数。 缺点:比较暴力,修改了DollarViable源码,后续freemarker有升级要跟随修改 /** * The original code * env.getOut().write(escapedExpression.getStringValue(env)); */

freemarker 读取字符串模板,(非文件)

若如初见. 提交于 2020-02-29 10:01:14
最近在做个一个规则匹配,从我多年使用freemarker 的经验决定使用freemarker来做,基于我需要很多规则模板定义,每个规则单独写一个文件太麻烦,于是我感觉freemarker 应该可以使用字符串作为模板,这样我就可以在一个xml定义很多模板,查了查网上资料 大致都是更改templateLoader ,代码如下 package com.venustech.generate; import freemarker.cache.StringTemplateLoader; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; import java.io.IOException; import java.io.StringWriter; import java.io.Writer; import java.util.HashMap; import java.util.Map; /** * Created with IntelliJ IDEA. * User: skyline{http://my.oschina.net/skyline520} * Date: 13-1-9 * Time:

Java模板引擎 FreeMarker

我是研究僧i 提交于 2020-02-28 17:27:57
FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序 虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据(如下图) FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件 FreeMarker与容器无关,因为它并不知道HTTP或Servlet;FreeMarker同样可以应用于非Web应用程序环境 FreeMarker更适合作为Model2框架(如Struts)的视图组件,你也可以在模板中使用JSP标记库 FreeMarker是免费的 而且你还可以通过 Eclipse的插件 来编辑FreeMarker,经过验证,FreeMarker 最好的 Eclipse 编辑插件是 JBoss Tools 。 FreeMarker 特性 1、通用目标 能够生成各种文本:HTML、XML、RTF、Java源代码等等 易于嵌入到你的产品中:轻量级;不需要Servlet环境 插件式模板载入器:可以从任何源载入模板,如本地文件、数据库等等 你可以按你所需生成文本:保存到本地文件;作为Email发送;从Web应用程序发送它返回给Web浏览器 2、强大的模板语言 所有常用的指令

FreeMarker循环变量内建函数

て烟熏妆下的殇ゞ 提交于 2020-02-28 12:59:00
这些内建函数只能用于 list 和 items 指令 的循环变量 (也可以用于已经废弃的 foreach 指令)。 下面是一些说明( loopVar ?index 在可以列表的值中进行迭代,返回从0开始的索引): <#-- Note: x is a loop variable --> <#list ['a', 'b', 'c'] as x> ${x?index} </#list> 0 1 2 当 list 指令不指定循环变量时, 这些内建函数就作用于 items 指令的循环变量: <#list ['a', 'b', 'c']> <ul> <#items as x> <li>${x?index}</li> </#items> </ul> </#list> 循环变量内建函数仅仅用于循环变量的 名字 , 所以它们可以识别相关进行的迭代。它们不读取循环变量的 值 。因此,这就会有解析错误: <#list ['a', 'b', 'c'] as x> <#assign y = x> ${y?index} <#-- ERROR: y isn't a loop variable --> </#list> counter Note: 该内建函数从 FreeMarker 2.3.23 版本开始可用。 返回当前迭代(由循环变量名称识别)从1开始的索引。 <#list ['a', 'b', 'c'] as

前后端分离概述

孤街醉人 提交于 2020-02-28 07:54:53
背景 前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础。这个步骤是系统架构从猿进化成人的必经之路。 核心思想是前端HTML页面通过AJAX调用后端的RESTFUL API接口并使用JSON数据进行交互。 Web服务器:一般指像Nginx,Apache这类的服务器,他们一般只能解析静态资源; 应用服务器:一般指像Tomcat,Jetty,Resin这类的服务器可以解析动态资源也可以解析静态资源,但解析静态资源的能力没有web服务器好; 一般都是只有web服务器才能被外网访问,应用服务器只能内网访问。 以前的Java Web项目大多数都是Java程序员又当爹又当妈,又搞前端,又搞后端。随着时代的发展,渐渐的许多大中小公司开始把前后端的界限分的越来越明确,前端工程师只管前端的事情,后端工程师只管后端的事情。正所谓术业有专攻,一个人如果什么都会,那么他毕竟什么都不精。大中型公司需要专业人才,小公司需要全才,但是对于个人职业发展来说,前后端需要分离。 2、未分离时代(各种耦合) 早期主要使用MVC框架,Jsp+Servlet的结构图如下:

freemarker单独使用介绍

瘦欲@ 提交于 2020-02-27 18:26:41
一:freemarker是什么? freemarker是一个模板引擎,基于定义的模板和数据生成对应的文本(HTML,xml,java等),是一个生成文本的工具。 二:freemarker的使用方法 (1)在工程中引入freemarker相关的依赖 < dependency > < groupId > org . freemarker < / groupId > < artifactId > freemarker < / artifactId > < version > 2.3 . 23 < / version > < / dependency > (2)使用的步骤 第一步:创建一个Configuration对象,直接new一个即可,构造参数是freemarker的版本号 第二步:设置模板文件所在的路径,需要给出在磁盘上储存的全路径 第三步:设置生成的文件的编码格式,一般为utf-8格式 第四步:加载模板,创建模板对象 第五步:创建模板使用的数据集,可以使pojo也可以是map类型的 第六步:创建Write流对象,将文件文件输出,需要指定生成的文件的名称 第七步:调用模板的process方法,生成相应的文本 第八步:关闭流 @Test public void genFile ( ) throws Exception { // 第一步:创建一个Configuration对象

springboot相关的汇总

∥☆過路亽.° 提交于 2020-02-27 06:26:59
1: 说说 Spring AOP 中 @Aspect 的高级用法 2: Springboot 中的 javaConfig(基于Spring5.2) 3: Java程序员常用工具类库 4: freemarker的单独使用 5: SpringBoot&FreeMarker之零配置自定义指令(附Git源码) 6: Springboot整合Websocket实现后端向前端主动推送消息案例 主要是 整合websocket 环境配置 名称 版本 Idea 2018专业版 Maven 4.0.0 SpringBoot 2.2.2 websocket 2.1.3 jdk 1.8 7: Ubuntu下安装frp实现内网穿透 8: ubuntu安装frps服务器 9: spring多个AOP执行先后顺序 10: @Before、@Around和@After执行顺序 11: Java中你不知道的5个隐藏秘密 来源: oschina 链接: https://my.oschina.net/u/2963604/blog/3168964

java工程师如何快速学习node.js(一)

生来就可爱ヽ(ⅴ<●) 提交于 2020-02-27 05:56:09
此处,我不评论node.js,PHP,java,C++,Python谁是最好的编程语言。也不讨论谁会在一个十年被谁或把谁淘汰。我掌握多门语言的目的是为了在开发项目时多一种选择。 所以本博文教程会 站在java工程师的角度,通过类比学习的方式,重点分享如何快速学习node.js的经验 ,并开发一个项目作为案例。教程分为: 图文教程和视频教程两部分 。 一 前提条件 1.1 熟悉HTTP协议 主要熟悉HTTP协议报文。包括请求报文和相应报文的格式。 1.2 扎实的javaWeb基础 扎实的java基础。 熟悉Servlet原理、请求-响应流程。熟悉HttpServletRequest、HttpServletResponse、HttpSession对象的使用。 熟悉Cookie技术、了解Session原理。 1.3 用过一些模板引擎:JSP、Freemarker等。 1.4 熟悉maven 1.5 前端基础:HTML\CSS\JavaScript,以及ECMAScript6的部分新特性等。 ... 二 教程内容体系 来源: oschina 链接: https://my.oschina.net/u/4453793/blog/3165854

Springboot+freemarker 国际化i18n配置

馋奶兔 提交于 2020-02-26 21:55:43
创建国际化语言配置文件 resources/i18n/ 对应自己的配置文件 分别是 默认,英文,中文,中文繁体 在配置 application.properties中指定自己的国际化配置文件 #===============================国际化i18n start ========================================================================= #默认值为:classpath下的messages_*.properties 自己指定成自己的 类路径下/i18n/login文件, 自动将login_xx_XX.properties 的后缀忽略只取基础名称 spring.messages.basename=i18n/login spring.messages.encoding=utf-8 #===============================国际化i18n end ========================================================================= 向spring容器中加入自己的LocaleResolver 创建自己的MyLocaleResolver /** * @ClassName: MyLocaleResolver *