`
tang9140
  • 浏览: 35539 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

FreeMarker与SpringMVC整合实例代码教程

 
阅读更多

增加视图XML配置/testMvc/src/main/resources/conf/springMVC-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/aop 
		http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
		http://www.springframework.org/schema/beans 
		http://www.springframework.org/schema/beans/spring-beans-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/mvc 
		http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
		http://www.springframework.org/schema/tx 
		http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"
	default-autowire="byName">

	<context:component-scan base-package="com.tangq.test" />
	
	<mvc:annotation-driven/>  
	
	<bean id="freemarkerConfiguration"
		class="org.springframework.beans.factory.config.PropertiesFactoryBean">
		<property name="location" value="classpath:/freemarker.properties" />
	</bean>

	<bean id="freemarkerConfig"
		class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
		<property name="freemarkerSettings" ref="freemarkerConfiguration"></property>
		<property name="templateLoaderPath" value="template/pages/" />
		<property name="defaultEncoding" value="utf-8" />
	</bean>

	<bean id="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="template/pages/"></property>  
        <property name="suffix" value=".jsp"></property>  
    </bean>
	
</beans>

上面配置中先查找 FreeMarker模板ftl后缀文件,如果找不到,才会去找后面的jsp文件

如果更换后面两个bean的顺序,则会先去找jsp文件,找不到时才去查找ftl模板


需要引入包freemarker-2.3.18.jar

如果是用maven方式构建项目,在pom文件中增加依赖包申明

<dependency>
	<groupId>org.freemarker</groupId>
	<artifactId>freemarker</artifactId>
	<version>2.3.18</version>
</dependency>


另附手动读取FreeMarker配置文件freemarker.properties,进行模板输出配置。获取模板输出字符串辅助类,

有疑问的可以密我,代码如下

/**
 * <模板IO操作管理类>
 */
public class TemplateIOManager {
    
    private static final Logger logger = LoggerFactory.getLogger(TemplateIOManager.class);
    
    private static FreeMarkerConfigurer freeMarkerConfigurer;
    
    private static Configuration DEFAULT_CONFIG;
    
    public void setFreeMarkerConfigurer(FreeMarkerConfigurer freeMarkerConfigurer) {
        TemplateIOManager.freeMarkerConfigurer = freeMarkerConfigurer;
    }
    
    /**
     * <获取模板输出字符串>
     * @param ftlName
     * @param data
     * @return
     */
    public static String parse(String ftlName, Map<String, Object> data) {
        String result = null;
        Template t;
        try {
            if (freeMarkerConfigurer != null) {
                t = freeMarkerConfigurer.getConfiguration().getTemplate(ftlName);
                result = FreeMarkerTemplateUtils.processTemplateIntoString(t, data);
            }
            else {
                t = getDefaultConfig().getTemplate(ftlName);
                result = FreeMarkerTemplateUtils.processTemplateIntoString(t, data);
            }
        }
        catch (IOException e) {
            logger.error(" ftl output IOException ,while ftlName=" + ftlName, e);
        }
        catch (TemplateException e) {
            logger.error(" ftl output TemplateException ,while ftlName=" + ftlName, e);
        }
        return result;
    }
    
    private static Configuration getDefaultConfig() {
        if (DEFAULT_CONFIG == null)
            DEFAULT_CONFIG = createDefaultCfg();
        return DEFAULT_CONFIG;
    }
    
    /**
     * <获取模板配置项>
     * @param loaderPath
     * @return
     */
    private static Configuration createDefaultCfg() {
        Configuration cfg = new Configuration();
        
        // 设置模板文件所在的目录
        try {
            cfg.setDirectoryForTemplateLoading(new File(getTemplateLoaderPath()));
        }
        catch (IOException e) {
            logger.error("设置模板加载目录失败", e);
        }
        
        Properties p = new Properties();  
        try {
            p.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("freemarker.properties"));
            cfg.setSettings(p);
        }
        catch (IOException e) {
            logger.error("获取freemarker.properties配置项io流异常", e);
        }
        catch (TemplateException e) {
            logger.error("配置模板发生异常", e);
        }
        
        return cfg;
    }
    
    /**
     * <获取模板加载目录>
     * @return
     */
    private static String getTemplateLoaderPath() {
        String path = TemplateIOManager.class.getResource("/").getFile();
        String fileSeparator = System.getProperty("file.separator");
        path = path.replace(fileSeparator, "/");
        path = path.substring(0, path.indexOf("WEB-INF")) + "template/pages/";
        return path;
    }
    
}

上面类的freeMarkerConfigurer属性由spring注入,在springMVC-servlet.xml中增加bean配置

<bean class="com.gvtv.app.epg.service.xml.TemplateIOManager">
     <property name="freeMarkerConfigurer" ref="freemarkerConfig" />
</bean>

还有freemarker.properties配置如下

datetime_format=yyyy-MM-dd HH:mm:ss
date_format=yyyy-MM-dd
time_format=HH:mm:ss
boolean_format=true,false
whitespace_stripping=true
default_encoding=UTF-8
tag_syntax=auto_detect
url_escaping_charset=UTF-8
classic_compatible=true
number_format=#

版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

    springMVC+freemarker整合实例

    **SpringMVC整合FreeMarker** 1. **环境配置** 首先,确保你已经安装了JDK、Maven或Gradle等构建工具,以及Tomcat或Jetty等Web服务器。在`pom.xml`(如果你使用的是Maven)或`build.gradle`(如果你使用的是Gradle...

    SpringMVC+Hibernate+Spring整合实例

    总的来说,"SpringMVC+Hibernate+Spring整合实例"提供了一个全面的学习平台,帮助开发者深入理解Java企业级应用的开发模式和最佳实践。通过这个实例,你可以提升自己的技能,为未来的项目开发打下坚实的基础。

    springmvc项目源码、整合freemarker

    如果在搭建或配置过程中遇到问题,可以通过查阅SpringMVC和Freemarker的官方文档、在线教程或者社区问答来寻求帮助。同时,本项目提供了一个参考实例,可以从源码中学习实际的应用场景和代码实现。有问题可以留言...

    springmvc+mybatis整合实例

    整合 Spring MVC 和 MyBatis 可以使开发更加便捷,通过 Spring 的依赖注入和事务管理,可以有效地组织代码,提高代码的可维护性。同时,MyBatis 的动态 SQL 功能和灵活的数据映射,能简化数据库操作,提升开发效率。

    springmvc整合hibernate4

    3.SessionFactory配置:创建`SessionFactory`实例,它是Hibernate的核心,负责管理实体类与数据库表的映射关系。 4. Hibernate配置:在`hibernate.cfg.xml`文件中设置数据库连接信息、方言、缓存策略等。 5. DAO层:...

    springmvc+mybatis+ehcache+freemarker+sitemesh页面布局(注解)整合实例完美运行

    本实例主要涉及的技术栈包括SpringMVC、MyBatis、EhCache、FreeMarker以及Sitemesh,这些技术都是Java Web开发中的重要组件,各自承担着不同的职责。下面将分别详细介绍这些技术以及它们在整合中的作用。 1. ...

    spring和springmvc整合的项目

    总结来说,"spring和springmvc整合的项目"是一个涵盖了Spring框架核心特性和SpringMVC Web开发能力的综合应用。通过合理的模块划分和配置,我们可以构建出高效、可维护的Java Web应用程序。项目中的ss项目说明文档....

    SpringMVC+springAOP+spring security+Hibernate整合实例代码

    在这个整合实例中,Spring Security可能会配置用户登录、权限控制和URL访问过滤,以确保只有授权的用户能访问特定资源。 4. Hibernate:Hibernate是一个对象关系映射(ORM)框架,它简化了Java应用与数据库之间的...

    maven构建springmvc整合 mybatis项目

    本项目就是基于maven构建的SpringMVC与MyBatis的整合实例,适合初学者学习和参考。 **1. Maven的引入与配置** Maven是Java项目管理工具,它能够自动下载所需的依赖库,管理项目的构建过程。在项目中,我们需要创建...

    mybatis整合springMvc完整jar包

    整合MyBatis与SpringMVC可以让开发者在Java Web开发中更好地管理数据库操作和业务逻辑。下面将详细介绍这两个框架的整合过程以及相关知识点。 1. MyBatis简介: MyBatis消除了几乎所有的JDBC代码和手动设置参数...

    学生系统平台的SpringMVC+MyBatis代码

    1. **XML或注解配置**:MyBatis允许开发者在XML配置文件或Java注解中编写SQL语句,将SQL与代码分离,便于管理和维护。 2. **动态SQL**:MyBatis支持在映射文件中编写动态SQL,可以根据条件灵活地生成不同的SQL语句。...

    maven+springMVC+spring security权限实例

    这个实例旨在帮助开发者快速理解并实践这三大技术在实际开发中的整合与应用。 【Spring MVC】是Spring框架的一部分,用于构建Web应用程序。它提供了模型-视图-控制器(MVC)架构,使得开发者可以将业务逻辑、数据...

    springmvc整合JdbcTemplate框架

    接下来,我们讨论整合Spring MVC与JdbcTemplate的具体步骤: 1. **创建Controller**:在Spring MVC中,创建一个Controller类,定义处理请求的方法。在这个方法里,通过@Autowired注解注入JdbcTemplate,然后调用其...

    springmvc+freemarker带sql的登录事例

    总之,这个"springmvc+freemarker带sql的登录事例"是一个基本的Web应用实践,涵盖了Spring MVC的请求处理、FreeMarker模板的使用以及与数据库的交互。通过这个实例,开发者可以学习到如何将这些组件整合起来,构建一...

    freemarker+ssm+maven整合.rar

    本项目是将Freemarker与SSM结合,并通过Maven进行依赖管理的实例。下面将详细介绍这个整合过程中的关键知识点。 1. **Spring框架**:Spring是一个开源的Java平台,它提供了AOP(面向切面编程)、IOC(控制反转)和...

    应用实例,可运行maven+springmvc+mybaits+freemarker+velocity

    这是一个基于Java技术栈的应用实例,整合了多个关键的开源框架,包括Maven、SpringMVC、MyBatis、FreeMarker和Velocity。这些技术在IT行业中广泛应用于开发企业级Web应用程序,构建高效、灵活且可维护的系统。接下来...

    springMVC综合实例

    在本综合实例中,我们将探讨如何将SpringMVC与Hibernate(一个对象关系映射工具)、Sitemesh(一个页面布局框架)以及DWR(Direct Web Remoting,用于创建富客户端Web应用的Java库)集成,以实现高效、功能丰富的Web...

    spring+springMVC+Hibernate整合

    它通过Spring的控制反转和面向切面编程,结合SpringMVC的Web处理能力和Hibernate的数据持久化,大大提升了开发效率和代码质量。在实际项目中,开发者可以根据具体需求调整和优化整合过程,以达到最佳的开发效果。

    SSM框架——详细整合教程(Spring+SpringMVC+MyBatis).docx

    ### SSM框架——详细整合教程(Spring+SpringMVC+MyBatis) #### 一、基础知识概览 **SSM框架**是由三个独立但又能紧密结合在一起的框架组成:**Spring**、**SpringMVC**和**MyBatis**。这三个框架在Java Web开发中...

    SpringMVC入门实例

    以上就是SpringMVC入门实例的主要内容,通过这个实例,你可以了解Spring MVC如何与Tomcat集成,以及如何使用Ant进行项目构建。理解并掌握这些基础概念和操作,将有助于进一步学习和应用Spring MVC框架。

Global site tag (gtag.js) - Google Analytics