jsp 模板继承 模仿djano的模板继承.
By:Roy.LiuLast updated:2015-02-25
自从用了django 的模板继承之后,就越来越喜欢这种风格,它可以使页面更简介,无论自己查看代码,维护代码,都很舒服, 但java jsp 一直没有类似的东西, 在万能的谷歌帮助之下,找到了一些资料,其中一部分是用类似于tiles,sitemesh 等框架来实现,但这些都不是我心里想要的那种,最后搜索到了rapid framework 里面有提到这个东西,但却没有演示代码, 于是自己按提示加工改造了一下,可以正常工作。
做web 网站一般有同一的风格,头部,左边导航栏,主工作区,底部,头尾基本固定的,这些东西可以写在基类模板中,包括整个站点用到的css,js 都可以在基类模板中定义。 在基类模板中定义很多扩展点,其他继承于这个模板的页面,只需要写扩展点部分的页面代码就可以,这样页面就可以看起来很简洁.
实现的方式也很简单,就是写jsp tag, 自定义的 tag 来实现, 具体的实现,可以参考源代码.
比如,如下就是基类模板base.jsp
作为测试模板,定义了两个扩展点js_css_extend,myname。 其他继承于这个模板的页面只需要实现扩展点即可, 比如index.jsp
标签的定义
这样就可以很简单的实现jsp 模板的继承,用起来很爽. 测试源代码下载:
jsp template extend sapmel
做web 网站一般有同一的风格,头部,左边导航栏,主工作区,底部,头尾基本固定的,这些东西可以写在基类模板中,包括整个站点用到的css,js 都可以在基类模板中定义。 在基类模板中定义很多扩展点,其他继承于这个模板的页面,只需要写扩展点部分的页面代码就可以,这样页面就可以看起来很简洁.
实现的方式也很简单,就是写jsp tag, 自定义的 tag 来实现, 具体的实现,可以参考源代码.
比如,如下就是基类模板base.jsp
<%@ page language= "java" contentType= "text/html; charset=UTF-8" pageEncoding= "UTF-8" %> <%@ include file= "taglibs.jsp" %> <haed> <script type= ""text/javascript"" src= ""${ctx" }= "" js= "" alertbox.js"= "" ></script> <e:block name= ""js_css_extend"" ></e:block> <input type= ""text"" id= ""myname"" name= ""myname"" > <e:block name= ""content"" > this is the main content </e:block> </haed> |
作为测试模板,定义了两个扩展点js_css_extend,myname。 其他继承于这个模板的页面只需要实现扩展点即可, 比如index.jsp
<%@ taglib uri= "http://yihaomen.com/jsp/extend/core" prefix= "e" %> <e:override name= ""js_css_extend"" > <script type= ""text/javascript"" src= ""${ctx" }= "" js= "" jquery= "" html5.js"= "" ></script> </e:override> <e:override name= ""content"" > <div> <h2>test</h2> <p>This is my test.</p> </div> </e:override> <%@ include file= "base.jsp" %> |
标签的定义
<!--?xml version=" 1.0 " encoding="UTF- 8 " ?--> <taglib xmlns= ""http://java.sun.com/xml/ns/javaee"" xmlns:xsi= ""http://www.w3.org/2001/XMLSchema-instance"" xsi:schemalocation= ""http://java.sun.com/xml/ns/javaee" http:= "" java.sun.com= "" xml= "" ns= "" javaee= "" web-jsptaglibrary_2_1.xsd"= "" version= ""2.1"" > <description>my jsp extend tags</description> <display-name>jsp extend</display-name> <tlib-version> 1.0 </tlib-version> < short -name>e</ short -name> <uri>http: //yihaomen.com/jsp/extend/core</uri> <tag> <description> block tag </description> <name>block</name> <tag- class >com.yihaomen.extend.tag.BlockTag</tag- class > <body-content>JSP</body-content> <attribute> <description> block name </description> <name>name</name> <required> true </required> <rtexprvalue> true </rtexprvalue> </attribute> </tag> <tag> <description> override desc </description> <name>override</name> <tag- class >com.yihaomen.extend.tag.OverrideTag</tag- class > <body-content>JSP</body-content> <attribute> <description> override name, must be equals block name for override </description> <name>name</name> <required> true </required> <rtexprvalue> true </rtexprvalue> </attribute> </tag> </taglib> |
这样就可以很简单的实现jsp 模板的继承,用起来很爽. 测试源代码下载:
jsp template extend sapmel
From:一号门
Previous:用java代码得到当前电脑有几个CPU,几个处理器
COMMENTS