`
huaxin803
  • 浏览: 113858 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

FreeMarker在领悟教程网实战应用

 
阅读更多
摘要: 上一节我们整理了FreeMarker与SpringMVC整合,这一节学习在领悟书生教程网中是怎样实现应用freemarker静态化页面(减少数据库查询)的。需求是这样的,我页面的底部,有“最新文章”和“热门文章”。因为每个页面都有这个显示,每次访问都要查询数据库,这不是太合理,所以在添加文章、修改文章和删除文章的时候,都查询数据库,生成一个jsp页面,然后嵌套在页面中。

上一节我们整理了FreeMarker与SpringMVC整合,这一节学习在领悟书生教程网中是怎样实现应用freemarker静态化页面(减少数据库查询)的。

这一节的标题我们就叫做FreeMarker在领悟教程网实战应用,需求是这样的,我页面的底部,有“最新文章”和“热门文章”。因为每个页面都有这个显示,每次访问都要查询数据库,这不是太合理,所以在添加文章、修改文章和删除文章的时候,都查询数据库,生成一个jsp页面,然后嵌套在页面中。


定义模板

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

模板文件源代码:

<#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"%>

在项目中应用freemarker就是这么简单,赶快用吧。


本文链接:FreeMarker在领悟教程网实战应用,本文由huangyineng原创,转载请注明出处


分享到:
评论

相关推荐

    freemarker 自定义freeMarker标签

    FreeMarker 是一个强大的模板引擎,常用于Java应用中生成HTML、XML等动态内容。它允许开发者使用简单的模板语言(TL)来分离业务逻辑和视图层。本篇将深入探讨如何自定义FreeMarker标签,以扩展其功能并适应特定项目...

    Freemarker 教程

    3. **教程手册**:《Freemarker教程手册中文版》是学习Freemarker的重要参考资料,涵盖了从入门到进阶的全面内容。 通过这个教程,你可以系统地了解和掌握Freemarker的使用方法,提升你的Web开发技能。在实践中不断...

    Struts2 和freemarker实例

    10. **Struts2与FreeMarker的集成**:如何在Action中设置模型数据,然后在FreeMarker模板中获取并显示这些数据。 11. **测试Struts2应用**:了解如何使用JUnit进行单元测试,以及Struts2提供的Mock对象进行集成测试...

    freemarker Demo 适用于freemarker初学

    在Java应用中,Freemarker通过ModelAndView或者Map对象将数据传递到视图层。开发者可以在Java后端准备数据模型,然后传递给Freemarker模板,模板根据模型中的数据生成HTML输出。 4. **与Struts2集成** Struts2是...

    FreeMarker应用实例和PPT

    FreeMarker是一款强大的、开源的模板引擎,主要用于生成...通过以上内容的学习,开发者不仅可以理解FreeMarker的基础知识,还能掌握在Struts2项目中实际运用FreeMarker的方法,从而提高Web应用的开发效率和代码质量。

    freemarker

    标题:Freemarker 描述:孔浩的Freemarker视频笔记,值得一看! 根据给定的文件信息,我们可以深入探讨...通过理解其工作原理和掌握基本的使用步骤,开发人员可以利用Freemarker来提高Web应用的开发效率和灵活性。

    Freemarker简介及标签详解大全

    2. Freemarker 可以应用于非 Web 应用程序环境。 3. Freemarker 可以与容器无关,因为它并不知道 HTTP 或 Servlet。 4. Freemarker 可以通过 Eclipse 的插件来编辑,经过验证,FreeMarker 最好的 Eclipse 编辑插件是...

    eclipse的freemarker插件

    而Freemarker则是一种轻量级的、基于模板的Java模板引擎,常用于Web应用中的动态内容生成,比如JSP替代技术。它允许开发者将业务逻辑与页面展示分离,提高代码的可维护性和可读性。 "eclipse的freemarker插件"是指...

    freemarker-2.3.28.jar

    在实际应用中,开发者通常会将这个JAR文件添加到项目的类路径(classpath)中,以便在运行时能够解析和执行Freemarker模板。如果在Eclipse中使用,可以将该JAR文件添加到项目的构建路径,确保项目能正确识别并利用...

    freemarker-2.3.23jar

    Freemarker是一个强大的模板引擎,主要用于生成动态HTML、XML或其他文本格式的页面。...在实际应用中,开发者需要结合Java后端框架(如Spring MVC)和其他相关技术,充分利用Freemarker的功能来构建动态网站和应用。

    FreeMarker手册-Freemarker 2.3.18

    在Web应用中,FreeMarker常与Model-View-Controller(MVC)模式结合使用,控制器将处理业务逻辑,模型提供数据,而FreeMarker作为视图负责渲染输出。 8. **错误处理和调试** FreeMarker提供了丰富的错误处理机制...

    freemarker-ide插件

    在Eclipse这样的集成开发环境中,这款插件能够显著提升开发人员编写和调试`.ftl`(FreeMarker Template Language)文件的效率。 首先,让我们了解一下Freemarker模板语言。Freemarker是一个基于Java的模板引擎,常...

    FreeMarker2.3.23官方中文文档

    通过阅读和理解FreeMarker 2.3.23的官方中文文档,开发者能够熟练掌握FreeMarker的使用技巧,从而在Web应用开发中更加高效地创建和管理动态内容。这份文档详尽地涵盖了FreeMarker的各个方面,无论是初学者还是经验...

    FreeMarker

    1. **变量与表达式**:在FreeMarker模板中, `${variable}` 用于表示变量,它会从数据模型中查找对应的值并输出。表达式支持算术运算、比较运算和逻辑运算,例如 `${a + b}`、`${c &gt; d}` 和 `${e && f}`。 2. **...

    freemarker学习资料汇总

    通过阅读和理解这些文档,你将能够熟练掌握Freemarker的语法和应用,从而在实际项目中灵活运用这一强大的模板引擎,实现高效、可维护的视图层代码。无论是初学者还是经验丰富的开发者,这些资料都能提供宝贵的指导。

    freemarker中文API手册

    FreeMarker中文API手册 FreeMarker是一种模板引擎,...FreeMarker是一个功能强大且灵活的模板引擎,广泛应用于Web应用程序和非Web应用程序环境,提供了强大的模板语言和灵活的数据模型,能够满足不同开发者的需求。

    FreeMarker相关学习文档

    四、FreeMarker在Web开发中的应用 1. JSP替代:FreeMarker可以替代JSP,减少视图层的Java代码,提高可读性和可维护性。 2. 邮件模板:生成动态邮件内容,提高邮件定制化能力。 3. 文档生成:自动生成报告、合同等...

    基于spring mvc、mybatis、freemarker架构实战大型门户网站源码

    在本项目中,我们深入探讨基于Spring MVC、MyBatis和FreeMarker构建大型门户网站的实践知识。这三种技术是Java Web开发中非常重要的组件,它们各自承担着不同的职责,共同构建了一个高效、灵活且可扩展的后端架构。 ...

Global site tag (gtag.js) - Google Analytics