springMVC整合freemarker的使用
2017-09-07 20:08
531 查看
freemarker对比jsp的最大优点就是静态页面生成,个人觉得freemarker的语法也非常好理解并使用,与java代码逻辑很相似。对于类似的页面模板还有thymeleaf、velocity等也是不错的。使用起来很方便,那么在另外的博客中也略有说明关于thymeleaf的一点使用。这里就springmvc 与 freemarker整合使用做一个demo说明。
springMVC的配置
配置springMVC的相关方式就不说了,注意核心控制器的配置拦截的url至少要包含*.htm、*.html等文件
个人的web.xml的springMVC的配置如下:
小说明:
第一个bean:是freemarker的相关配置bean,这里使用properties配置文件的方式配置,也可以使用xml方式。也指定了配置文件在classpath下的conf文件夹中的freemarker.properties文件
第二个bean:配置freemarker的模板路径,也就是ftl文件位置
第三个bean:配置freemarker的视图解析器,指定好渲染类、解析类型和缓存的使用
freemarker.properties的配置
注意位置要与第一个bean配置位置一致,否则找不到,配置方式如下:
这里附上前辈的说明:
这个模版属性是比较基本的定义,其中比较重要的是最后一条:auto_import="/WEB-INF/templates/index.ftl" as do,这个表示每个freemarker的视图页面都会自动引入这个ftl文件。里面定议的就是一些宏,如text文本框,各种form元素(本文没作深入研究。)
关于freemarker的配置文件详解参考:http://blog.csdn.net/maoyuanming0806/article/details/77885985
然后启动服务器:
三种方式都可以:
由于我用的是intellij idea,修改了项目的根访问目录为/,所以访问连接才是如下的,重点关注访问hello的后缀
http://localhost:8080/hello http://localhost:8080/hello.htm http://localhost:8080/hello.html
如:
第一
第二:
第三:
若报错:Caused by: java.lang.NoClassDefFoundError: org/springframework/ui/freemarker/FreeMarkerConfigurationFactory
则说明少了jar包,spring-context-support
加入:
再次启动就应该没问题了
这是一个最简单的demo,相关的freemarker语法关注其它文章
springMVC的配置
配置springMVC的相关方式就不说了,注意核心控制器的配置拦截的url至少要包含*.htm、*.html等文件个人的web.xml的springMVC的配置如下:
<!--springMVC核心控制器--> <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
引入freemarker包
使用的是maven进行依赖引入:<!-- https://mvnrepository.com/artifact/org.freemarker/freemarker --> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.23</version> </dependency>
配置freemarker的视图解析器
<!-- 设置freeMarker的配置文件路径 --> <bean id="freemarkerConfiguration" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> <property name="location" value="classpath:conf/freemarker.properties"/> </bean> <!-- 配置freeMarker的模板路径 --> <bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="freemarkerSettings" ref="freemarkerConfiguration"/> <property name="templateLoaderPath"> <value>/WEB-INF/ftl/</value> </property> </bean> <!-- 配置freeMarker视图解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"/> <property name="contentType" value="text/html; charset=utf-8"/> <property name="cache" value="true"/> </bean>
小说明:
第一个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
controller编写
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"; } }
freemarker模板文件编写
注意:模板文件位置要与在springmvc配置文件中一致,否则找不到,根据配置放在:/WEB-INF/ftl/ 下<pre class="java" name="code"> <html> <body> <h1>this is a freemarker demo! ${name}</h1><br/> 1 + 1 = 3? ${(1 != 1)?string("yes", "no")} </body> </html> </pre> <br>
然后启动服务器:
测试
访问:三种方式都可以:
由于我用的是intellij idea,修改了项目的根访问目录为/,所以访问连接才是如下的,重点关注访问hello的后缀
http://localhost:8080/hello http://localhost:8080/hello.htm http://localhost:8080/hello.html
如:
第一
第二:
第三:
若报错:Caused by: java.lang.NoClassDefFoundError: org/springframework/ui/freemarker/FreeMarkerConfigurationFactory
则说明少了jar包,spring-context-support加入:
<!--这个一定要有、不用报错--> <!-- https://mvnrepository.com/artifact/org.springframework/spring-context-support --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.3.7.RELEASE</version> </dependency>
再次启动就应该没问题了
这是一个最简单的demo,相关的freemarker语法关注其它文章
相关文章推荐
- 使用纯Java整合SpringMVC、freemarker
- springmvc整合freemarker,使用ftl文件
- SpringMVC和FreeMarker整合中使用注解方式的后台数据校验validate(部分自己扩展)
- SpringMVC和Freemarker整合,带自定义标签的使用方法
- springmvc整合freemarker时,freemarker使用include的根路径的问题
- SpringMVC和FreeMarker整合中使用注解方式的后台数据校验
- SpringMVC与Easyui(实现了JSON的展示)、FreeMarker的整合
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- 转:Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- JAVA Freemarker(2)---在IDEA中 SpringMVC整合Freemarker的详细步骤
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- springMVC整合memcached,以注解形式使用
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- SpringMVC简单整合freemarker
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)