知识点

相关文章

更多

最近更新

更多

FreeMarker在领悟教程网实战应用

2019-03-07 11:31|来源: 领悟书生

上一节我们整理了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原创,转载请注明出处

相关问答

更多
  • 西东网上有dreamweaver教程。如《Dreamweaver CS4 中文版完全自学教程》光盘/视频教程/PPT/电子书, 《FIF 小组Dreamweaver制作网页视频教程》等, 你过去找找吧。
  • 推荐你看看老夫子老师的《基于QT平台的手持媒体播放器项目实战(madplay交叉编译、进程通信、移植)》这套视频教程挺不错的,我把下载地址给你http://kuai.xunlei.com/d/xmBrD7gsk8zAUgQAbdb
  • 这个东西你可以到金蝶官网去看看啊 应该都有的 或者金蝶论坛 武汉金蝶 http://www.whtaylorsoft.com/
  • http://v.ku6.com/show/GP-vCiNTcIhCP4TxbMwWxQ...html?ptag=vsogou 这个比较详细的
  • 求freemarker 教程[2022-04-19]

    http://www.51zxw.net/study.asp?vip=1525340 这里面有所有教程、而且很详细!...
  • 用检查妇科。也就是查白带常规检查。如果你是未婚的话记得跟医生讲,她们通常会问你,有没有男朋友,就算你有也不要告诉给他们听。如果你讲有的话,那你就惨了,他们会选用扩宫器帮你取白带。你讲没有男朋友了,他们就会对你特别小心。 项目有以下这几项: 一、血压、心脏、肺、 二、验血。检查两对半。主要检查肝功能、乙肝表面抗原。 三、白带常规检查主要检查有没有淋病、梅毒、滴虫等。 四、胸部X线检查
  • 到上海加华国术馆视频放映厅,那里有各类教学实况。可以去看看,比较清楚 参考资料:上海加华国术馆 www.wusport.cn