摘要: 上一节我们整理了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
d) 打开eclipse\configuration\org.eclipse.equinox.simpleconfigurator \bundles.info 在文件最后添加hudson.freemarker_ide,0.9.14,plugins/hudson.freemarker_ide_0.9.14/,4,false f) 注:hudson.freemarker_ide...
Struts2 和freemarker实例 简单STRUTS2的使用,和freeMarker的使用
FreeMarker
基于spring mvc、mybatis、freemarker架构实战大型门户网站源码
freemarker freemarker freemarker freemarker freemarker freemarker freemarker freemarker
freemarker\Freemarker教程_中文版
一篇freemarker很不错的文章 reeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成: 1,文本:直接输出的部分 2,注释:格式部分,不会输出 3,插值:即${...}或#{...}格式的部分,将使用...
基于spring mvc,mybatis,freemarker 架构实战大型门户网站源码
FreeMarker概述、FreeMarker特性、FreeMarker应用指南
赠送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文档:...
赠送jar包:freemarker-2.3.30.jar; 赠送原API文档:freemarker-2.3.30-javadoc.jar; 赠送源代码:freemarker-2.3.30-sources.jar; 赠送Maven依赖信息文件:freemarker-2.3.30.pom; 包含翻译后的API文档:...
freemarker格式化的eclipse插件。用于freemarker的格式化。
FreeMarker在Eclipse安装 1.将插件hudson.freemarker_ide_0.9.14文件夹放到eclipse下的plugins文件夹下 按理,这样的话,重启eclipse就应该解决了 但是不成 因为hudson.freemarker_ide_0.9.14文 件夹下的...
Velocity 和 FreeMarker区别 对于大部分的应用来说,使用 FreeMarker 比 Velocity 更简单,因为 Velocity 还必须编写一些自定义的
Freemarker 实例,Freemarker 实例Freemarker 实例,Freemarker 实例
freemarker常用标签整理,struts2+freemarker做表现层应用,flt中freemarker写法
Freemarker简介及标签详解大全 Freemarker简介及标签使用说明
freemarker替换变量实例
注意介绍freemarker在开发struts2中应用DEMO,而不是为了像邮件模板的实例,真真是view层的实现。 也是本人在开发中实践的。