`
elicer
  • 浏览: 131162 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

FreeMarker 真实案例应用

阅读更多
定义模板

这个模板很简单,就是定义了一个显示文章的指今,然在的显示最新文章和热门文章的时候调用即可

模板文件源代码:
<#macro showNewArticles articles>
    <#list articles as article>
        <li>
        ${article_index+1}.
        <a target="_blank" href="/article/${article.id }">${article.title }</a>
    </li>
    </#list>
</#macro>
<%@ page language="java" contentType="text/html; charset=UTF-8"
   pageEncoding="UTF-8"%>
<link rel="stylesheet" type="text/css" href="/resources/css/foot.css" />
<div id="footer_area">
    <div id="footer_area_content">
    <div class="box">
            <h3>最近发布</h3>
        <div class="box_content">
        <ol>
                <@showNewArticles articles=newDESCArticles />
        </ol>
        </div>
    </div>
  
    <div class="box">
        <h3>热门文章</h3>
        <div class="box_content">
                <ol>
                <@showNewArticles articles=viewCountDescArticles />
            </ol>
        </div>
    </div>
    <!-- 省略了一部分 -->
    </div>
</div>



Freemarker的服务类

freemarker服务类会调用articleService

完整源代码:


package com.naxsu.service;
  
import java.util.HashMap;
import java.util.List;
import java.util.Map;
  
import javax.annotation.Resource;
  
import org.springframework.stereotype.Service;
  
import com.naxsu.entity.Article;
import com.naxsu.utils.FreemarkerUtil;
@Service("freemarkerService")
public class FreeMarkerService {
    @Resource(name="articleService")
    private ArticleService articleservice;
      
      
    public void getFootPage() {
    Map<String,Object> root = new HashMap<String,Object>();
    List<Article> newDESCArticles = articleservice.getNewDESCArticle();
    List<Article> viewCountDescArticles = articleservice.getViewCountDESCArticle();
    root.put("newDESCArticles", newDESCArticles);
    root.put("viewCountDescArticles", viewCountDescArticles);
          
    String path =  this.getClass().getProtectionDomain()
                           .getCodeSource().getLocation().getPath();
    path = path.substring(0,path.indexOf("/WEB-INF"));
    FreemarkerUtil.getInstance().fprint("foot.ftl", root,
                      path+"/WEB-INF/jsp/template/foot.jsp");
    }
      
}



用spring aop实现切面拦截文章的增删改的服务

在增删改文章的时候都会调用freemarkerService,从而生成相应的jsp。FreeMarker与SpringMVC整合在这里不做多说,请看相关的文章。

源代码如下:
<aop:config>
    <aop:aspect ref="freemarkerService">
    <aop:pointcut id="createFootTemplate"
        expression="execution(* com.naxsu.service.ArticleService.insert*(..))||
        execution(* com.naxsu.service.ArticleService.update*(..))||
        execution(* com.naxsu.service.ArticleService.delete*(..))"/>
    <aop:after method="getFootPage" arg-names="id" pointcut-ref="createFootTemplate"/>
    </aop:aspect>
</aop:config>


jsp的嵌入

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ include file="../template/foot.jsp"%>
分享到:
评论
1 楼 laineyhui 2013-01-21  
如果列名是动态的,我们在模板端如何写?谢谢

相关推荐

    基于SpringBoot和Freemarker的Web应用设计源码

    本源码项目是基于SpringBoot和Freemarker的Web应用设计,包含290个文件,主要使用Java、JavaScript、CSS、HTML和Shell编程语言。该项目集成了SpringBoot、SpringMVC、MyBaits、Bootstrap3、Druid和Freemarker等多个...

    springboot集成freemarker入门案例

    springboot集成freemarker的迷你案例,注意是迷你

    freemarker把jsp静态化简单应用

    freeMarker的简单应用,适合入门人了解,导入myeclipse发布到tomact即可应用

    FreeMarker

    FreeMarker,FreeMarker

    freemarker 工程案例

    案例中包括所有的jar:freemarker-2.3.8.jar ,commons-logging-1.0.4.jar ,struts2-core-2.0.11.2.jar,ognl-2.6.11.jar ,xwork-2.0.5.jar。 *这是结合structs2.0的freemarker,其中需要如下注意 在...

    FreeMarker概述

    FreeMarker概述、FreeMarker特性、FreeMarker应用指南

    FreeMarker应用实例和PPT

    注意介绍freemarker在开发struts2中应用DEMO,而不是为了像邮件模板的实例,真真是view层的实现。 也是本人在开发中实践的。

    安装freemarker插件(freemarker的eclipse插件)

    安装freemarker插件(freemarker的eclipse插件) a) 首先下载 freemarker-ide-0.9.14.zip(在这里不用下载了,附件中已经有了) b) 解压后:把hudson.freemarker_ide_0.9.14这个文件放到:eclipse\plugins下面 c) 发现...

    freemarker入门文档及例子

    综合了freemarker的入门文档 和 俩个小实例

    FreeMarker_Programmer Guide

    FreeMarker

    hudson.freemarker_ide_0.9.14

     FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件  FreeMarker与容器无关,因为它并不知道HTTP或Servlet;FreeMarker同样可以应用于非Web应用程序环境  FreeMarker更适合作为Model2框架(如...

    freemarker基本语法整理

    freemarker常用标签整理,struts2+freemarker做表现层应用,flt中freemarker写法

    freemarker简单示例

     FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件  FreeMarker与容器无关,因为它并不知道HTTP或Servlet;FreeMarker同样可以应用于非Web应用程序环境  FreeMarker更适合作为Model2框架(如Struts...

    Freemarker中List的应用

    NULL 博文链接:https://zhousheng193.iteye.com/blog/1129664

    freemarker语法

    freemarker freemarker freemarker freemarker freemarker freemarker freemarker freemarker

    Freemarker 自定义标签 简单案例

    里面 集合了 一个 简单的 Freemarker demo 代码 和一个 freemarker 自定义标签代码

    freemarker帮助文档001

    FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件 FreeMarker与容器无关,因为它并不知道HTTP或Servlet;FreeMarker同样可以应用于非Web应用程序环境 FreeMarker更适合作为Model2框架(如Struts...

    freemarker\Freemarker教程_中文版

    freemarker\Freemarker教程_中文版

    freemarker-2.3.31-API文档-中文版.zip

    赠送jar包:freemarker-2.3.31.jar; 赠送原API文档:freemarker-2.3.31-javadoc.jar; 赠送源代码:freemarker-2.3.31-sources.jar; 赠送Maven依赖信息文件:freemarker-2.3.31.pom; 包含翻译后的API文档:...

Global site tag (gtag.js) - Google Analytics