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

这是一个JSP页面布局工具,作用和 Tiles, Sitemesh 类似(还有最近的轻量级JSP Layout和Stripes布局工具等),用于JSP页面的布局,最早版本是在08年写的,有不少问题,现在升级到2.0.0版,源码全部重构了一遍。其特点是只有一个纯Java类,无须XML配置(实际上是用布局Java类代替XML),用一个三百行的Java类实现了Tiles的全部功能,功能与Tiles类似,但是在灵活性、无侵入性、简单性和可定制化方面要优于Tiles。使用方式上与Tiles类似,会Tiles的可以很快上手。
JWebBox2.0.0发布在: http://sourceforge.net/projects/jwebbox/, 采用开源BSD协议。

目前一些JSP页面布局工具的缺点:
Tiles: 功能强大但过于臃肿,版本依赖强,源码与struts联系太密,第三方库引用多,XML配置和标签不够灵活。
Sitemesh: 采用装饰器模式,不够强大灵活。
JSP Layout:功能过于简单,布局之间无继承关系,不能复用。
Stripes:是一个mvc框架,布局功能是其子功能,只有三个标签,功能太弱。

JWebBox2.0.0版主要特点:
1)用JAVA类代替XML配置,利用到了JAVA的继承和变量覆盖等特点,JAVA类是每个程序员都能看懂的,无需学习。
如果布局太复杂可以考虑利用UML工具绘出布局继承和引用关系图。
2)无侵入性,可以和其它页面布局及MVC框架共用而无冲突, 可用于整个网站的架构,也可以用于编写局部页面零件。
3)没有引入任何第三方类库(连Log4j都没用), 也没有使用标签,纯Java方法调用,无学习负担。
4)布局(Box类)是动态生成,在运行期创建和修改非常方便。
5)支持静态方法、实例方法、URL引用三种数据预处理方式。方法签名采用约定而不是接口,减小侵入性。
6)只有一个很小的Box.java文件是必须的,拷贝到项目源码目录下即可使用,方便查看代码和更改源码(采用BSD开源协议)。

使用方法:
JWebBox2.0.0示例文件已打包成jwebbox2.war文件,可直接扔到Webapps目录下运行,示例演示了几种布局用法。
源码也在.war包里,解压后可见。也可直接将jwebbox2.war导入到Eclipse作为一个项目查看。对于新项目,将其
中的Box.java文件,拷到项目源码目录中即可。

一个典型的使用JWebBox2.0布局的项目,由模板页面、布局类、数据预处理类(可选)组成,例如:
1.JSP模板文件,
如一个模板文件template.jsp内容如下:
<html xmlns="http://www.w3.org/1999/xhtml">
<%@page import="com.jwebbox.Box"%>
<%Box box = Box.getBox(pageContext);%>
<head>
<style type="text/css">...</style>
<title>JWebBox2.0.0 Demo</title>
</head>
<body>
<div id="temp_content">
<div id="temp_top">
<div align="center">
<% box.showAttribute("menu");%>
</div>
</div>
<% box.showAttribute("body");%>
<div id="temp_bottom">
<div align="center">
<% box.showAttribute("footer");%>
</div>
</div>
</div>
</body>
</html>

2.布局Java类
如 DemoBox1.java
public class DemoBox1 extends Box {
{
this.setPage("/template/template.jsp");
this.setAttribute("menu", new Box("/template/menu.jsp").setAttribute("msg", "Demo1 - A basic layout"));
this.setAttribute("body", new BodyLeftRight());
this.setAttribute("footer", "/template/footer.jsp");
}
}

和 DemoBox2.java
public class DemoBox2 extends DemoBox1 {
{
this.setAttribute("menu", ((Box) this.getAttribute("menu")).setAttribute("msg", "Demo2 - Change body layout"));
this.setAttribute("body", new BodyTopDown());
}
}

其中BodyLeftRight 和 BodyTopDown 也是布局类,一个是左右布局,一个是上下布局,源码因篇幅原因略过,可详见下载示例包。

