`
elicer
  • 浏览: 133320 次
  • 性别: 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  
如果列名是动态的,我们在模板端如何写?谢谢

相关推荐

    使用freeMarker模板和Spring boot后端API接口实现查询用户列表的功能。

    FreeMarker设计的目标是将呈现逻辑从应用程序代码中分离出来,使开发者可以专注于业务逻辑,而设计师可以专注于页面布局。在本项目中,`index.ftl`文件就是FreeMarker模板,它将接收到后端传来的用户数据并展示。 2...

    springboot018基于springboot的母婴商城购物毕业源码案例设计.zip

    "ppppppppppppppppppppppppppppppppppppppppppppp"这部分可能是由于隐私保护或字符限制被替换的字符,真实内容可能包含了具体的类名或项目标识。 在这个项目中,开发者可能会遇到以下技术点: - **RESTful API设计*...

    精通JavaEE项目案例基于EclipseSpringStrutsHibernate(光盘6)

    在本资源中,“精通JavaEE项目案例基于EclipseSpringStrutsHibernate(光盘6)”是一个针对Java企业级应用开发的学习资料,重点在于讲解如何利用Eclipse集成开发环境,结合Spring、Struts和Hibernate这三大开源框架来...

    真实项目网络硬盘【完整】

    这个项目是一个典型的Java Web开发实战案例,涵盖了多个技术栈的整合,对于学习和理解Struts 2、Hibernate和Spring在实际项目中的应用具有很高的价值。通过深入研究这个项目,开发者可以提升自己的技能,更好地应对...

    Spring全家桶核心篇:SpringBoot快速入门 源码

    其对于Spring Boot的最常用的第一个小程序、JavaConfig和常见注解、启动改变、热部署、Springboot整合Thymeleaf/freemarker/JSP、异常处理、配置文件、日志、国际化等都使用案例进行了说明,并且在最后通过一个贯穿...

    JAVA真实包装项目经验-旅游项目

    ### JAVA真实包装项目经验-旅游项目 #### 项目概述 该项目是一个典型的旅游行业应用案例,主要涉及到了三个关键平台:商家平台、运营商平台以及面向用户的前台网站平台。其中,前台网站平台作为用户直接接触的部分...

    资源前后端分离式分布式微服务架构项目CMS页面静态化讲义+源码+视频

    ### 资源前后端分离式分布式微服务架构项目CMS页面静态化讲义知识点解析 #### 一、页面静态化需求理解与...此外,通过实际案例的学习,还能够帮助读者更好地理解和应用这些技术于实际项目中,提升工作效率和项目质量。

    Spring-in-Action

    9. **实战案例**:书中包含多个实际的项目案例,让读者能够将理论知识应用于实践,了解Spring在真实世界中的应用。 10. **最佳实践**:除了技术讲解,作者还会分享Spring开发的最佳实践,帮助读者提升开发效率,...

    springboot027大学生兼职系统.zip

    《SpringBoot027大学生兼职系统》是一款基于Java...它不仅展示了现代Web应用开发的技术栈,也为学习和理解这些技术提供了实际案例。通过分析和研究这个系统,开发者能够提升自己的技术水平,更好地理解和应用相关知识。

    Spring in Action 4加源码

    8. **实战演练**:书中的案例都是基于真实世界的场景,有助于读者将理论知识转化为实践经验,提升解决问题的能力。 总之,《Spring in Action 4》是一本非常适合初学者和有经验的开发者深入理解Spring框架的书籍,...

    JAVA真实包装项目经验-二手车项目面试

    ### JAVA真实包装项目经验——二手车项目面试知识点梳理 #### 一、项目开发流程 1. **项目立项**:项目的启动阶段,确定项目的目标、范围、预算等。 2. **需求分析会议**: - 项目经理、研发部和产品部共同参与。 ...

    Beginning Groovy and Grails, From Novice to Professional

    本书通过多个实际案例,展示了如何运用Groovy和Grails构建真实世界的应用程序,这些案例涵盖了不同领域的应用场景,有助于读者更好地理解和掌握所学知识。 #### 五、总结 通过本书的学习,读者不仅可以掌握Groovy和...

    struts中文版教程

    12. **最佳实践和案例分析**:提供实际开发中的最佳实践建议,通过案例来展示Struts 2在真实项目中的应用。 这个中文版教程将帮助初学者快速跨越语言障碍,理解Struts 2的关键概念和技术,从而提升他们在Java Web...

    spring+MVC中文教程

    #### 五、Spring MVC的实际应用案例 - **基于模板的方法**:使用Spring MVC结合模板引擎(如Thymeleaf、Freemarker等)来构建动态页面。 - **RESTful API**:利用Spring MVC的注解来快速构建RESTful风格的服务端API...

    失物招领系统 java web

    java web"为主题,采用经典的SSH(Spring、Struts2、Hibernate)框架进行开发,旨在提供一个简洁易用的平台,实现失物发布、拾物登记及认领功能,同时为初学者提供了一个学习SSH框架实践应用的案例。 SSH框架是Java...

    struts2 in action full english edtion

    9. **最佳实践与案例分析**:书中不仅提供了理论知识,还通过真实案例展示了如何在实际项目中应用Struts2,包括如何优化性能、提高代码可维护性等最佳实践。 10. **社区与资源**:书中会介绍Struts2的社区资源,如...

    javaweb邮箱验证升级训练及源码,附ssm邮件验证简单案例

    2. 编写邮件模板:可以使用Velocity或FreeMarker等模板引擎生成包含验证链接的HTML邮件内容。 3. 用户表设计:在数据库中创建用户表,增加一个字段存储用户的验证码。 4. 生成验证码:使用Random类或第三方库如...

Global site tag (gtag.js) - Google Analytics