`
1011729483
  • 浏览: 9781 次
社区版块
存档分类
最新评论

<jsp:invoke fragment=""/>的理解和使用

 
阅读更多
在传统 JSP 中,想要实现页面布局管理比较麻烦,为了解决在 JSP 中布局的问题,出现了很多开源软件,比如 Apache Tiles 和 SiteMesh 就是其中比较优秀的。但是使用开源软件实现布局或多或少会产生一些性能问题,有没有办法在不依赖第三方开源软件的情况下,使用 JSP 本身来实现页面布局呢?
JSP 2.0 引入了 Fragment 技术,使用 Fragment 技术可以在 JSP 中实现类似 Tiles 和 SiteMesh 的页面布局管理。
下面的例子说明了如何使用 Fragment 实现页面布局。
1、首先在 WEB-INF/tags 文件夹中创建 template.tag 文件:

[html] view plaincopy
<%@tag description="template 1" pageEncoding="UTF-8"%>  
<%@attribute name="header" fragment="true" %>  
<%@attribute name="footer" fragment="true" %>  
<!DOCTYPE html>  
<html>  
  <head>  
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  </head>  
  
  <body>  
    <jsp:invoke fragment="header"/>  
    <jsp:doBody/>  
    <jsp:invoke fragment="footer"/>  
  </body>  
</html>  

在 tag 文件头部申明了两个 attribute 分别是 header 和 footer。在 <body> 标签中调用了这两个 attribute 所对应的 fragment。jsp:invoke 和 jsp:doBody 中的具体内容会被 jsp 中的内容替换。现在编写 index.jsp。
2、创建 index.jsp 文件
<%@page contentType="text/html" pageEncoding="UTF-8"%>  
<%@ taglib prefix="t" tagdir="/WEB-INF/tags/"%>  
http://write.blog.csdn.net/postedit  
<t:template>  
  <jsp:attribute name="header">  
    这里的内容显示在头部。  
  </jsp:attribute>  
  <jsp:attribute name="footer">  
    这里的内容显示在尾部。  
  </jsp:attribute>  
  <jsp:body>  
    这里显示正文内容:Hello World!  
  </jsp:body>  
</t:template>  

jsp:attribute 标签中的内容将会替换 template.tag 中 jsp:invoke 的内容,name 属性对应 fragment 属性。
如果访问 index.jsp 页面,可以看到显示的内容会按照 template.tag 中设计的样式来进行布局
分享到:
评论

相关推荐

    JSP标准动作文档 java

    - `&lt;jsp:attribute&gt;`、`&lt;jsp:body&gt;`、`&lt;jsp:invoke&gt;`等,主要用于标记文件内部。 #### 四、具体动作详解 1. **&lt;jsp:useBean&gt;** - **定义**:使用此标签可以在JSP页面中定义一个JavaBean实例。 - **使用格式**:...

    dubbo技术介绍

    &lt;dubbo:application/&gt; &lt;dubbo:module/&gt; &lt;dubbo:provider/&gt; &lt;dubbo:consumer/&gt; &lt;dubbo:method/&gt; &lt;dubbo:argument/&gt; &lt;dubbo:parameter/&gt; 协议参考手册 dubbo:// rmi:// hessian:// http:// webservice:// thrift:// ...

    达内培训机密资料_struts2_day04(2)

    &lt;result name="success"&gt;/success.jsp&lt;/result&gt; &lt;/action&gt; &lt;/package&gt; ``` 这里定义了一个名为`loggingStack`的拦截器栈,其中包含了自定义的日志拦截器`logging`以及默认的拦截器栈`defaultStack`。 通过以上...

    扫雷游戏的秘密(有源码)

    &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;--------------------------------------------------------------------------------&lt;br/&gt;主要概念&lt;br/&gt;&lt;br/&gt;利用 P/Invoke 调用 Win32 API. &lt;br/&gt;直接读取另一进程的内存. &lt;br/&gt;注意:这篇文章的第...

    2022年SSH考试题目以及答案归类.pdf

    page=&lt;s:property value=”%{pageBean.currentPage-1}%”/&gt; ”&gt;&lt;/a&gt;`:超链接,点击将显示当前页的上一页的内容。 (6) `&lt;a href=”stu/listMyAricle.action?page=&lt;s:property value=”%{pageBean.currentPage+1}%”...

    拦截器,实用型

    &lt;param name="loginPage"&gt;/login.jsp&lt;/param&gt; &lt;param name="sessionAttr"&gt;user&lt;/param&gt; &lt;/interceptor&gt; &lt;interceptor-stack name="defaultStack"&gt; &lt;interceptor-ref name="alias" /&gt; &lt;interceptor-ref name=...

    bepldev、oracle BPEL的详细文档

    &lt;invoke partnerLink="InventoryPL" operation="CheckInventory"/&gt; &lt;assign&gt; &lt;copy&gt; &lt;from&gt;..//order&lt;/from&gt; &lt;to&gt;..//inventory/order&lt;/to&gt; &lt;/copy&gt; &lt;/assign&gt; &lt;/onmessage&gt; &lt;otherwise&gt; &lt;reply message=...

    jsp 自定义标签 供自学时用

    ### JSP自定义标签详解 #### 一、引言 JSP (Java Server Pages) 是一种基于Java的技术,...通过学习和实践自定义标签的创建和使用,开发者可以更好地理解和掌握 JSP 的核心原理,为后续的 Web 开发奠定坚实的基础。

    Jsp+JavaBean循序渐进教程

    在JSP中,JavaBean可以通过`&lt;jsp:useBean&gt;`标签引入,然后通过`&lt;jsp:setProperty&gt;`和`&lt;jsp:getProperty&gt;`来设置和获取Bean的属性。例如,JSP可以调用购物车Bean的`addItem`方法: ```jsp &lt;jsp:useBean id="cart...

    自定义JSP分页标签

    最后,在JSP页面中使用`&lt;%@ taglib uri="/WEB-INF/tlds/PaginationTagLib.tld" prefix="pag" %&gt; `导入标签库,并使用`&lt;pag:pagination ... /&gt;`调用标签。 ```jsp &lt;%@ taglib uri="/WEB-INF/tlds/PaginationTagLib....

    使用C#-WPF进行界面设计10

    在本教程中,我们将深入探讨如何使用C#和Windows Presentation Foundation (WPF)来创建一个炫酷的用户界面。WPF是.NET Framework的一部分,专为构建具有丰富视觉效果和高度交互性的桌面应用程序而设计。通过C#编程...

    Spring源码学习十二:@Transactional是如何工作的1

    如果 &lt;tx:annotation-driven/&gt; 中没有配置 mode 参数,则默认使用代理模式进行后续处理;如果配置了 mode=aspectj,则使用 AspectJ 代码织入模式进行后续处理。 在本篇中,我们分析使用代理模式的代码,进入 ...

    Struts2自定义标签

    &lt;jspversion&gt;1.1&lt;/jspversion&gt; &lt;name&gt;dtree&lt;/name&gt; &lt;uri&gt;http://jakarta.apache.org/struts/tags-bean&lt;/uri&gt; &lt;!-- 定义自定义标签 --&gt; &lt;tag&gt; &lt;name&gt;selectResnodes&lt;/name&gt; &lt;tagclass&gt;myWeb.taglib.SelectTag...

    jsp自定义标签之ifelse与遍历自定义标签示例.docx

    在JavaServer Pages (JSP) 开发中,自定义标签是一种强大的工具,它允许开发者创建可重用的组件,提高代码的可维护性和可读性。本示例主要讲解了如何使用自定义标签实现`if-else`逻辑以及遍历操作。 首先,自定义...

    struts2拦截器的使用方法

    &lt;result name="input"&gt;/jsp/smeishop/admin/logon.jsp&lt;/result&gt; &lt;/action&gt; &lt;action name="logout" class="logoutAction"&gt; &lt;result&gt;/jsp/smeishop/admin/logon.jsp&lt;/result&gt; &lt;/action&gt; &lt;/package&gt; ``` 这段...

    JSF2.0实战 - 1-3、Hello World,AJAX体验,onPageLoad

    1. **添加AJAX行为**:在JSF页面中,可以使用`&lt;f:ajax&gt;`标签来触发AJAX请求。例如,我们可以添加一个按钮,当点击时更新页面的一部分: ```html &lt;h:form&gt; &lt;h:commandButton value="Click me"&gt; &lt;f:ajax execute=...

    C1Chart_SeriesItemsSource_howeverp7x_readyh3j_wpf实现柱状图_

    get =&gt; _dataList; set { _dataList = value; OnPropertyChanged(nameof(DataList)); } } private void UpdateChartData() { // 更新DataList的内容 DataList.Add(new DataItem { Category = "新类别", ...

    支支持处理asp的web service调用

    Map&lt;String, WebServiceResultBean&gt; rs = ser.invoke("EOMS", "isAlive1", map); System.out.println(rs.get("return").getValue()); --&gt; &lt;serviceGroup&gt; &lt;service id="EOMS" endpoint=...

    struts2拦截器和验证框架(适合初学者-经藏版)

    ### Struts2 拦截器与验证框架详解 #### 一、Struts2概述 Struts2是一个基于Java的企业级Web应用开发框架,它继承了Struts1的优点,...这些知识点对于初学者来说非常重要,能够帮助他们更好地理解和使用Struts2框架。

Global site tag (gtag.js) - Google Analytics