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

为velocity,freemarker提供jsp:include功能

阅读更多

一.介绍

使用JSP的都知道jsp:include指令,可以使用如下功能,动态的加载其它请求。

 

 

<jsp:include page="/header.jsp" />
<jsp:include page="/servlet/header" />
<jsp:include page="/header.do" />

 

 

而如果你不是使用JSP,而是使用模板引擎如Freemarker,Velocity。有该功能也将十分方便。

Freemarker提供了<@include_page path="/servlet/header"/>指令,使freemarker可以完成jsp:include功能,但velocity则没有提供该功能。

 

二.扩展

现扩展实现一个比Freemarker更加通用的HttpInclude对象,可以适用于Freemarker及Velocity。

 

Freemarker及Velocity示例使用:

 

  • ${httpInclude.include("/servlet/head?p1=v1&p2=v2")};
  • ${httpInclude.include("/head.jsp")};
  • ${httpInclude.include("http://www.google.com")};

 

 

与jsp:include相比:

 

  1. 与jsp:include完成相同的功能
  2. 可以include远程的http内容.并且会将session_id等cookie传递至该请求,如: http://www.google.com

 

 

三.使用

以springmvc为例,笔者编写了一个拦截器.用于拦截所有的controller方法.( struts2可以编写类似拦截器)

 

import freemarker.ext.servlet.IncludePage;
import cn.org.rapid_framework.web.httpinclude.HttpInclude;

public class ShareRenderArgsVariableInterceptor extends HandlerInterceptorAdapter {
	static Log log = LogFactory.getLog(ShareRenderArgsVariableInterceptor.class);
	
	@Override
	public void postHandle(HttpServletRequest request,
			HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		String viewName = modelAndView.getViewName();
		if(viewName != null && !viewName.startsWith("redirect:")) {
			//笔者扩展的httpInclude
			modelAndView.addObject("httpInclude", new HttpInclude(request, response));
			
			//freemarker 原生的IncludePage指令
			modelAndView.addObject("include_page", new IncludePage(request, response));
		}
	}

}
 

然后在freemarker或者是velocity中,就可使用: ${httpInclude.include("/head.jsp")};

 

 

点击此处,查看HttpInclude源码

 

 

 

7
2
分享到:
评论

