springMVC+freemarker整合


轉自:http://angelbill3.iteye.com/blog/1980904

在springMVC的項目中,加入freemarker 

1、首先導入springMVC-webmvc所需的JAR包。 
(若用maven的話,如下) 

Java代碼   收藏代碼
  1. <dependency>  
  2.     <groupId>org.springfremework</groupId>  
  3.     <artifactId>spring-webmvc<artifactId>  
  4.     <version>3.2.3.RELEASE</version>  
  5. </dependency>  



2、配置web.xml(啟動mvc框架) 

Java代碼   收藏代碼
  1. <servlet>    
  2.         <servlet-name>spring</servlet-name>    
  3.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    
  4.         <load-on-startup>1</load-on-startup>    
  5. </servlet>    
  6.     
  7. <servlet-mapping>    
  8.         <servlet-name>spring</servlet-name>    
  9.         <url-pattern>*.htm</url-pattern>    
  10. </servlet-mapping>    



相應的xml配置命令規則為:【servlet名字】-servlet.xml,(如本文為:spring-servlet.xml),默認目錄和web.xml放一起,即WEB-INF目錄下。 

3、配置spring-servlet.xml(****重要****) 
在spring-servlet文件中加入:(annotation以及包掃描范圍已略。) 
關於freemarker模版的配置,可以直接在xml里配,也可以用properties文件配。 

Java代碼   收藏代碼
  1. <!-- 設置freeMarker的配置文件路徑 -->    
  2.     <bean id="freemarkerConfiguration" class="org.springframework.beans.factory.config.PropertiesFactoryBean">    
  3.         <property name="location" value="classpath:conf/freemarker.properties"/>    
  4.     </bean>  
  5.       
  6.     <!-- 配置freeMarker的模板路徑 -->    
  7.     <bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">    
  8.         <property name="freemarkerSettings" ref="freemarkerConfiguration"/>    
  9.         <property name="templateLoaderPath">    
  10.             <value>/WEB-INF/ftl/</value>    
  11.         </property>    
  12.     </bean>  
  13.         
  14.     <!-- 配置freeMarker視圖解析器 -->    
  15.     <bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">    
  16.         <property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"/>    
  17.         <property name="contentType" value="text/html; charset=utf-8"/>    
  18.         <property name="cache" value="true"/>    
  19.     </bean>  



4、新建文件:freemarker.properties,放conf目錄下 

Java代碼   收藏代碼
  1. #設置標簽類型:square_bracket:[]     auto_detect:[]<>    
  2. tag_syntax=auto_detect    
  3. #模版緩存時間,單位:秒   
  4. template_update_delay=0    
  5. default_encoding=UTF-8    
  6. output_encoding=UTF-8    
  7. locale=zh_CN    
  8. #設置數字格式 ,防止出現 000.00    
  9. number_format=\#    
  10. #變量為空時,不會報錯  
  11. classic_compatible=true   
  12. #這個表示每個freemarker的視圖頁面都會自動引入這個ftl文件。里面定議的就是一些宏,如text文本框,各種form元素   
  13. #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 

Java代碼   收藏代碼
  1. import org.springframework.stereotype.Controller;  
  2. import org.springframework.ui.ModelMap;  
  3. import org.springframework.web.bind.annotation.RequestMapping;  
  4.   
  5. @Controller    
  6. public class FreemarkerController {    
  7.         
  8.     @RequestMapping("/hi")    
  9.     public String sayHello(ModelMap map){    
  10.         System.out.println("say hi ……");    
  11.     
  12.         map.put("name", "kimi");    
  13.     
  14.         return "/hi.ftl";    
  15.     }    
  16.     
  17. }    
  18.   
  19. 6、前台新建測試頁:hi.ftl(放WEB-INF/ftl目錄下)  
  20. <pre class="java" name="code"><html>    
  21. <body>    
  22.     <h1>holle world ${name}</h1><br/>    
  23.     1 + 1 = 3? ${(1 != 1)?string("yes", "no")}    
  24. </body>    
  25. </html>   
  26. </pre>  
  27. <br>  



7、啟動項目。 
發現報錯:Caused by: java.lang.NoClassDefFoundError: org/springframework/ui/freemarker/FreeMarkerConfigurationFactory 

少了jar包,再導入spring-context-support-3.2.3.RELEASE包即可。 
maven: 

Java代碼   收藏代碼
  1. <dependency>    
  2.     <groupId>org.springframework</groupId>    
  3.     <artifactId>spring-context-support</artifactId>    
  4.     <version>3.2.3.RELEASE</version>    
  5. </dependency>    



再次啟動,沒有錯,訪問項目后,網頁內容如下: 
 

------------------------------------------ 
參考資料: 
http://www.360doc.com/content/12/0809/13/4280915_229198282.shtml 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM