写了个纯对象化的,代替Tiles和SiteMesh的布局工具jWebBox(已开源),大家评一评

项目在 [url]http://sourceforge.net/projects/jwebbox[/url]
解压后里面有个war包,扔到Tomcat6.0目录下就可以了,这是个很小的包,里面没有引用其它包,绝对能跑起来。
主要特点: 实现了Tiles的类似功能,完全对象化,无需配置,直接在页面可动态生成其它页面组件(称做Box),从此,面向对象的那一套什么继承接口之类的,就可以放手用在页面布局上了。多说无益,还是看看代码吧:
JSP源码示例一:
(注:新版演示中jsp中源码已移到单独类中,但道理是一样的,以下内容是针对1.0版的,为了省打几个字就不把新版内容贴上来了,有兴趣的可自已去下载)

<%@page import="com.jwebbox.Box"%>
<%
class HomePage extends Box{
public void init(){
this.setPage("/MainLayoutBox.jsp");
this.putBox("top", new Box("/menu.jsp").setAttribute("msg","(Demo3: show how to extends a Box)"));
this.putBox("left", new Box().addRunable("/alex.jsp"));
this.putBox("right", new Box("/david.jsp"));
this.putBox("bottom", new Box("/james.jsp"));
}
}
class OtherPage extends HomePage{}
new OtherPage().putBox("right",new Box("/peter.jsp")).putBox("bottom",new Box()).show(pageContext);;
%>

以上代码先生成一个Box对象,再设它的模板为MainLayoutBox.jsp, 然后给它上下左右栏赋值, 然后是另一个类继承于它并生成一个实例,修改父类的属性后调用show()方法显示出来。页面截图见附图第一张。可见,这个布局方法直接了当,不要任何配置文件。为了演示,我将代码直接写在jsp中,其实也可以抽出来写到单独的java文件中。
以上源码中引用到的JSP布局模板文件源码如下:

<%@page import="com.jwebbox.Box"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style type="text/css">
<!--
#temp_content {width: 900px; margin: auto; background-color:#EEEEEE;}
#temp_content #temp_left {margin: 10px; width: 500px; float: left; background-color:#CCFFCC; }
#temp_content #temp_bottom {clear: both; margin: 10px;background-color:#9999CC;}
#temp_content #temp_top {margin: 10px;background-color:#99CCCC;}
#temp_content #temp_right {margin: 10px; float: right; width: 350px;background-color:#FFFFCC;}
-->
</style>
</head>
<%
Box m = Box.getBox(pageContext);
%>
<body>
<div id="temp_content">
<div id="temp_top">
<div align="center">
<%m.getBoxFromMap("top").show(pageContext); %>
</div>
</div>
<div id="temp_left">
<%m.getBoxFromMap("left").show(pageContext);%>
</div>
<div id="temp_right">
<%m.getBoxFromMap("right").show(pageContext);%>
</div>
<div id="temp_bottom">
<div align="center">
<%m.getBoxFromMap("bottom").show(pageContext);%>
</div>
</div>
</div>
</body>
</html>

这是一个常见的四栏布局,就不多说了。

JSP源码示例二:

<%@page import="com.jwebboxtest.GetSportsController"%>
<%@page import="com.jwebbox.Box"%>
<%@page import="com.jwebbox.TableBox"%>
<%
class HomePage extends Box{
public void init(){
this.setPage("/MainLayoutBox.jsp");
TableBox table = new TableBox(null,GetSportsController.class);
table.setAttribute("name","tom");
table.setRow(30);
table.setCol(1);
table.setElementBox(new Box("/tom.jsp"));
table.setRenderBox(new Box("/tomRender.jsp").setAttribute("title","Hi, I'm Tom"));
this.putBox("top", new Box("/menu.jsp").setAttribute("msg","(Demo2: show how to initializ params and use your render page.)"));
this.putBox("left", new Box().addRunable("/alex.jsp").addRunable(table).addRunable("/peter.jsp"));
this.putBox("right", new Box().addRunable("/david.jsp").addRunable("/peter.jsp").addRunable("/james.jsp"));
this.putBox("bottom", new Box("/peter.jsp"));
}
}
new HomePage().show(pageContext);
%>

