主要使用到的jar 文件:spring mvc +freemarker.jar


第一步:spring mvc 集成 freemarker


  1. <!-- 定义跳转的文件的前后缀 ,视图模式配置-->
  2. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  3. <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 -->
  4. <property name="prefix" value="/backstage/jsp/" />
  5. <property name="suffix" value=".jsp" />
  6. <property name="viewClass" value="org.springframework.web.servlet.view.InternalResourceView"/>
  7. <property name="order" value="1"/>
  8. </bean>

  9. <!-- 配置freeMarker视图解析器 -->
  10. <bean id="viewResolverFtl" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
  11. <property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"/>
  12. <property name="contentType" value="text/html; charset=UTF-8"/>
  13. <property name="exposeRequestAttributes" value="true" />
  14. <property name="exposeSessionAttributes" value="true" />
  15. <property name="exposeSpringMacroHelpers" value="true" />
  16. <property name="cache" value="true" />
  17. <property name="suffix" value=".ftl" />
  18. <property name="order" value="0"/>
  19. </bean>

  20. <!-- 配置freeMarker的模板路径 -->
  21. <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
  22. <property name="templateLoaderPath" value="/backstage/jsp/"/>
  23. <property name="freemarkerVariables">
  24. <map>
  25. <entry key="xml_escape" value-ref="fmXmlEscape" />
  26. </map>
  27. </property>
  28. <property name="defaultEncoding" value="UTF-8"/>
  29. <property name="freemarkerSettings">
  30. <props>
  31. <prop key="template_update_delay">3600</prop>
  32. <prop key="locale">zh_CN</prop>
  33. <prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
  34. <prop key="date_format">yyyy-MM-dd</prop>
  35. <prop key="number_format">#.##</prop>
  36. </props>
  37. </property>
  38. </bean>

  39. <bean id="fmXmlEscape" class="freemarker.template.utility.XmlEscape"/>




【重点:在JSP和Freemarker的配置项中都有一个order property,上面例子是把freemarker的order设置为0,jsp为1。意思是找view时,先找ftl文件,再找jsp文件做为视图。】


第二步:controller代码


  1. package com.wlsq.controller;

  2. import org.springframework.stereotype.Controller;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. import org.springframework.web.bind.annotation.RequestMethod;
  5. import org.springframework.web.servlet.ModelAndView;

  6. @Controller
  7. @RequestMapping(value="/ftl")
  8. public class FreemarkerTest {
  9. @RequestMapping(value="/index",method=RequestMethod.GET)
  10. public ModelAndView index() {
  11. ModelAndView view = new ModelAndView("TestFreemarker/index");
  12. view.addObject("message", "Say hi for Freemarker.");
  13. return view;
  14. }

  15. }


第三步:TestFreemarker/index.ftl



    1. <Html>
    2. <head>
    3. <title>${message}</title>
    4. </head>
    5. <body>
    6. <b>${message}</b>
    7. <body>
    8. </html>