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

来源:互联网 发布:mac导入的照片 文件夹 编辑:程序博客网 时间:2024/05/11 13:04

前两篇博客介绍了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" />         <propertyname=”maxInMemorySize” value=”4096” />   </beans>

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

0 0
原创粉丝点击