以上代码主要演示了一个TableBox的用法,这个TableBox是继承于Box的一个子类,用于表格的显示,效果图见附图2。 这个演示还涉及到tomRender.jsp,tom.jsp,GetSportsController.class三个文件,tomRender.jsp是一个表格的模板(如不给出模板,系统会使用默认自带的一个html格式), tom.jsp是要显示元素的模板,另一个文件GetSportsController.class 相当于Tiles中的Controller,用于生成数据,用过Tiles的都知道,我就不多讲了,源码如下
public class GetSportsController implements BoxController {
static final String[] sports = { "basketball", "soccer", "vollyball" };

public void execute(PageContext pageContext, Box box) {
TableBox table = (TableBox) box;
String name = (String) table.getAttribute("name");
List<Object> l = new ArrayList<Object>();
for (int i = 1; i <= table.getCol() * table.getRow(); i++) {
l.add(new String[] { name, String.valueOf(i), sports[i % 3] });
}
table.setElementList(l);
};
}

和Tiles中的Controller是类似的,上面实际上和一个分页查询的逻辑是类似的。另外Box类和Tiles一样,也可以指定一个ControllerURL来往Request里压数据。我编写TableBox的主要目的是验证一下Box基类的作用,同样的道理,以后编写其它页面组件应该也不难,这里面用对象编程的好处就体现出来了。
有兴趣的同志们可以当下来试一试。只要是JSP页面,这个布局工具就能用,唯一要做的就是把jwebbox1_0.jar这个包扔到WEB-INF/Lib目录下。
目前还是1.0版,错误肯定不少,欢呼大家指正。我今后初步的打算是在它的单例化、序列化上做一些改进,如果有时间,再加一些分页条,Tree等组件进来, 本来只想做一个布局工具的,不知不觉要做成组件包了,也不知道是好还是坏,但有一点可以肯定的是,这些组件在Eclipse中只要敲个点号,就会有代码提示,并有编译检查,绝对比标签好用。
使用sitemesh替换tiles2,spring mvc+spring web flow+sitemsh NULL 博文链接:https://clongjava.iteye.com/blog/1350754 立即下载

相关推荐

Tiles:极简的新标签页

概述 Tiles 是一个替代的新标签页,它以彩色、简约的瓷砖网格显示您最喜欢的所有网站,其中每个瓷砖都有一个两个字符的符号和一个根据网站图标自动设置的背景颜色。 您可以添加的瓷砖数量几乎没有限制。 使用 Chrome 工具栏中的按钮添加图块真的很容易。 无论您添加多少磁贴,您都无需滚动以找到所需的站点 - 磁贴会根据需要增长和收缩。 Tiles 努力改善新标签页的美感和功能。 每个磁贴都可以通过其颜色和两个字符的符号轻松识别,即使有大量磁贴,也可以轻松启动您喜爱的网站。 同时,所有的磁贴都是一致且干净的,让您的新标签页无论如何都看起来很漂亮。 截图 您可以在目录中查看扩展程序的屏幕截图。 测试 要运行测试,您必须转至chrome-extension://[EXTENSION ID]/tests/tests.html ,其中[EXTENSION ID]是来自 Chrome 扩展程序的 I

一个代替Tiles和SiteMesh的布局工具(已开源)

   项目在 [url]http://sourceforge.net/projects/jwebbox[/url]  解压后里面有个war包,扔到Tomcat6.0目录下就可以了,这是个很小的包,里面没有引用其它包,绝对能跑起来。  主要特点: 实现了Tiles的类似功能,完全对象化,无需配置,直接在页面可动态生成其它页面组件(称做Box),从此,面向对象的那一套什么继承接口之类的,就可以放手用在

drinkjava的专栏 1383

政府科技管理者如何提升科技成果转化项目进场交易的备案效率?.docx

政府科技管理者如何提升科技成果转化项目进场交易的备案效率?

JSP页面布局工具jWebBox升级到到2.0版

这是一个JSP页面布局工具,作用和 Tiles, Sitemesh 类似(还有最近的轻量级JSP Layout和Stripes布局工具等),用于JSP页面的布局,最早版本是在08年写的,有不少问题,现在升级到2.0.0版,源码全部重构了一遍。其特点是只有一个纯Java类,无须XML配置(实际上是用布局Java类代替XML),用一个三百行的Java类实现了Tiles的全部功能,功能与Tiles类似,...

Drinkjava2的博客 341

科技中介服务机构如何通过智能体技术提升服务效率与专业度?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

产业园区如何高效对接企业技术需求并推动成果转化?观点作者:科易网-国家科技成果转化(厦门)示范基地.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

JSP框架Tiles,好东西。

