FreeMarker整合Spring 3

系统 1929 0

开发环境:

System:Windows

WebBrowser:IE6+、Firefox3+

JavaEE Server:tomcat5.0.2.8、tomcat6

IDE:eclipse、MyEclipse 8

开发依赖库:

JavaEE5、Spring 3.0.0.M4、FreeMarker 2.3.16

Email:hoojo_@126.com

Blog: http://blog.csdn.net/IBM_hoojo

http://hoojo.cnblogs.com/

 

1、 新建WebProject,工程名称是SpringFreemarker;然后手动添加jar包,需要的jar包如下:

FreeMarker整合Spring 3_第1张图片

SpringFramework jar包下载地址:

http://ebr.springsource.com/repository/app/library/version/detail?name=org.springframework.spring&version=3.0.5.RELEASE

FreeMarker library下载地址:

http://ebr.springsource.com/repository/app/bundle/version/detail?name=com.springsource.freemarker&version=2.3.15

当然你也可以去官方下载

2、 在web.xml中添加如下配置:

        
          <!-- 加载Spring容器配置 -->
        
      
        
          <
        
        
          listener
        
        
          >
        
      
        
          <
        
        
          listener-class
        
        
          >
        
        org.springframework.web.context.ContextLoaderListener
        
          </
        
        
          listener-class
        
        
          >
        
      
        
          </
        
        
          listener
        
        
          >
        
      
        
          <!-- 设置Spring容器加载配置文件路径 -->
        
      
        
          <
        
        
          context-param
        
        
          >
        
      
        
          <
        
        
          param-name
        
        
          >
        
        contextConfigLocation
        
          </
        
        
          param-name
        
        
          >
        
      
        
          <
        
        
          param-value
        
        
          >
        
        classpath*:applicationContext-*.xml
        
          </
        
        
          param-value
        
        
          >
        
      
        
          </
        
        
          context-param
        
        
          >
        
      
         
      
        
          <
        
        
          servlet
        
        
          >
        
      
        
          <
        
        
          servlet-name
        
        
          >
        
        dispatcher
        
          </
        
        
          servlet-name
        
        
          >
        
      
        
          <
        
        
          servlet-class
        
        
          >
        
        org.springframework.web.servlet.DispatcherServlet
        
          </
        
        
          servlet-class
        
        
          >
        
      
        
          <
        
        
          init-param
        
        
          >
        
      
        
          <
        
        
          param-name
        
        
          >
        
        contextConfigLocation
        
          </
        
        
          param-name
        
        
          >
        
      
        
          <
        
        
          param-value
        
        
          >
        
        /WEB-INF/dispatcher.xml
        
          </
        
        
          param-value
        
        
          >
        
      
        
          </
        
        
          init-param
        
        
          >
        
      
        
          <
        
        
          load-on-startup
        
        
          >
        
        1
        
          </
        
        
          load-on-startup
        
        
          >
        
      
        
          </
        
        
          servlet
        
        
          >
        
      
         
      
        
          <
        
        
          servlet-mapping
        
        
          >
        
      
        
          <
        
        
          servlet-name
        
        
          >
        
        dispatcher
        
          </
        
        
          servlet-name
        
        
          >
        
      
        
          <
        
        
          url-pattern
        
        
          >
        
        *.do
        
          </
        
        
          url-pattern
        
        
          >
        
      
        
          </
        
        
          servlet-mapping
        
        
          >
        
      

上面分别是添加Spring的监听器、以及配置Spring的配置文件、还有SpringMVC的控制器;

3、 在WEB-INF中添加文件dispatcher.xml,和web.xml中的对应。内容如下:

        
          <?
        
        
          xml
        
        
          version
        
        
          ="1.0"
        
        
          encoding
        
        
          ="UTF-8"
        
        ?
        
          >
        
      
        
          <
        
        
          beans
        
        
          xmlns
        
        
          ="http://www.springframework.org/schema/beans"
        
      
        
          xmlns:mvc
        
        
          ="http://www.springframework.org/schema/mvc"
        
        
          xmlns:context
        
        
          ="http://www.springframework.org/schema/context"
        
      
        
          xmlns:util
        
        
          ="http://www.springframework.org/schema/util"
        
        
          xmlns:xsi
        
        
          ="http://www.w3.org/2001/XMLSchema-instance"
        
      
        
          xsi:schemaLocation
        
        
          ="http://www.springframework.org/schema/beans 
        
        
          >
        
      
            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
      
            http://www.springframework.org/schema/mvc
      
            http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
      
            http://www.springframework.org/schema/context 
      
            http://www.springframework.org/schema/context/spring-context-3.0.xsd
      
            http://www.springframework.org/schema/util
      
            http://www.springframework.org/schema/util/spring-util-3.0.xsd"
      
         
      
        
          <
        
        
          context:component-scan
        
        
          base-package
        
        
          ="com.hoo"
        
        
          />
        
      
         
      
        
          <!-- annotation的方法映射适配器 
        
      
        
              <bean id="handlerAdapter" class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
        
      
        
              -->
        
      
        
          <!--  annotation默认的方法映射适配器 -->
        
      
        
          <
        
        
          bean
        
        
          id
        
        
          ="handlerMapping"
        
        
          class
        
        
          ="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"
        
        
          />
        
      
      
        
          <
        
        
          bean
        
        
          class
        
        
          ="org.springframework.web.servlet.view.InternalResourceViewResolver"
        
        
          >
        
      
        
          <
        
        
          property
        
        
          name
        
        
          ="viewClass"
        
        
          value
        
        
          ="org.springframework.web.servlet.view.JstlView"
        
        
          />
        
      
        
          </
        
        
          bean
        
        
          >
        
      
      
        
          </
        
        
          beans
        
        
          >
        
      
         
      