3.Logic类(可选) 用于访问数据库以对页面提供数据,也可以在运行期更改或创建新布局。
public class DemoLogic {
...略一段代码...
public static void prepareStaticMethod1(PageContext pageContext, Box callerBox) throws IOException {
pageContext.getOut().write(" This is inserted by prepareStaticMethod1 method<br/>");
}

public void preparerBeanMethod1(PageContext pageContext, Box callerBox) throws IOException {
((Box) callerBox.getAttribute("menu")).setAttribute("msg", "Demo3 - Show how prepare methods be called");
callerBox.setAttribute("footer", "/template/page3.jsp");
}

public static DemoLogic getInstance(PageContext pageContext) {
return SingletonInstance.INSTANCE;
// If use Spring, get bean instance from pageContext:
}
}

4.最后在需要显示的JSP页面调用布局显示即可:
index.jsp:
<%
String demono = request.getParameter("demono");
if ("2".equals(demono))
new DemoBox2().show(pageContext);
else if ("1".equals(demono))
new DemoBox1().show(pageContext);

%>
html转jsp工具 此工具可以把整个项目中的html页面转化成jsp,里面有说明文档,好东西大家一起分享。嘎嘎嘎 立即下载

相关推荐

jsp页面编辑器

jsp页面引入KindEditor文本编辑器

Babeljs简介与使用

ES6-babel工具简介

CamphorBlossom的博客 5679

创建快速访问的JSP页面工具

创建快速访问的JSP页面工具创建Bat 根据java 生成一连串的访问页面的代码

vue2.0 - layout组件(三)Layout页面布局

vue-Layout

sqLeiQ的博客 5460

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

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

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

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

制作分页工具类,实现分页操作JSP+Servlet+数据库

