`
angelbill3
  • 浏览: 252830 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

【学习】springMVC+freemarker整合

 
阅读更多
在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目录下)
<html>  
<body>  
    <h1>holle world ${name}</h1><br/>  
    1 + 1 = 3? ${(1 != 1)?string("yes", "no")}  
</body>  
</html> 



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



分享到:
评论
1 楼 hu3625067 2013-11-26  
受益匪浅

相关推荐

Global site tag (gtag.js) - Google Analytics