1. 程式人生 > >基於EasyJWeb的網站安裝程式——搭建框架

基於EasyJWeb的網站安裝程式——搭建框架

最近需要對我們做的網站程式做一個安裝程式,今天下午花了點時間寫了框架。

1、需求。

首先,這個安裝程式應該是通用的,不同的程式使用這個安裝程式只需要做少許修改就可以正確執行;其次,安裝程式應該可配置,如安裝過程中顯示的版權、協議等資訊,還有安裝程式一共要執行多少個步驟、每個步驟執行前是否要檢查上一個步驟是否執行成功等;然後,安裝完畢時還要做必要的清理工作,如刪除安裝程式,包括class檔案、模板檔案和配置檔案等;最後,如果安裝過程中出現錯誤,應該有一個友好的錯誤處理介面。

2、設計。

配置:由於是要做一個通用的安裝程式,因此需要有配置資訊,也就是說要有一個獲取配置資訊的介面,如何獲取,從哪兒獲取,我們不關心,這些由具體的實現類來做。

資料的儲存:前臺提交進來的資料儲存在哪裡?是每一步都執行相應的安裝操作還是將左右操作放到最後一步來執行?這裡我們將資料用一個SetupStep類來儲存,並將這個類放到session中,從而實現分步驟的安裝。而第二個問題這裡採用配置方式來決定,使用者可以定製自己的安裝程式用什麼方式來安裝。

異常處理:這裡只做了一個簡單的異常處理類,暫時不做過多的處理,只便於日後擴充套件用。

3、實現

ISetupConfig介面

package com.easyjf.setup;

/**
 * 安裝的配置介面,返回配置資訊,如:總步驟數、是否驗證上一步等
 * 
@author Administrator
 *
 
*/

publicinterface ISetupConfig {
    
    
/**
     * 配置檔名
     
*/

    
staticfinal String configFileName ="";
    
    
/**
     * 返回當前安裝的軟體名
     * 
@return
     
*/

    String getProjectName();
    
    
/**
     * 返回當前安裝的軟體的介紹
     * 
@return
     
*/

    String getIntro();
    
    
/**
     * 返回當前軟體的安裝協議
     * 
@return
     
*/

    String getProtocol();
    
    
/**
     * 返回相關版權資訊
     * 
@return
     
*/

    String getCopyRight();
    
    
/**
     * 返回模板頁名稱
     * 
@return
     
*/

    String getPageName();
    
    
/**
     * 返回安裝資料存放在session中的標識
     * 
@return
     
*/

    String getSessionTag();
    
    
/**
     * 返回總的步驟數
     * 
@return
     
*/

    
int getTotalStepNum();
    
    
/**
     * 是否開啟驗證
     * 
@return
     
*/

    
boolean validatable();
    
    
/**
     * 安裝方式,每一步分步執行還是到最後一步一次性執行
     * 
@return
     
*/

    
boolean setupByStep();
    
    
/**
     * 初始化需要安裝的step
     
*/

    
void init();
    
    
/**
     * 根據步驟數獲取步驟
     * 
@param i
     * 
@return
     
*/

    SetupStep getSetupStep(
int i);
}

這個介面的主要功能是獲取配置資訊,以使安裝程式可配置,從而達到通用的目的。

然後我們須有有一個類來儲存安裝是填寫的安裝資訊,比如資料庫連線字串之類、網站基本配置資料等。這裡我們設計了一個類,這個類存放每一步前臺提交進來的資料,同時要執行這一步的安裝操作,如:修改配置檔案、儲存網站配置資訊等等。由於不同的步驟要執行的安裝操作不同,因此我將這個類設計為一個抽象類,將具體的安裝操作留給子類來實現。程式碼如下:

package com.easyjf.setup;

import java.util.Map;

