在传统 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:attribute>`、`<jsp:body>`、`<jsp:invoke>`等,主要用于标记文件内部。 #### 四、具体动作详解 1. **<jsp:useBean>** - **定义**:使用此标签可以在JSP页面中定义一个JavaBean实例。 - **使用格式**:...
<dubbo:application/> <dubbo:module/> <dubbo:provider/> <dubbo:consumer/> <dubbo:method/> <dubbo:argument/> <dubbo:parameter/> 协议参考手册 dubbo:// rmi:// hessian:// http:// webservice:// thrift:// ...
<result name="success">/success.jsp</result> </action> </package> ``` 这里定义了一个名为`loggingStack`的拦截器栈,其中包含了自定义的日志拦截器`logging`以及默认的拦截器栈`defaultStack`。 通过以上...
<br/><br/><br/>--------------------------------------------------------------------------------<br/>主要概念<br/><br/>利用 P/Invoke 调用 Win32 API. <br/>直接读取另一进程的内存. <br/>注意:这篇文章的第...
page=<s:property value=”%{pageBean.currentPage-1}%”/> ”></a>`:超链接,点击将显示当前页的上一页的内容。 (6) `<a href=”stu/listMyAricle.action?page=<s:property value=”%{pageBean.currentPage+1}%”...
<param name="loginPage">/login.jsp</param> <param name="sessionAttr">user</param> </interceptor> <interceptor-stack name="defaultStack"> <interceptor-ref name="alias" /> <interceptor-ref name=...
<invoke partnerLink="InventoryPL" operation="CheckInventory"/> <assign> <copy> <from>..//order</from> <to>..//inventory/order</to> </copy> </assign> </onmessage> <otherwise> <reply message=...
### JSP自定义标签详解 #### 一、引言 JSP (Java Server Pages) 是一种基于Java的技术,...通过学习和实践自定义标签的创建和使用,开发者可以更好地理解和掌握 JSP 的核心原理,为后续的 Web 开发奠定坚实的基础。
在JSP中,JavaBean可以通过`<jsp:useBean>`标签引入,然后通过`<jsp:setProperty>`和`<jsp:getProperty>`来设置和获取Bean的属性。例如,JSP可以调用购物车Bean的`addItem`方法: ```jsp <jsp:useBean id="cart...
最后,在JSP页面中使用`<%@ taglib uri="/WEB-INF/tlds/PaginationTagLib.tld" prefix="pag" %> `导入标签库,并使用`<pag:pagination ... />`调用标签。 ```jsp <%@ taglib uri="/WEB-INF/tlds/PaginationTagLib....
在本教程中,我们将深入探讨如何使用C#和Windows Presentation Foundation (WPF)来创建一个炫酷的用户界面。WPF是.NET Framework的一部分,专为构建具有丰富视觉效果和高度交互性的桌面应用程序而设计。通过C#编程...
如果 <tx:annotation-driven/> 中没有配置 mode 参数,则默认使用代理模式进行后续处理;如果配置了 mode=aspectj,则使用 AspectJ 代码织入模式进行后续处理。 在本篇中,我们分析使用代理模式的代码,进入 ...
<jspversion>1.1</jspversion> <name>dtree</name> <uri>http://jakarta.apache.org/struts/tags-bean</uri> <!-- 定义自定义标签 --> <tag> <name>selectResnodes</name> <tagclass>myWeb.taglib.SelectTag...
在JavaServer Pages (JSP) 开发中,自定义标签是一种强大的工具,它允许开发者创建可重用的组件,提高代码的可维护性和可读性。本示例主要讲解了如何使用自定义标签实现`if-else`逻辑以及遍历操作。 首先,自定义...
<result name="input">/jsp/smeishop/admin/logon.jsp</result> </action> <action name="logout" class="logoutAction"> <result>/jsp/smeishop/admin/logon.jsp</result> </action> </package> ``` 这段...
1. **添加AJAX行为**:在JSF页面中,可以使用`<f:ajax>`标签来触发AJAX请求。例如,我们可以添加一个按钮,当点击时更新页面的一部分: ```html <h:form> <h:commandButton value="Click me"> <f:ajax execute=...
get => _dataList; set { _dataList = value; OnPropertyChanged(nameof(DataList)); } } private void UpdateChartData() { // 更新DataList的内容 DataList.Add(new DataItem { Category = "新类别", ...
Map<String, WebServiceResultBean> rs = ser.invoke("EOMS", "isAlive1", map); System.out.println(rs.get("return").getValue()); --> <serviceGroup> <service id="EOMS" endpoint=...
### Struts2 拦截器与验证框架详解 #### 一、Struts2概述 Struts2是一个基于Java的企业级Web应用开发框架,它继承了Struts1的优点,...这些知识点对于初学者来说非常重要,能够帮助他们更好地理解和使用Struts2框架。