上面是SpringMVC的基本配置

4、 在src中添加applicationContext-beans.xml,内容如下:

        
          <?
        
        
          xml
        
        
          version
        
        
          ="1.0"
        
        
          encoding
        
        
          ="UTF-8"
        
        ?
        
          >
        
      
        
          <
        
        
          beans
        
        
          xmlns
        
        
          ="http://www.springframework.org/schema/beans"
        
      
        
          xmlns:xsi
        
        
          ="http://www.w3.org/2001/XMLSchema-instance"
        
      
        
          xmlns:aop
        
        
          ="http://www.springframework.org/schema/aop"
        
      
        
          xmlns:tx
        
        
          ="http://www.springframework.org/schema/tx"
        
      
        
          xmlns:util
        
        
          ="http://www.springframework.org/schema/util"
        
      
        
          xmlns:context
        
        
          ="http://www.springframework.org/schema/context"
        
      
        
          xsi:schemaLocation
        
        
          ="http://www.springframework.org/schema/beans 
        
        
          >
        
      
            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
      
            http://www.springframework.org/schema/aop 
      
            http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
      
            http://www.springframework.org/schema/tx 
      
            http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
      
            http://www.springframework.org/schema/util 
      
            http://www.springframework.org/schema/util/spring-util-3.0.xsd
      
            http://www.springframework.org/schema/context 
      
            http://www.springframework.org/schema/context/spring-context-3.0.xsd"
      
        
          </
        
        
          beans
        
        
          >
        
      

里面可以添加一些bean的配置

5、 在src目录添加freemarker.properties配置文件,这个文件是freemarker一些常用的转换,内容如下:

        tag_syntax=auto_detect
      
        template_update_delay=2
      
        default_encoding=UTF-8
      
        output_encoding=UTF-8
      
        locale=zh_CN
      
        date_format=yyyy-MM-dd
      
        time_format=HH:mm:ss
      
        datetime_format=yyyy-MM-dd HH:mm:ss
      

6、 在dispatcher.xml中添加freemarker的配置,配置如下:

        
          <!-- 设置freeMarker的配置文件路径 -->
        
      
        
          <
        
        
          bean
        
        
          id
        
        
          ="freemarkerConfiguration"
        
        
          class
        
        
          ="org.springframework.beans.factory.config.PropertiesFactoryBean"
        
        
          >
        
      
        
          <
        
        
          property
        
        
          name
        
        
          ="location"
        
        
          value
        
        
          ="classpath:freemarker.properties"
        
        
          />
        
      
        
          </
        
        
          bean
        
        
          >
        
      
         
      
        
          <!-- 配置freeMarker的模板路径 -->
        
      
        
          <
        
        
          bean
        
        
          id
        
        
          ="freemarkerConfig"
        
        
          class
        
        
          ="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"
        
        
          >
        
      
        
          <!--property name="freemarkerSettings" ref="freemarkerConfiguration"/-->
        
      
        
          <
        
        
          property
        
        
          name
        
        
          ="templateLoaderPath"
        
        
          >
        
      
        
          <
        
        
          value
        
        
          >
        
        /WEB-INF/ftl/
        
          </
        
        
          value
        
        
          >
        
      
        
          </
        
        
          property
        
        
          >
        
      
        
          <
        
        
          property
        
        
          name
        
        
          ="freemarkerVariables"
        
        
          >
        
      
        
          <
        
        
          map
        
        
          >
        
      
        
          <
        
        
          entry
        
        
          key
        
        
          ="xml_escape"
        
        
          value-ref
        
        
          ="fmXmlEscape"
        
        
          />
        
      
        
          </
        
        
          map
        
        
          >
        
      
        
          </
        
        
          property
        
        
          >
        
      
        
          </
        
        
          bean
        
        
          >
        
      
         
      
        
          <
        
        
          bean
        
        
          id
        
        
          ="fmXmlEscape"
        
        
          class
        
        
          ="freemarker.template.utility.XmlEscape"
        
        
          />
        
      
         
      
        
          <!-- 配置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
        
        
          ="viewNames"
        
        
          value
        
        
          ="*.ftl"
        
        
          />
        
      
        
          <
        
        
          property
        
        
          name
        
        
          ="contentType"
        
        
          value
        
        
          ="text/html; charset=utf-8"
        
        
          />
        
      
        
          <
        
        
          property
        
        
          name
        
        
          ="cache"
        
        
          value
        
        
          ="true"
        
        
          />
        
      
        
          <
        
        
          property
        
        
          name
        
        
          ="prefix"
        
        
          value
        
        
          =""
        
        
          />
        
      
        
          <
        
        
          property
        
        
          name
        
        
          ="suffix"
        
        
          value
        
        
          =""
        
        
          />
        
      
        
          <
        
        
          property
        
        
          name
        
        
          ="order"
        
        
          value
        
        
          ="2"
        
        
          />
        
      
        
          </
        
        
          bean
        
        
          >
        
      

