轉自:http://angelbill3.iteye.com/blog/1980904
在springMVC的項目中,加入freemarker
1、首先導入springMVC-webmvc所需的JAR包。
(若用maven的話,如下)
- <dependency>
- <groupId>org.springfremework</groupId>
- <artifactId>spring-webmvc<artifactId>
- <version>3.2.3.RELEASE</version>
- </dependency>
2、配置web.xml(啟動mvc框架)
- <servlet>
- <servlet-name>spring</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>spring</servlet-name>
- <url-pattern>*.htm</url-pattern>
- </servlet-mapping>
相應的xml配置命令規則為:【servlet名字】-servlet.xml,(如本文為:spring-servlet.xml),默認目錄和web.xml放一起,即WEB-INF目錄下。
3、配置spring-servlet.xml(****重要****)
在spring-servlet文件中加入:(annotation以及包掃描范圍已略。)
關於freemarker模版的配置,可以直接在xml里配,也可以用properties文件配。
- <!-- 設置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>
4、新建文件:freemarker.properties,放conf目錄下
- #設置標簽類型: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元素(本文沒作深入研究。)
5、后台新建測試Control類:FreemarkerController
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.ModelMap;
- import org.springframework.web.bind.annotation.RequestMapping;
- @Controller
- public class FreemarkerController {
- @RequestMapping("/hi")
- public String sayHello(ModelMap map){
- System.out.println("say hi ……");
- map.put("name", "kimi");
- return "/hi.ftl";
- }
- }
- 6、前台新建測試頁:hi.ftl(放WEB-INF/ftl目錄下)
- <pre class="java" name="code"><html>
- <body>
- <h1>holle world ${name}</h1><br/>
- 1 + 1 = 3? ${(1 != 1)?string("yes", "no")}
- </body>
- </html>
- </pre>
- <br>
7、啟動項目。
發現報錯:Caused by: java.lang.NoClassDefFoundError: org/springframework/ui/freemarker/FreeMarkerConfigurationFactory
少了jar包,再導入spring-context-support-3.2.3.RELEASE包即可。
maven:
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context-support</artifactId>
- <version>3.2.3.RELEASE</version>
- </dependency>
再次啟動,沒有錯,訪問項目后,網頁內容如下:
------------------------------------------
參考資料:
http://www.360doc.com/content/12/0809/13/4280915_229198282.shtml