下面主要演示了Tiles的基本用法,已经SpringMVC整合Tiles。 Tiles 是一种JSP布局框架,主要目的是将复杂的jsp页面分割成部分,比如头部模块、主体模块、尾部模块,然后将各模块组合成一个最终表示用页面用的,这样的话,便于对页面的各个机能的变更及维护。并且更容易实现代码的重用。 相当于JSP中可以通过include标签动态插入一个JSP页面的替代方案。首先导入相关Jar包,Ma

ITtraveler的专栏 6853

山区道路边坡落石隐患检测数据集VOC+YOLO格式241张1类别.md

【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 优快云 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 优快云 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 优快云 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 优快云 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。

java tiles类似_java – 更好地替代Apache Tiles

总的来说,我会推荐SiteMesh over Tiles。Here’s如何设置SiteMesh 3您可以对页内模板使用“瓷砖”,但可以将SiteMesh用于网站范围的模板。不过…如何使瓷砖吸少:>使用约定超过配置。例如,将您的定义放在webapp / WEB-INF / tiles.xml中,并且不需要告诉tile它在哪里。>使用通配符:如果您的控制器返回视图名称索引,它将匹配定义*,...

weixin_33205138的博客 269

高空作业栏杆检测数据集VOC+YOLO格式230张3类别.md

【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 优快云 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 优快云 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 优快云 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 优快云 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。

ti-cgt-c2000-22.6.0.LTS-windows-x64-installer

ti-cgt-c2000-22.6.0.LTS-windows-x64-installer

Sitemesh与Freemarker

SiteMesh简介     sitemesh应用Decorator模式,用filter截取request和response,把页面组件head,content,banner结合为一个完整的视图。通常我们都是用include标签在每个jsp页面中来不断的包含各种header, stylesheet,         scripts and footer,现在,在sitemesh的帮助下,我们可以

Michael Wing's workspace 2304

光伏板太阳能板尘土灰尘脏污检测数据集VOC+YOLO格式1006张3类别.md

【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 优快云 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 优快云 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 优快云 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 优快云 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。

SiteMesh 过滤不装饰的页面

要实现SiteMesh过滤不装饰页面,需要做两方面的设置1、在sitemesh.xml里需要有excludes元素   &lt;excludes&gt;  &lt;pattern&gt;/index.jsp&lt;/pattern&gt;  &lt;pattern&gt;/scripts/*.*&lt;/pattern&gt;  &lt;pattern&gt;/htmleditor/*.*&...

zhangzuanqian 340

无功优化电网故障下分布式能源系统多目标优化[并网转换器(GCC)](Matlab代码&Simulink实现)

内容概要:本文详细介绍了基于Plecs或Simulink平台构建的全桥LLC谐振变换器仿真模型,重点研究了变频控制与移相混合控制策略下的闭环系统设计与参数优化方法。内容涵盖全桥LLC谐振变换器的工作原理、小信号建模技术(如扩展描述函数EDF)、PID控制器参数整定过程以及软开关实现条件,并通过仿真验证了系统在稳态输出性能、动态响应特性(如启动过程与负载阶跃)和频率调节平滑性等方面的优良表现。同时提供了完整的仿真模型、参数设计报告及说明文档,有助于读者复现结果并深入理解控制机制与建模细节。; 适合人群:具备电力电子、自动控制等相关专业知识背景,从事高效率电源设计、新能源变换系统研发的工程师及高等院校电力电子与电力传动方向的研究生。; 使用场景及目标:①掌握LLC谐振变换器的小信号建模与闭环控制系统设计方法;②学习并应用变频与移相结合控制策略提升电源转换效率;③支撑科研项目中的电力电子系统仿真验证或学位论文课题开发;④复现高水平学术论文中关于谐振变换器的控制方案与性能分析。; 阅读建议:建议结合所提供的仿真模型与参数设计资料,边运行仿真边对照文章内容理解控制逻辑与建模过程,特别关注小信号模型的建立方法与PID控制器参数整定环节,以增强对实际工程问题的分析与设计能力。

从‘全步’到‘微步’:一张图看懂步进电机细分控制,选对模式让你的项目更丝滑

本文深入解析步进电机细分控制技术,从全步到微步的演进过程,帮助工程师根据项目需求选择最优控制模式。通过对比不同细分等级的性能特点和应用场景,提供3D打印、实验室自动化等领域的黄金配置方案,实现更精准、平稳的电机控制效果。

weixin_29290259的博客 471
上一篇: 一个用Delphi做的通用UI功能测试方案,大家提提意见
下一篇: 一个代替Tiles和SiteMesh的布局工具(已开源)
drinkjava
博客等级 码龄19年 1粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值