publicabstractclass SetupStep {
    
    
/**
     * 標識這個步驟是第幾步
     
*/

    
privateint step =1;
    
    
/**
     * 儲存前臺提交進來的資料
     
*/

    
private Map data;
    
    
/**
     * 該步驟的上一步
     
*/

    
private SetupStep lastStep;
    
    
/**
     * 該步驟的下一步
     
*/

    
private SetupStep nextStep;
    
    
/**
     * 用於判斷該步驟是否成功執行
     
*/

    
privateboolean isOk;

    
publicboolean isOk() {
        
return isOk;
    }


    
publicvoid setOk(boolean isOk) {
        
this.isOk = isOk;
    }


    
publicint getStep() {
        
return step;
    }


    
publicvoid setStep(int step) {
        
this.step = step;
    }


    
public SetupStep getLastStep() {
        
return lastStep;
    }


    
publicvoid setLastStep(SetupStep lastStep) {
        
this.lastStep = lastStep;
    }


    
public SetupStep getNextStep() {
        
return nextStep;
    }


    
publicvoid setNextStep(SetupStep nextStep) {
        
this.nextStep = nextStep;
    }

    
    
publicboolean isCuurentStep(int step){
        
returnthis.step==step;
    }


    
public Map getData() {
        
return data;
    }


    
publicvoid setData(Map data) {
        
this.data = data;
    }

    
    
publicboolean isEndStep(){
        
if(this.nextStep==null){
            
returntrue;
        }

        
returnfalse;
    }

    
    
publicboolean check(){
        
return isOk;
    }

    
    
publicboolean checkTheLastStep(){
        
returnthis.lastStep.isOk;
    }


    
/**
     * 執行安裝操作
     * 
@return
     
*/

    
publicabstractboolean doSetup();
    
    
/**
     * 執行完全安裝操作,用於將所有操作放到最後一步來執行的情況
     * 
@return
     
*/

    
publicboolean doFullSetup(){
        
if(!this.getLastStep().isOk){
            
returnthis

相關推薦

基於EasyJWeb網站安裝程式——搭建框架

最近需要對我們做的網站程式做一個安裝程式,今天下午花了點時間寫了框架。 1、需求。 首先,這個安裝程式應該是通用的,不同的程式使用這個安裝程式只需要做少許修改就可以正確執行;其次,安裝程式應該可配置,如安裝過程中顯示的版權、協議等資訊,還有安裝程式一共要執行多少個步驟、每個

Windows server 2012R2 版本安裝Geoserver --------基於騰訊雲伺服器搭建個人地圖網站(三)

寫這篇文章的目的:是記錄自己基於騰訊雲伺服器搭建一個別人可以訪問的簡易地圖網站。準備工作:        1,購買一個雲伺服器                 2,遠端登入伺服器,配置建站環境                     1)安裝配置IIS、安裝PHP 、安裝My

新手搭建 WordPress 網站終極解決方案 基於 Bitnami 堆棧快速搭建完美個人博客(Blog)

分享 成了 rdp 網上 特色 雲服務 nco BE tro 為了搭建一個自己的博客,對於沒有相關知識的我來說,真的時相當不容易,經過很長時間的摸索研究,總算是搭起了這個博客(Blog),那麽第一篇文章就是來記錄一下,經過反復的折騰後感覺最適合我自己的一個方法,文章包含很多

無法安裝程式包“Newtonsoft.Json 6.0.4”。你正在嘗試將此程式安裝到目標為“.NETFramework,Version=v4.7”的專案中,但該程式包不包含任何與該框架相容的程式

今天在ConsoleApp裡面安裝SignalR.SelfHost,但是預設的SelfHost安裝的JSON檔案是6.0.4不相容.NET框架,只要手動安裝上JSON,再安裝SignalR.SelfHost的時候,就不會安裝預設的JSON了,也就不會出錯了。 Install-Packa

eclipse安裝hibernate外掛和搭建框架

安裝冬眠外掛 下載地址: http://tools.jboss.org/downloads/jbosstools/mars/4.3.1.Final.html   安裝說明 1,幫助 - >安裝新軟體... 2,點選新增... 3,在對話方塊新增站點對話方塊中,單擊存檔.

web前端開之網站搭建框架之vue詳解

網站搭建框架之vue Vue是web前端快速搭建網站的框架之一。它與jQuery有所不同,是以資料驅動web介面(以操作資料改變頁面,而jQuery是以操作節點來改變頁面),同時,vue還實現了資料的雙向繫結,可及時響應使用者的輸入。最主要的是vue的寫法簡單,容易掌握,元件形式可以大大提高工作效率。 對

Docker 基於 php:7.0-apache 搭建 TPShop ,安裝 freetype/GD/mysqli 等擴充套件

下載原始碼 http://www.tp-shop.cn/download/ 下載 解壓至主機資料夾:/var/www/tpshop docker 構建 php:7.0-apache 容器 docker run -d -p 8886:80 --nam

Docker 基於 php:7.2-apache 搭建 ECTouch 網站,及 mysqli 擴充套件開啟方法

下載原始碼 https://www.ectouch.cn/ 下載 解壓至主機資料夾:/var/www/ectouch docker 構建 php:7.2-apache 容器 docker run -d -p 8882:80 --name ectou

Docker 基於 php:7.2-apache 搭建微擎網站,及 GD 擴充套件開啟方法

下載微擎原始碼 http://s.we7.cc/store-static-install.html 下載穩定離線版本 解壓至資料夾:/var/www/we7_test/web docker 構建 php:7.2-apache 容器 docker r

基於STM32之OLED選單介面框架搭建

基於STM32驅動OLED屏顯示三級選單介面框架搭建 個人總結的一些經驗,寫的不好勿噴。 硬體要求 (1)處理器:STM32F103系列。 (2)OLED屏,SPI或IIC介面都可以。 (3)按鍵,用於控制介面的切換。 一個基本的選單介面最少有有一個主界,所

基於Anaconda在windows下搭建TensorFlow環境(cpu版本安裝

                          安裝TensorFlow CPU版本過程 目錄: 一.定義:TensorFlow是谷歌基於DistBelief進行研發的第二代人工智慧學習系統 一.定義: TensorFlow是谷歌基於DistBelie

微信小程式開發框架搭建

使用開發工具的正確姿勢 微信提供的開發工具的編輯功能不是一般的水,寫程式碼肯定不能用它,否則就是浪費生命.不說別的,連自動儲存都沒有,第一次寫時寫了一個多小時,後面下班直接關掉,也不彈出提示說沒儲存.然後第二天過來,寫的程式碼全沒了!!! 頓時感到巨坑無比.這

搭建簡單的基於spring security的spring cloud框架 遇到的問題詳解

先給出pom檔案: 主pom.xml: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.or

在沒有安裝Opencv的電腦上執行基於Opencv庫的程式

以HMMDemo為例1、將OpenCv安裝目錄下的cv、cvaux、otherlibs/highgui三個目錄複製到你的工程目錄下,再在工程目錄下新建一個camera目錄,將安裝目錄下的apps/Common目錄中的兩個檔案複製至camera目錄中。2、在整合開發環境的專案管理視窗中(FileView)新建六

ubuntu14.04 的ibus不能解除安裝安裝fcitx輸入法框架時可能有這個需求)。出現無system setting實用程式

每年的ubuntu新版本釋出,都會吸引一大批熱血青年。關注越多也讓ubuntu越來越好了。 使用ubuntu的人都會在安裝系統之後立即安裝順手的輸入法,也可能不會,看人。 安裝輸入法,對於中文輸入法的選擇,大多數人願意選擇'搜狗輸入法',抱歉大膽的這樣估計,但是'搜狗輸入法

基於Leaflet 的Web地圖客戶端應用程式開發框架

MarsGIS for Leaflet地圖框架 是火星科技研發的一個Web地圖開發平臺系統,是火星科技團隊成員多年GIS開發和Leaflet使用的技術沉澱。基於Leaflet和現代Web技術棧全新構建, 集成了領先的開源地相簿、視覺化庫,提供了全新的大資料視覺化、實時流資料視

基於 Cesium 的Web三維地球客戶端程式開發框架

MarsGIS for Cesium三維地球框架 是火星科技研發的一個Web三維地圖開發平臺系統,是火星科技團隊成員多年GIS開發和Cesium使用的技術沉澱。基於Cesium和現代Web技術棧全新構建, 集成了領先的開源地相簿、視覺化庫,提供了全新的大資料視覺化、實時流資料

【Docker】基於例項專案的叢集部署(一)安裝環境搭建

叢集 叢集具有三高特點: 高效能 高負載 高可用 現在的環境中,經常會用到叢集,如資料庫叢集。如,我們在主機上部署資料庫節點,形成叢集。 安裝環境與配置 在Docker中部署叢集,首先要安裝Linux環境,這裡我們使用VMware虛擬機

VS2010製作網站自定義安裝程式

  最近在把一個網站打包成安裝程式,這方面的文章網上有很多,也看了不少,但因為開發環境的不同,遇到了一些問題,便寫下這篇文章記下整個流程(有很多資源都來自網際網路,由於條目頗多,所以無法說明其來處,敬請諒解)。 一、開發環境         言歸正傳,先說

再探MFC(一)基於對話方塊的MFC應用程式專案框架

大學畢設時學的MFC,工作頭一年還用的MFC,之後再也用不到了.當時買的MFC書籍早就束之高閣了.現在需要開發一個簡單的桌面程式,於是我又把MFC撿起來.MFC早已過時,不過如果開發簡單的Windows桌面應用,MFC不失為一個簡單的選擇.再撿起MFC,充滿了對大學和逝去的