相关推荐

    JSP网页模板JSP网页模板JSP网页模板

    2. **指令标签**:如`&lt;%@ page %&gt;`, `&lt;%@ include %&gt;`, 和`&lt;%@ taglib %&gt;`,它们提供了关于JSP页面的元信息,如导入Java类、包含其他文件或引用自定义标签库。 3. **脚本元素**:包括`&lt;scriptlet&gt;`, `&lt;expression&gt;`...

    JSP编程基础及应用实例集锦

    6. **模板引擎集成**:例如FreeMarker或Velocity,通过JSP将动态数据与模板结合,生成静态HTML页面,提高性能。 **学习JSP的重要性** 学习JSP对于从事Java Web开发的人员至关重要,它简化了Servlet的编写,使...

    FreeMarker概述2008

    FreeMarker是一个开源的模板引擎,主要用于生成HTML Web页面,尤其适用于MVC模式的应用程序。...尽管Velocity等其他工具也有其优点,但FreeMarker的广泛特性和强大功能使其在许多场景下成为更优选择。

    JSP基础(PDF)

    - 使用模板引擎(如FreeMarker、Velocity)替代JSP,提升性能和可维护性。 综上所述,"JSP基础(PDF)"文档可能涵盖了这些主题,帮助初学者理解JSP的基本概念、用法以及在Web开发中的角色。通过深入学习和实践,...

    javaweb标签大全

    - Freemarker:`&lt;#if&gt;`、`&lt;#foreach&gt;`等,提供强大的模板语言功能。 - Velocity:`#if`、`#foreach`等,与Freemarker类似,但语法略有不同。 掌握这些JavaWeb标签,能够有效地提高开发效率,使代码更加整洁。每个...

    JSP核心技术和电子商务应用实例源代码分析

    5. **JSTL(JSP Standard Tag Library)**: 是一组标准的标签库,提供了诸如迭代、条件判断、XML处理等功能,使得JSP页面更易于阅读和维护。 6. **自定义标签**: 开发者可以根据需求创建自己的JSP标签,提供可重用...

    15个JSP项目实例技术源代码

    9. **模板引擎**:可能包含使用FreeMarker或Velocity等模板引擎,将业务逻辑和视图分离,提高代码可维护性。 10. **国际化与本地化**:展示如何根据用户的语言设置,动态加载不同的文本资源,实现多语言支持。 每...

    JSP宝典源代码文件

    5. **模板技术**:如Freemarker或Velocity等,可以结合JSP用于更复杂的视图层构建。 6. **MVC模式**:虽然JSP自身可以实现模型-视图-控制器模式,但通常与Struts、Spring MVC等框架结合使用,以实现更规范的架构。 ...

    真正的Freemarker中文版教程

    对比Velocity,FreeMarker提供了更多功能: 1. FreeMarker的模板语言更强大,支持更多的算术运算和比较、日期/时间处理、国际化特性等。 2. FreeMarker的循环处理更灵活,允许跳出循环、访问循环控制变量、检测循环...

    jsp网络日记本源码

    8. **模板技术**:为了提高代码复用性和页面设计的灵活性,项目可能使用了JSP包含(jsp:include)或者第三方模板引擎(如FreeMarker、Velocity),以便于分离视图和逻辑。 9. **CSS和JavaScript**:为了提供良好的...

    关于jsp后台的四个模板

    在实际开发中,开发者可能会使用第三方库如FreeMarker、Velocity或JSP 2.0引入的EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)来增强模板的功能。例如,EL用于简洁地访问JavaBean属性...

    BBS.rar_BBS论坛_bbs jsp

    4. **模板引擎**:JSP可以与FreeMarker、Velocity等模板引擎结合,提供更灵活的页面设计。 5. **安全性**:通过JSP可以实现一些安全控制,如防止SQL注入、XSS攻击等。 总的来说,BBS论坛利用JSP技术实现了用户友好...

    阿菜jsp论坛

    - **模板引擎**:为了提高页面设计的灵活性,论坛可能采用模板引擎如FreeMarker或Velocity,它们与JSP有类似的功能但更加分离。 - **分页与搜索**:论坛需要实现帖子的分页显示和关键词搜索功能,这涉及到SQL查询...

    基于jsp的新闻发布系统(论文)

    【基于jsp的新闻发布系统】是一种基于JavaServer Pages (JSP) 技术构建的Web应用程序,主要用于实现在线新闻的发布、管理和查询功能。这个毕业设计项目不仅提供了完整的系统实现,而且具有可运行性和二次开发的可能...

    jsp程序设计电信资费管理

    3. **模板引擎**:如FreeMarker或Velocity,用于生成动态HTML。 4. **数据库连接池**:如Apache DBCP或HikariCP,提高数据库操作效率。 5. **异常处理**:统一的异常处理机制,保证程序的健壮性。 **五、系统测试与...

    JSP图书管理系统!!!!!!!!!!!1

    可以结合JSP与FreeMarker、Velocity等模板引擎,提高代码可维护性,将视图部分与业务逻辑进一步分离。 10. **安全性考虑** 需要关注SQL注入、跨站脚本攻击(XSS)、权限控制等安全问题,采取相应措施,如参数验证...

    FreeMarker概述.pdf

    - **模板创作任务**:使用Velocity时,可能需要额外的工具或工作流程来解决常见的模板创作问题,相比之下,FreeMarker提供了一整套内置的功能,简化了开发过程。 - **MVC模式支持**:FreeMarker更好地支持MVC模式...

    jsp程序开发范例宝典 第九章

    7. 模板技术:JSP可以结合FreeMarker、Velocity等模板引擎,将显示逻辑与业务逻辑分离,提高代码的可复用性和可维护性。 8. 数据库连接与操作:JDBC(Java Database Connectivity)是Java访问数据库的标准接口,本...

    JSP购物网站完整源码

    9. **模板引擎**:为提高代码可读性和复用性,源码可能采用了FreeMarker或Velocity等模板引擎,将视图逻辑和控制逻辑分离。 10. **购物车功能**:购物车模块涉及商品添加、删除、修改数量,以及计算总价等,这都...

Global site tag (gtag.js) - Google Analytics