# jWebBox
**Repository Path**: drinkjava2/jWebBox
## Basic Information
- **Project Name**: jWebBox
- **Description**: 这是一个服务端页面布局工具,支持HTML/JSP/FreeMaker等
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 31
- **Forks**: 4
- **Created**: 2016-08-18
- **Last Updated**: 2021-01-08
## Categories & Tags
**Categories**: webui
**Tags**: None
## README
(English version see [README-English.md](README-English.md))
### jWebBox
**License:** [Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0)
这是一个服务端(支持JSP和FreeMaker)页面布局工具,特点是简单,无XML,仅用500行源码实现了与Apache Tiles类似的页面布局功能。
#### 目前一些服务端JSP页面布局工具的缺点:
* Apache Tiles: 功能强大但过于臃肿,源码复杂,第三方库引用多,XML配置不方便,动态配置功能差。
* Sitemesh: 采用装饰器模式,功能不如Apache Tiles灵活。
* JSP Layout或Stripes等JSP布局工具:功能不够强,在布局的继承或参数传递上有问题。
#### JWebBox特点:
1. 简单, 整个项目仅500行源码,易于学习和维护。
2. 与jBeanBox和jSqlBox项目类似,用纯JAVA类代替XML配置(实际上前两个项目是受此项目启发),支持动态配置,配置可以在运行期动态生成和修改。
3. 无侵入性,支持JSP和FreeMaker两种模板混用。可用于整个网站的服务端布局,也可用于编写页面局部零件。
4. 支持静态方法、实例方法、URL引用三种数据准备方式。
5. 可利用它搭建小巧的MVC架构,向复杂的Spring-MVC告别,详见[jBooox](https://gitee.com/drinkjava2/jBooox)项目。
#### 使用方法:
在项目的pom.xml中添加如下内容:
```
com.github.drinkjava2
jwebbox
2.1.2
javax.servlet
javax.servlet-api
3.0.1
provided
javax.servlet.jsp
javax.servlet.jsp-api
2.3.1
provided
```
jWebBox运行于Java6或以上,依赖于javax.servlet-api和javax.servlet.jsp-api这两个运行期库(通常由Servlet容器提供)。
#### 详细介绍
以下通过对示例的解释来详细说明jWebBox的使用,示例项目源码位于项目的jwebbox-demo目录下,在项目的根目录,也有一个打包好的jwebbox-demo.war文件,可直接扔到Tomcat或WebLogic里运行。
#### 示例1 - 一个带菜单和底脚的左右布局
服务端代码如下:
```
public static class demo1 extends WebBox {
{ this.setPage("/WEB-INF/pages/homepage.jsp");
this.setAttribute("menu",
new WebBox("/WEB-INF/pages/menu.jsp").setAttribute("msg", "Demo1 - A basic layout"));
this.setAttribute("body", new LeftRightLayout());
this.setAttribute("footer", "/WEB-INF/pages/footer.jsp");
}
}
public static class LeftRightLayout extends WebBox {
{ this.setPage("/WEB-INF/pages/left_right_layout.jsp");
ArrayList