freemarker对比jsp的最大优点就是静态页面生成,个人觉得freemarker的语法也非常好理解并使用,与java代码逻辑很相似。对于类似的页面模板还有thymeleaf、velocity等也是不错的。使用起来很方便,那么在另外的博客中也略有说明关于thymeleaf的一点使用。这里就springmvc 与 freemarker整合使用做一个demo说明。
配置springMVC的相关方式就不说了,注意核心控制器的配置拦截的url至少要包含*.htm、*.html等文件
个人的web.xml的springMVC的配置如下:
dispatcherServlet
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc.xml
dispatcherServlet
/
使用的是maven进行依赖引入:
org.freemarker
freemarker
2.3.23
/WEB-INF/ftl/
第一个bean:是freemarker的相关配置bean,这里使用properties配置文件的方式配置,也可以使用xml方式。也指定了配置文件在classpath下的conf文件夹中的freemarker.properties文件
第二个bean:配置freemarker的模板路径,也就是ftl文件位置
第三个bean:配置freemarker的视图解析器,指定好渲染类、解析类型和缓存的使用
freemarker.properties的配置
注意位置要与第一个bean配置位置一致,否则找不到,配置方式如下:
#设置标签类型:square_bracket:[] auto_detect:[]<>
tag_syntax=auto_detect
#模版缓存时间,单位:秒
template_update_delay=0
default_encoding=UTF-8
output_encoding=UTF-8
locale=zh_CN
#设置数字格式 ,防止出现 000.00
number_format=\#
#变量为空时,不会报错
classic_compatible=true
#这个表示每个freemarker的视图页面都会自动引入这个ftl文件。里面定议的就是一些宏,如text文本框,各种form元素
#auto_import="/WEB-INF/templates/index.ftl" as do
这个模版属性是比较基本的定义,其中比较重要的是最后一条:auto_import="/WEB-INF/templates/index.ftl" as do,这个表示每个freemarker的视图页面都会自动引入这个ftl文件。里面定议的就是一些宏,如text文本框,各种form元素(本文没作深入研究。)
关于freemarker的配置文件详解参考:http://blog.csdn.net/maoyuanming0806/article/details/77885985
package cn.mym.crud.controller;
/**
* Created by mym on 2017/9/7.
*/
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class FreemarkerController {
@RequestMapping("/hello")
public String sayHello(ModelMap map){
System.out.println("say hello ……");
map.put("name", "mym");
return "/hello.ftl";
}
}
注意:模板文件位置要与在springmvc配置文件中一致,否则找不到,根据配置放在:/WEB-INF/ftl/ 下
this is a freemarker demo! ${name}
1 + 1 = 3? ${(1 != 1)?string("yes", "no")}
访问:
三种方式都可以:
由于我用的是intellij idea,修改了项目的根访问目录为/,所以访问连接才是如下的,重点关注访问hello的后缀
http://localhost:8080/hello
http://localhost:8080/hello.htm
http://localhost:8080/hello.html
如:
第一
第二:
第三:
则说明少了jar包,spring-context-support
加入:
org.springframework
spring-context-support
4.3.7.RELEASE
这是一个最简单的demo,相关的freemarker语法关注其它文章