您的位置:首页 > 编程语言 > Java开发

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

2016-06-27 10:16 337 查看
前三篇博客介绍了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的简单的理解与运用,相信许多人要比我用的深刻,在这里,希望对大家有所帮助,同时也希望大家可以对我指点下,大家可以共同进步。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  freemarker spring