springmvc + freemarker +sitemesh

来源:互联网 发布:sql update 多个数据 编辑:程序博客网 时间:2024/05/19 14:37

这3都加起来,很难。网上没有解决方案,用了一天才把环境搭起来。

记录如下。

先把springmvc 在 web.xml上的配置:

   <servlet>

        <servlet-name>xxx-ftl</servlet-name>

        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        <!-- <init-param>

            <param-name>contextClass</param-name>

            <param-value>

                org.springframework.web.context.support.AnnotationConfigWebApplicationContext

            </param-value>

        </init-param>-->

        <init-param>

            <param-name>contextConfigLocation</param-name>

            <param-value>/WEB-INF/spring/xxx-mvc-ftl.xml</param-value>

        </init-param>

        <load-on-startup>1</load-on-startup>

    </servlet>

    <!--为DispatcherServlet建立映射 -->

    <servlet-mapping>

        <servlet-name>xxx-ftl</servlet-name>

        <url-pattern>*.htm</url-pattern>

    </servlet-mapping>

这里规定了一下freemarker的配置文件的名字。xxx-mvc-ftl.xml。

 以下是xxx-mvc-ftl.xml的配置:


<bean id="freemarkerConfig"    class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">

        <property name="templateLoaderPaths">

            <list>

                <value>/WEB-INF/freemarker/</value>

                <value>/</value>

                <value>classpath:modules</value>

                <value>classpath:org/springframework/web/servlet/view/freemarker</value>

            </list>

        </property>

        <!--   直接将Freemarker.propertyies写在单独的.properties注入进来-->

        <property name="freemarkerSettings">

            <props>

                <!--<prop key="template_update_delay">60000</prop>-->

                <prop key="default_encoding">UTF-8</prop>

                <prop key="locale">zh_CN</prop>

                <prop key="datetime_format">MM/dd/yyyy</prop>

                <prop key="number_format">#</prop>

                <prop key="whitespace_stripping">true</prop>



            </props>

        </property>

        <!--全局变量部分-->

        <property name="freemarkerVariables">

            <map>

                <entry key="xml_escape" value-ref="fmXmlEscape"/>

                <entry key="html_escape" value-ref="fmHtmlEscape" />

                <entry key="webRoot" value="${webRoot}"/>

                <entry key="cssRoot" value="${cssRoot}"/>

                <entry key="jsRoot" value="${jsRoot}"/>

            </map>

        </property>

        <property name="defaultEncoding" value="utf-8"/>

    </bean>

    <bean id="viewResolverFreemarker"  class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">

        <!--<property name="cache" value="true"/>-->

        <property name="suffix" value=".ftl"/>

        <!--如果你需要使用Spring 对 FreeMarker 宏命令的支持, 将这个属性设为true-->

        <property name="exposeSpringMacroHelpers" value="true"/>

        <property name="contentType" value="text/html;charset=UTF-8"/>

        <property name="order" value="1" />

    </bean>

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

    <bean id="fmHtmlEscape" class="freemarker.template.utility.HtmlEscape" />


下是decorators.xml和网上一样。

<?xml version="1.0" encoding="UTF-8"?>

<decorators defaultdir="/includes/decorators">
    <excludes>
        <pattern>index.html</pattern>
    </excludes>
    <decorator name="main" page="main.dec">
        <pattern>*.htm</pattern>
    </decorator>

</decorators>

重点来了。要把以下加入web.xml里面

   <!--sitemesh-->

      <filter>

        <filter-name>sitemesh</filter-name>

        <filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>

    </filter>

    <filter-mapping>

        <filter-name>sitemesh</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

    <!--sitemesh freemarker-->

    <servlet>

        <servlet-name>sitemesh-freemarker</servlet-name>

        <servlet-class>com.opensymphony.module.sitemesh.freemarker.FreemarkerDecoratorServlet</servlet-class>

        <init-param>

            <param-name>TemplatePath</param-name>

            <param-value>/</param-value>

        </init-param>

        <init-param>

            <param-name>default_encoding</param-name>

            <param-value>UTF-8</param-value>

        </init-param>

        <load-on-startup>1</load-on-startup>

    </servlet>



    <servlet-mapping>

        <servlet-name>sitemesh-freemarker</servlet-name>

        <url-pattern>*.dec</url-pattern>

    </servlet-mapping>


<url-pattern>*.dec</url-pattern> 这里我把sitemesh的模板后缀名定为 .dec,所以就用这个过滤!


完毕!

原创粉丝点击