上面最关键的就是freeMarker的视图解析器viewResolver的配置,viewClass是使用哪个视图解析器,这里是类路径;其他的和jsp的视图解析器都很类似。

7、 下面在WEB-INF中添加2个ftl模板,在WEB-INF添加ftl,然后添加hello.ftl/hi.ftl,内容分别是:

hello.ftl

        
          <
        
        
          html
        
        
          >
        
      
        
          <
        
        
          body
        
        
          >
        
      
        
          <
        
        
          h1
        
        
          >
        
        say hello ${name}
        
          </
        
        
          h1
        
        
          ><
        
        
          br
        
        
          />
        
      
            ${(1 == 1)?string("yes", "no")}
      
        
          </
        
        
          body
        
        
          >
        
      
        
          </
        
        
          html
        
        
          >
        
      

hi.ftl

        
          <
        
        
          html
        
        
          >
        
      
        
          <
        
        
          body
        
        
          >
        
      
        
          <
        
        
          h1
        
        
          >
        
        say hello ${name}
        
          </
        
        
          h1
        
        
          ><
        
        
          br
        
        
          />
        
      
            ${(1 != 1)?string("yes", "no")}
      
        
          </
        
        
          body
        
        
          >
        
      
        
          </
        
        
          html
        
        
          >
        
      

8、 添加Controller控制器,代码如下:

        
          package
        
         com.hoo.controller;
      
         
      
        
          import
        
         org.springframework.stereotype.Controller;
      
        
          import
        
         org.springframework.ui.ModelMap;
      
        
          import
        
         org.springframework.web.bind.annotation.RequestMapping;
      
         
      
        
          /**
        
      
        
           * <b>function:</b> FreeMarker示例控制器
        
      
        
           * @author hoojo
        
      
        
           * @createDate 2011-3-3 下午04:50:10
        
      
        
           * @file HelloWorldController.java
        
      
        
           * @package com.hoo.controller
        
      
        
           * @project SpringFreemarker
        
      
        
           * @version 1.0
        
      
        
           */
        
      
        @Controller
      
        @RequestMapping(
        
          "/freeMarker"
        
        )
      
        
          public
        
        
          class
        
         HelloWorldController {
      
      
            @RequestMapping(
        
          "/hello"
        
        )
      
        
          public
        
         String sayHello(ModelMap map) {
      
                System.out.println(
        
          "say Hello ……"
        
        );
      
                map.addAttribute(
        
          "name"
        
        , 
        
          " World!"
        
        );
      
        
          return
        
        
          "/hello.ftl"
        
        ;
      
            }
      
      
            @RequestMapping(
        
          "/hi"
        
        )
      
        
          public
        
         String sayHi(ModelMap map) {
      
                System.out.println(
        
          "say hi ……"
        
        );
      
                map.put(
        
          "name"
        
        , 
        
          "jojo"
        
        );
      
        
          return
        
        
          "/hi.ftl"
        
        ;
      
            }
      
      
            @RequestMapping(
        
          "/jsp"
        
        )
      
        
          public
        
         String jspRequest(ModelMap map) {
      
                System.out.println(
        
          "jspRequest ……"
        
        );
      
                map.put(
        
          "name"
        
        , 
        
          "jsp"
        
        );
      
        
          return
        
        
          "/temp.jsp"
        
        ;
      
            }
      
        }
      

9、 添加index.jsp的测试链接或temp.jsp的内容:

index.jsp

        
          <
        
        
          body
        
        
          >
        
      
        
          <
        
        
          a
        
        
          href
        
        
          ="freeMarker/hello.do"
        
        
          >
        
        say hello
        
          </
        
        
          a
        
        
          ><
        
        
          br
        
        
          />
        
      
        
          <
        
        
          a
        
        
          href
        
        
          ="freeMarker/hi.do"
        
        
          >
        
        say hi
        
          </
        
        
          a
        
        
          ><
        
        
          br
        
        
          />
        
      
        
          <
        
        
          a
        
        
          href
        
        
          ="freeMarker/jsp.do"
        
        
          >
        
        jspRequest
        
          </
        
        
          a
        
        
          >
        
      
        
          </
        
        
          body
        
        
          >
        
      

temp.jsp

        
          <
        
        
          body
        
        
          >
        
      
        
          <
        
        
          h3
        
        
          >
        
        ${name }
        
          </
        
        
          h3
        
        
          >
        
      
        
          </
        
        
          body
        
        
          >
        
      

如果运行无错误,并输出正确的结果就整合成功!~.~

FreeMarker整合Spring 3


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论