1. 程式人生 > >JSP頁面佈局工具JWebBox升級到2.0版

JSP頁面佈局工具JWebBox升級到2.0版

這是一個JSP頁面佈局工具,作用和 Tiles, Sitemesh 類似(還有最近的輕量級JSP Layout和Stripes佈局工具),用於JSP頁面的佈局,最早版本是在08年寫的,有不少問題,現在升級到2.0.0版,原始碼全部重構了一遍。其特點是隻有一個純Java類,無須XML配置(實際上是用Java類代替XML),用一個三百行的純Java檔案實現了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頁面檔案和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().setPage("/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);

%>


相關推薦

JSP頁面佈局工具JWebBox升級2.0

這是一個JSP頁面佈局工具,作用和 Tiles, Sitemesh 類似(還有最近的輕量級JSP Layout和Stripes佈局工具),用於JSP頁面的佈局,最早版本是在08年寫的,有不少問題,現在升級到2.0.0版,原始碼全部重構了一遍。其特點是隻有一個純Java類,無

Mac App 最好的快速啟動及切換工具:Manico 2.0

閱讀 enter 區域 提示 aca 頁面 進行 版本 喜歡 本文標簽: Mac效率工具 Mac小工具 Manico2.0 MacApp快速啟動 MacApp切換工具 在 OS X 下,我們想要啟動或切換應用時,通常有以下三個選擇: 對於常用應用,將鼠標光標移動到屏幕下方

001-pro ant design 升級2.0後變更

span pro ble .com change alert info card extend 一、更新點 1、目錄調整 2、本地代理服務器調整 roadhog→umi 配置方式 在這個config/config.js配置 "proxy": { "

專案釋出到各個電腦上,css樣式都變了,jsp頁面佈局亂了,怎麼處理

1.在做專案開始的時候,佈局頁面,就應該設定寬高為56%或者?%,而不是具體的780px; 2.做專案的時候儘可能的把公共的樣式放在css裡面。這樣調整的話,只需要調整css樣式而不是把所有的頁面全部開啟,設定一遍; 3.把電腦設定成一樣的解析度如1280*1024 4.選擇一樣的瀏覽器

springboot 1.5.2升級2.0.4 mongodb中QueryBuilder中DBObject被棄用,改為Document構造及解決方式

今天封裝mongo工具包,發現QueryBuilder中DBObject被棄用,改為Document構造。為什麼,我們稍微分析一下  Document實現Map,與基本的DBObject相比,可編寫的程式碼更少 DBObject雖然不被推薦,那些從2.x驅動程式系列可能繼續使用DB

【程式碼分析工具】starTool 2.0使用HTML做程式碼地圖分析

【設計背景】 當前starTool已經可以完整輸出一個產品的程式碼地圖,類似於如下 工具介紹連結:https://blog.csdn.net/weixin_39020940/article/details/80633835 這樣確實能比較好的縱覽整個工程的程式碼結構,但是對於類

創建頁面---基於Ant-Design-Pro-2-0-的CMS管理後臺入門系列

啟動項 表情 在一起 項目 cms 系列 .com att git 拉取項目 luwei.web.study-ant-design-pro, 切換至 page 分支,可看到創建頁面的效果 啟動項目 前置:安裝完依賴包,若未安裝,請移步 安裝項目依賴包 運行命令啟動項

升級.Net Core 1.x App 及.Net Standard 1.x Library 到2.0

從網上找到的一些.net core 例子,發現都是1.x的了。現在已更新2.0,但是光在專案裡邊選擇SDK 2.0並不能完美解決上圖:這就尷尬了。只能手動改了這樣就可以編譯成功了。至於程式碼裡邊的一些不相容性,需要一點點按手冊來改了

【Web】JavaWeb專案為什麼我們要放棄jsp?為什麼要前後端解耦?為什麼要前後端分離?2.0,為分散式架構打基礎。

前戲 前後端分離已成為網際網路專案開發的業界標準使用方式,通過nginx+tomcat的方式(也可以中間加一個nodejs)有效的進行解耦, 並且前後端分離會為以後的大型分散式架構、彈性計算架構、微服務架構、多端化服務(多種客戶端,例如:瀏覽器,車載終端,安卓,IOS等等

spring cloud 升級2.0踩坑

eureka部分首先就是之前的security.basic.enabled, security.user.name, security,user.password的過期改用spring.security.user.name和spring.security.user.passw

vue專案1.0升級2.0總結

配置檔案的更改 依賴包更新 路由寫法更改 指令更改 鉤子函式更改 通訊方法 廢棄的api 相應依賴包不適合當前框架版本的重構 props的屬性不能在其他地方更改 根例項不能掛載在body或html

Serverless Kubernetes全面升級2.0架構:支援多名稱空間、RBAC、CRD、PV/PVC等功能

Serverless Kubernetes概述: 阿里雲Serverless Kubernetes容器服務最新開放香港、新加坡

CentOS 6.5 apache源碼安裝2.0

apacheyum install -y pcre-devel zlib-devel(可能需要安裝gcc)tar xf apr-1.5.2.tar.bz2cd apr-1.5.2./configure --prefix=/usr/local/aprmakemake installcd ..tar xf apr

記一次結巴分詞.net core 2.0 nuget發布過程

core param inf 文件 pos 成功 搜索 ros uri 最近用到分詞考慮很久,選用了結巴分詞,原因見博客Lucene.net(4.8.0) 學習問題記錄五: JIEba分詞和Lucene的結合,以及對分詞器的思考 既然選好了,難就開始行動吧 。 查了.net

仿QQ聊天軟體2.0

仿QQ聊天軟體2.0版 轉載請標明出處:牟尼的專欄 http://blog.csdn.net/u012027907     上次課設做了Java版的仿QQ聊天程式。這次軟體實訓,我們繼續完好了仿QQ聊天程式,將上次未完畢及不完好的地方

仿QQ聊天軟件2.0

字段 col 12px ava 字體設置 pic 清華大學 環境 總結 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/u012027907/article/details/369528

python介紹2.0

 1.Python介紹         Python的創始人為吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕期間,Guido開始寫Python語言的編輯器。Python的名字是來自Guido所摯愛的電視劇Monty Python’ s

CSDN新版Markdown編輯器(Alpha 2.0)使用須知:

感謝大家一直支援CSDN Markdown編輯器,每一次改動和優化,都是努力讓你的寫作體驗變得更好。這次我們更新了以下內容: 1. 我們重構了MD編輯器程式碼,比起以前更穩定,速度也更快; 2. 增加了儲存功能; 3. 支援圖片拖拽上傳; 4. 支援

Spring Boot 2.0 的開源專案雲收藏來了!

給大家聊一聊雲收藏從 Spring Boot 1.0 升級到 2.0 所踩的坑 先給大家晒一下雲收藏的幾個資料,作為一個 Spring Boot 的開源專案(https://github.com/cloudfavorites/favorites-web)目前在 Github 上面已經有1600多個 Star,