一.介绍
使用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相比:
- 与jsp:include完成相同的功能
- 可以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源码
分享到:
相关推荐
2. **指令标签**:如`<%@ page %>`, `<%@ include %>`, 和`<%@ taglib %>`,它们提供了关于JSP页面的元信息,如导入Java类、包含其他文件或引用自定义标签库。 3. **脚本元素**:包括`<scriptlet>`, `<expression>`...
6. **模板引擎集成**:例如FreeMarker或Velocity,通过JSP将动态数据与模板结合,生成静态HTML页面,提高性能。 **学习JSP的重要性** 学习JSP对于从事Java Web开发的人员至关重要,它简化了Servlet的编写,使...
FreeMarker是一个开源的模板引擎,主要用于生成HTML Web页面,尤其适用于MVC模式的应用程序。...尽管Velocity等其他工具也有其优点,但FreeMarker的广泛特性和强大功能使其在许多场景下成为更优选择。
- 使用模板引擎(如FreeMarker、Velocity)替代JSP,提升性能和可维护性。 综上所述,"JSP基础(PDF)"文档可能涵盖了这些主题,帮助初学者理解JSP的基本概念、用法以及在Web开发中的角色。通过深入学习和实践,...
- Freemarker:`<#if>`、`<#foreach>`等,提供强大的模板语言功能。 - Velocity:`#if`、`#foreach`等,与Freemarker类似,但语法略有不同。 掌握这些JavaWeb标签,能够有效地提高开发效率,使代码更加整洁。每个...
5. **JSTL(JSP Standard Tag Library)**: 是一组标准的标签库,提供了诸如迭代、条件判断、XML处理等功能,使得JSP页面更易于阅读和维护。 6. **自定义标签**: 开发者可以根据需求创建自己的JSP标签,提供可重用...
9. **模板引擎**:可能包含使用FreeMarker或Velocity等模板引擎,将业务逻辑和视图分离,提高代码可维护性。 10. **国际化与本地化**:展示如何根据用户的语言设置,动态加载不同的文本资源,实现多语言支持。 每...
5. **模板技术**:如Freemarker或Velocity等,可以结合JSP用于更复杂的视图层构建。 6. **MVC模式**:虽然JSP自身可以实现模型-视图-控制器模式,但通常与Struts、Spring MVC等框架结合使用,以实现更规范的架构。 ...
对比Velocity,FreeMarker提供了更多功能: 1. FreeMarker的模板语言更强大,支持更多的算术运算和比较、日期/时间处理、国际化特性等。 2. FreeMarker的循环处理更灵活,允许跳出循环、访问循环控制变量、检测循环...
8. **模板技术**:为了提高代码复用性和页面设计的灵活性,项目可能使用了JSP包含(jsp:include)或者第三方模板引擎(如FreeMarker、Velocity),以便于分离视图和逻辑。 9. **CSS和JavaScript**:为了提供良好的...
在实际开发中,开发者可能会使用第三方库如FreeMarker、Velocity或JSP 2.0引入的EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)来增强模板的功能。例如,EL用于简洁地访问JavaBean属性...
4. **模板引擎**:JSP可以与FreeMarker、Velocity等模板引擎结合,提供更灵活的页面设计。 5. **安全性**:通过JSP可以实现一些安全控制,如防止SQL注入、XSS攻击等。 总的来说,BBS论坛利用JSP技术实现了用户友好...
- **模板引擎**:为了提高页面设计的灵活性,论坛可能采用模板引擎如FreeMarker或Velocity,它们与JSP有类似的功能但更加分离。 - **分页与搜索**:论坛需要实现帖子的分页显示和关键词搜索功能,这涉及到SQL查询...
【基于jsp的新闻发布系统】是一种基于JavaServer Pages (JSP) 技术构建的Web应用程序,主要用于实现在线新闻的发布、管理和查询功能。这个毕业设计项目不仅提供了完整的系统实现,而且具有可运行性和二次开发的可能...
3. **模板引擎**:如FreeMarker或Velocity,用于生成动态HTML。 4. **数据库连接池**:如Apache DBCP或HikariCP,提高数据库操作效率。 5. **异常处理**:统一的异常处理机制,保证程序的健壮性。 **五、系统测试与...
可以结合JSP与FreeMarker、Velocity等模板引擎,提高代码可维护性,将视图部分与业务逻辑进一步分离。 10. **安全性考虑** 需要关注SQL注入、跨站脚本攻击(XSS)、权限控制等安全问题,采取相应措施,如参数验证...
- **模板创作任务**:使用Velocity时,可能需要额外的工具或工作流程来解决常见的模板创作问题,相比之下,FreeMarker提供了一整套内置的功能,简化了开发过程。 - **MVC模式支持**:FreeMarker更好地支持MVC模式...
7. 模板技术:JSP可以结合FreeMarker、Velocity等模板引擎,将显示逻辑与业务逻辑分离,提高代码的可复用性和可维护性。 8. 数据库连接与操作:JDBC(Java Database Connectivity)是Java访问数据库的标准接口,本...
9. **模板引擎**:为提高代码可读性和复用性,源码可能采用了FreeMarker或Velocity等模板引擎,将视图逻辑和控制逻辑分离。 10. **购物车功能**:购物车模块涉及商品添加、删除、修改数量,以及计算总价等,这都...