分页操作 基于jsp+Servlet+数据库的分页操作 每页限制显示的条数,显示总页数,总条数.可以看上一页下一页 操作说明 :需先进入到controller层的接口,将数据查询出来 ​ 在放入到session域中,可以转发或重定向到展示数据的页面 ​ 使用El表达式取出数据 先写个制作分页的工具类 LimitPageUtil分页工具类 import java.util.List; /** * @program: internetbar_Test * @description: 分页工具

简单的男孩 465

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

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

jsp页面自动国际化工具+js文件自动国际化工具--懒人的解决方案

   公司的应用要求都做国际化,jsp页面中有大量的中文,需要将它们使用spring 的国际化标签实现国际化;一个一个手工去查找中文、再转换为spring国际化标签、并生成中英文的国际化资源文件,这是个重复且无聊的工作,页面少还好,如果页面多,会让人发狂,所以写了一个提取jsp页面中的中文,将它们替换为国际化标签,并生成国际化资源文件的小工具;主要代码:import java.io.File; i...

zqz_zqz的博客 2582

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

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

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

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

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

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

drinkjava的专栏 278

Doris Streamloader安装教程

Doris Streamloader 是一款用于将数据导入 Doris 数据库的专用客户端工具。本文介绍其在centos7环境下的安装过程

qq_44540985的博客 1091

jsp 服务器端组件,jWebBox: 这是一个服务端页面布局工具,支持HTML/JSP/FreeMaker等...

(English version see README-English.md)jWebBox这是一个服务端(支持JSP和FreeMaker)页面布局工具,特点是简单,无XML,仅用500行源码实现了与Apache Tiles类似的页面布局功能。目前一些服务端JSP页面布局工具的缺点:Apache Tiles: 功能强大但过于臃肿,源码复杂,第三方库引用多,XML配置不方便,动态配置功能差。Site...

weixin_29722785的博客 418

别再怕DRIVER_VERIFIER_DMA_VIOLATION蓝屏:手把手教你用WinDbg分析IOMMU与驱动冲突

本文深入解析DRIVER_VERIFIER_DMA_VIOLATION蓝屏错误,从IOMMU原理到实战排错,手把手教你使用WinDbg分析驱动冲突。通过理解DMA与IOMMU的核心机制、搭建分析环境、解读DMAR表与设备拓扑,最终定位问题驱动并提供解决方案,帮助开发者和IT运维人员有效应对此类系统崩溃问题。

weixin_30298497的博客 803

别再踩坑了!CAPL脚本里局部变量和全局变量的那些“怪事”(附CANoe实测代码)

本文深度解析CAPL脚本中局部变量和全局变量的特殊机制,揭示其与通用编程语言的差异。通过实测代码展示静态局部变量的默认行为和全局变量的节点隔离特性,并提供高效避坑指南,帮助汽车网络测试工程师避免常见陷阱。

weixin_30225755的博客 294

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

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

drinkjava的专栏 1383

北斗导航 | raPPPid软件功能模块详解

raPPPid(Rapid Precise Point Positioning with integer ambiguity resolution,快速精密单点定位与整周模糊度解算)是由维也纳工业大学(TU Wien)大地测量与地理信息系开发的MATLAB开源PPP软件包。它是VieVS(Vienna VLBI and Satellite Software,维也纳VLBI与卫星软件)的PPP模块,由Marcus Franz Glaner和Robert Weber主导开发。

尘世冰封的专栏 588

征求IOC/AOP微形开源项目jBeanBox合作者

这是一个微形开源项目,目标是使用尽可能少的Java类实现全功能的IOC和AOP功能,有兴趣参加的朋友可以跟贴,贡献者将列入作者名单,谢谢! 项目的目的是取消XML配置文件而用纯Java类代替,Spring本身越来越臃肿,替我们自做主张集成了自以为最好的一条龙服务,这本身没什么,可以自取所需。 但是它最大问题是采用XML静态配置,导致需要动态修改配置功能时灵活性不够,注解的引入没有根本性变化。 j...

Drinkjava2的博客 261

【DRAM存储器五十六】LPDDR5介绍--WCK2CK Leveling和Read gate training

简述LPDDR5 WCK2CK leveling和read gate traning基本原理与操作步骤

highman110的博客 8793

基于cnn version_transformer VIT模型的动物图像分类 完整代码+数据 动物分类教程

基于cnn version_transformer VIT模型的动物图像分类 完整代码+数据 动物分类教程

机器学习深度学习业余选手 1002

jsp页面标签选择器

#id加属性选择器 $("#productType option[value='"+data.contractInfo.productType+"']").attr("selected","selected");

hit、run 3549

【异常】OpenAI提示内容有误 Invalid prompt: your prompt was flagged as potentially violating our usage policy.

用户需优先调整提示内容,确保符合OpenAI的使用政策。若问题持续,建议结合请求ID和具体代码示例联系官方支持。同时,可参考腾讯云、Microsoft Q&A等平台提供的错误处理实践(如重试机制、日志记录)优化代码健壮性。

奶爸的编程之路,也就一周冷个三天 2082

jsp编辑器_推荐五个非常实用的软件(编辑器和日常)

1.intellij idea 官网地址:http://www.jetbrains.com/idea/----------官网地址。 该编辑器真的是非常好用,从eclipse转过来的,确实非常好用;可以自动发现代码里面各种问题,自动补全代码,这些是在eclipse所不具备的;eclipse还得自己配置一下插件才可以补全js,jsp里面的代码。 若你是...

weixin_39590868的博客 1万+

信捷PLC XD5系列运动控制(10轴)编程应用篇

项目PLC采用XD5-60T10-E,36DI 24DO 晶体管输出,支持10路脉冲输出功能。TMR指令定时器时基可以自己设定,这点比其他品牌PLC方便。ZRN指令我们需要上升沿指令触发。 5、变址寻址 该说不说这个变址寻址是真的强,比西门子指针、三菱的变址寄存器Z 、V都要更加灵活。 7、特殊寄存器:时钟 8、如何建立PLC通讯...............

RXXW_Dor的博客 1万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

上一篇: JSP页面布局工具JWebBox升级到2.0版
下一篇: 征求IOC/AOP微形开源项目jBeanBox合作者
Drinkjava2
博客等级 码龄11年 9粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值