freemarker脚本
A. freemarker模板中的javascript脚本的问题
<script language= "javascript">alert('aa');</script>
或是
<script type = "text/script">alert('aa');</script>
试试看
B. 在html页面中包含<#include (ftl文件) />这是什么语法,提供点相关资料!
这是 Freemarker网页展示技术的语法,类似于jsp(也是网页展示技术),freemarker现在国外用得比较多,好处我就不说了,<#include>这种是freemarker自带的标签命令,类似于jsp的<!@include>,
而<@p.>这是通过freemarker的宏自定义出来的命令,相当于jsp 的自定义标签.
ps:当然网页展示技术的背后,都必定会有解析这些命令的,并最终转化成网页能识别的(html)代码(架包)
C. freemarker怎么使用CSS样式表以及JS文件
用宏macro,在宏中,引用css样式和js,引用和html中的一样的
先找到当前界面的上一级目录../css.css:其中“../”指当前目录的上级目录,其中CSS文
<!DOCTYPEHTML>
<html>
<head>
<#assignctx=request.contextPath/>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8;NO-CACHE"/>
<linkrel="icon"href="${ctx!}/images/JASU_Squares_J.jpg"/>
<linktype="text/css"rel="stylesheet"href="${ctx}/css/show_list.css"/>
<scripttype="text/javascript"language="javascript"src="${ctx}/js/jquery/jqueryui/jquery.ui.core.min.js"></script>
</head>
<@pageOnloadJs/><!--页面初始化执行的脚本-->
<@body/>
</html>
D. javascript中如何加载freemark指令
freemarker运行在服务器上,javascript运行在客户端浏览器上。
freemarker的模板、宏、函数指令等等都在服务器上。等到javascript在客户电脑的浏览器中解释执行时,之前在服务器上的freemarker早处理完了(服务器处理完成才有response响应包括javascript脚本代码本身发回到浏览器去)。
所以你说javascript怎么加载freemarker指令?就像用javascript可以调用EL表达式函数吗?
E. freemarker thymeleaf哪个好
我也是来问这个问题的。。。目前了解,性能方面thymeleaf更差。但是thymeleaf由于使用了标签属性做为语法,模版页面直接用浏览器渲染,使得前端和后端可以并行开发。freemarket使用</>这样的语法,就无法直接使浏览器渲染出原本页面的样子。
thymeleaf的性能一直是大家痛击之处。有人说thymeleaf开启缓存后,性能会比freemarker更好,但是开启缓存有什么弊端我就不知道了。(会不会更新了模版后,页面没变化?)
很难说两个谁好谁坏,都有不足都有优点。目前两者都还有更新,有团队支持。不像velocity已经6年没更新了。但是我看的sprint 实战 第4版中,有一小节专门讲了thymeleaf,为什么不讲freemarker,我也不懂,要问作者。为什么IDEA中直接提供了thymeleaf的framework支持??综上,但是为什么网友诟病thymeleaf性能问题的更多,而夸奖的人没有几个??我也是迷糊了。
我是因为我的项目需要用到这些所以今天花了一天的时间,找这些资料,目前,我个人比较倾向thymeleaf。
F. 用freemarker的页面,还可以用jQuery吗
用宏macro,在宏中,引用css样式和js,引用和html中的一样的
先找到当前界面的上一级目录 ../css.css :其中“../”指当前目录的上级目录,其中CSS文
<!DOCTYPE HTML>
<html>
<head>
<#assign ctx = request.contextPath />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8;NO-CACHE" />
<link rel="icon" href="${ctx!}/images/JASU_Squares_ J.jpg" />
<link type="text/css" rel="stylesheet" href="${ctx}/css/show_list.css"/>
<script type="text/javascript" language="javascript" src="${ctx}/js/jquery/jqueryui/jquery.ui.core.min.js"></script>
</head>
<@pageOnloadJs /><!-- 页面初始化执行的脚本 -->
<@body />
</html>
G. freemarker如何获取页面参数
1. 前台传到后台:不用说了。。你会的
2. 两个ftl页面之间传参数,不能向jsp那样直接取,要过一下后台。
思路就是这样!
H. java代码生成器怎么用
zip包,然后自动下载下来
1.预先定义好模板
最后放出源代码:
package com.et.controller.system.createcode;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.et.controller.base.BaseController;
import com.et.util.DelAllFile;
import com.et.util.FileDownload;
import com.et.util.FileZip;
import com.et.util.Freemarker;
import com.et.util.PageData;
import com.et.util.PathUtil;
/**
* 类名称:FreemarkerController
* 创建人:Harries
* 创建时间:2015年1月12日
* @version
*/
@Controller
@RequestMapping(value=”/createCode”)
public class CreateCodeController extends BaseController {
/**
* 生成代码
*/
@RequestMapping(value=”/proCode”)
public void proCode(HttpServletResponse response) throws Exception{
PageData pd = new PageData();
pd = this.getPageData();
/* ============================================================================================= */
String packageName = pd.getString(“packageName”); //包名 ========1
String objectName = pd.getString(“objectName”); //类名 ========2
String tabletop = pd.getString(“tabletop”); //表前缀 ========3
tabletop = null == tabletop?””:tabletop.toUpperCase(); //表前缀转大写
String zindext = pd.getString(“zindex”); //属性总数
int zindex = 0;
if(null != zindext && !””.equals(zindext)){
zindex = Integer.parseInt(zindext);
}
List<String[]> fieldList = new ArrayList<String[]>(); //属性集合 ========4
for(int i=0; i< zindex; i++){
fieldList.add(pd.getString(“field”+i).split(“,fh,”)); //属性放到集合里面
}
Map<String,Object> root = new HashMap<String,Object>(); //创建数据模型
root.put(“fieldList”, fieldList);
root.put(“packageName”, packageName); //包名
root.put(“objectName”, objectName); //类名
root.put(“objectNameLower”, objectName.toLowerCase()); //类名(全小写)
root.put(“objectNameUpper”, objectName.toUpperCase()); //类名(全大写)
root.put(“tabletop”, tabletop); //表前缀
root.put(“nowDate”, new Date()); //当前日期
DelAllFile.delFolder(PathUtil.getClasspath()+”admin/ftl”); //生成代码前,先清空之前生成的代码
/* ============================================================================================= */
String filePath = “admin/ftl/code/”; //存放路径
String ftlPath = “createCode”; //ftl路径
/*生成controller*/
Freemarker.printFile(“controllerTemplate.ftl”, root, “controller/”+packageName+”/”+objectName.toLowerCase()+”/”+objectName+”Controller.java”, filePath, ftlPath);
/*生成service*/
Freemarker.printFile(“serviceTemplate.ftl”, root, “service/”+packageName+”/”+objectName.toLowerCase()+”/”+objectName+”Service.java”, filePath, ftlPath);
/*生成mybatis xml*/
Freemarker.printFile(“mapperMysqlTemplate.ftl”, root, “mybatis_mysql/”+packageName+”/”+objectName+”Mapper.xml”, filePath, ftlPath);
Freemarker.printFile(“mapperOracleTemplate.ftl”, root, “mybatis_oracle/”+packageName+”/”+objectName+”Mapper.xml”, filePath, ftlPath);
/*生成SQL脚本*/
Freemarker.printFile(“mysql_SQL_Template.ftl”, root, “mysql数据库脚本/”+tabletop+objectName.toUpperCase()+”.sql”, filePath, ftlPath);
Freemarker.printFile(“oracle_SQL_Template.ftl”, root, “oracle数据库脚本/”+tabletop+objectName.toUpperCase()+”.sql”, filePath, ftlPath);
/*生成jsp页面*/
Freemarker.printFile(“jsp_list_Template.ftl”, root, “jsp/”+packageName+”/”+objectName.toLowerCase()+”/”+objectName.toLowerCase()+”_list.jsp”, filePath, ftlPath);
Freemarker.printFile(“jsp_edit_Template.ftl”, root, “jsp/”+packageName+”/”+objectName.toLowerCase()+”/”+objectName.toLowerCase()+”_edit.jsp”, filePath, ftlPath);
/*生成说明文档*/
Freemarker.printFile(“docTemplate.ftl”, root, “说明.doc”, filePath, ftlPath);
//this.print(“oracle_SQL_Template.ftl”, root); 控制台打印
/*生成的全部代码压缩成zip文件*/
FileZip.zip(PathUtil.getClasspath()+”admin/ftl/code”, PathUtil.getClasspath()+”admin/ftl/code.zip”);
/*下载代码*/
FileDownload.fileDownload(response, PathUtil.getClasspath()+”admin/ftl/code.zip”, “code.zip”);
}
}
I. 什么是脚本引擎,它有什么作用
脚本引擎,就是一个计算机编程语言的解释器,如用于建网站的asp、php等,它的功能是解释执行用户的程序文本,将它译成计算机能执行的机器代码,完成一系列的功能。例如,Freemarker和Velocity通常被称为脚本引擎。Erb也会出现在这里,但奇怪的是,它并没有经常被称为脚本引擎。
脚本语言通常不需要编译步骤,因此可以更简单地作为shell脚本或从shell脚本运行。包括awk、perl、tcl、python、ruby等,这些语言通常需要简洁,类型安全性通常是可选的。Windows在其脚本宿主功能中支持多种语言。这将脚本语言公开给Windows中的各种组件。
(9)freemarker脚本扩展阅读:
java脚本引擎的设计原理浅析
1、编译型 vs 解析性
如果能够产生一个独立的class文件则属于前者,例如:fel,simpleEl,groovy
否则通过编译成自定义的内存指令就属于后者,例如:QLExpress,aviator,JEXL
2、java语法 vs 表达式语言(EL expression language) vs 脚本(script)
如果语法和java保持一致,不做任何扩展,就是属于第一种:如果语法大量简化(比如去掉显示类、方法、变量声明,异常处理,逻辑跳转循环等等),只支持简单的数学公式、对象方法成员变量调用, 就属于第二种:fel,simpleEl,aviator。
介于两者之间,即提供很好的语法糖,又支持大部分java语法:for循环,if判断,函数定义,就属于第三种:groovy,QLExpress
参考资料来源:网络-脚本引擎