FreeMarker与Spring框架及SSM的整合过程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wmh1396853433/article/details/51766757

前两篇博客介绍了freemaker是什么以及简单的语法规则,下面我们通过实现一个demo来看在实际应用中如何使用freemaker,本篇博客主要介绍freemaker与spring的整合。

需要的Jar包:freemarker-2.3.15.jar

在已搭建好的spring的配置文件的基础上添加以下代码:

配置文件:

<beanidbeanid="freemarkerConfig"  

class="org.springframework.web.servlet  

     .view.freemarker.FreeMarkerConfigurer">  

<propertynamepropertyname="templateLoaderPath" value="/WEB-INF/ftl/"/>  
</bean>  
<beanidbeanid="viewResolver"  

class="org.springframework.web.servlet  

     .view.freemarker.FreeMarkerViewResolver">  

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

<property name="prefix"value=""/>  

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

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

class="org.springframework.web.servlet  

     .view.InternalResourceViewResolver">  

<property name="viewClass"  

     value="org.springframework.web.servlet.view.JstlView"/>  

<property name="prefix"value="/WEB-INF/jsp/" />  

<property name="suffix"value=".jsp" />  
</bean>

Java文件:

package org.fre.controller;  
importorg.springframework.stereotype.Controller;  
importorg.springframework.ui.Model;  
importorg.springframework.web.bind.annotation.RequestMapping;  

@Controller  

public classHelloController {  

    @RequestMapping("/hello")  

    public String hello(Model model) {  

       model.addAttribute("username", "张三");  

        return "hello";  

    }  

    @RequestMapping("/world")  

    public String helloworld(Model model) {  

       model.addAttribute("username","李四");  

        return "world";  

    }  

}

ftl文件:

<html>  
<head>  
<metahttp-equivmetahttp-equiv="Content-Type" content="text/html;charset=UTF-8">  
<title>Inserttitle here</title>  
</head>  
<body>  
    <h1>${username}</h1>  
</body>  
</html>

jsp文件:

<!DOCTYPE htmlPUBLIC "-//W3C//DTD HTML 4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">  
<html>  
<head>  
    <metahttp-equivmetahttp-equiv="Content-Type" content="text/html;charset=UTF-8">  
    <title>Insert titlehere</title>  
    </head>  
    <body>  
        ${username }  
    </body>  
</html>

访问时一个显示张三,一个显示李四。至此,整合成功了。通过对比ftl文件和jsp文件,发现大同小异,ftl文件编写与jsp文件编写区别不大,所以比较容易上手使用。

另外,我在这里再简单说下,如果与SSM框架整合的话,再整合中

 <!-- 1.配置要扫描的包 -->      
 <context:component-scan base-package="com.baidu"/>

  <mvc:annotation-driven />

<!--  2.配置视图解析器 
 <bean  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/"></property>
    <property name="suffix" value=".jsp"></property>
 </bean> -->

 <!-- 3.配置数据源 -->
 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
       <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
       <property name="url" value="jdbc:mysql://127.0.0.1:3306/duan"></property>
       <property name="username" value="root"></property>
       <property name="password" value="1234"></property>
 </bean> 

 <!-- 4.注入连接池到事物 -->
 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
     <property name="dataSource" ref="dataSource"></property>
 </bean>

 <!-- 5.开启事物 -->
 <tx:annotation-driven transaction-manager="transactionManager"/>

 <!-- 6. dao接口所在包名,Spring会自动查找其下的类-->
 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
     <property name="sqlSessionFactoryBeanName" value="sessionFactory"></property>
     <property name="basePackage" value="com.baidu.dao"></property>
 </bean>

 <!-- 7.加载-maper.xml 建立Session工厂-->
 <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"></property>
    <property name="mapperLocations" value="classpath:com/*/*/*.xml"></property>
 </bean>
   <!-- 针对freemarker的视图配置 -->  
 <bean id="freemarkerResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
    <property name="order" value="1" />
    <property name="suffix" value=".ftl" />
    <property name="contentType" value="text/html;charset=utf-8" />
    <property name="viewClass">
        <value>org.springframework.web.servlet.view.freemarker.FreeMarkerView</value>
    </property>
    <property name="requestContextAttribute" value="rc" />
</bean>

<!-- freemaker配置 -->
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
    <property name="templateLoaderPath">
        <value>/views/</value>
    </property>
    <property name="freemarkerSettings"><!-- 设置FreeMarker环境属性 -->
        <props>
            <prop key="template_update_delay">5</prop><!--刷新模板的周期,单位为秒 -->
            <prop key="default_encoding">UTF-8</prop><!--模板的编码格式 -->
            <prop key="locale">UTF-8</prop><!-- 本地化设置 -->
            <prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
            <prop key="time_format">HH:mm:ss</prop>
            <prop key="number_format">0.####</prop>
            <prop key="boolean_format">true,false</prop>
            <prop key="whitespace_stripping">true</prop>
            <prop key="tag_syntax">auto_detect</prop>
            <prop key="url_escaping_charset">UTF-8</prop>
        </props>
    </property>
</bean>
  <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="defaultEncoding" value="utf-8" />         <property name="maxUploadSize" value="104857600" />         <property

name=”maxInMemorySize” value=”4096” />

   </beans>

这里的SSM整合的配置项就相对多些了,但是相对于SSM整合来说没有什么变化,只是变了下视图解析器的配置,将其变为FreeMArker的配置。
以上就是我对FreeMarker的简单的理解与运用,相信许多人要比我用的深刻,在这里,希望对大家有所帮助,同时也希望大家可以对我指点下,大家可以共同进步。

猜你喜欢

转载自blog.csdn.net/wmh1396853433/article/details/51766757