2.osframe框架開發說明書

開源項目名稱:
    osframe管理系統
託管地址:
    http://git.oschina.net/haizicq/osframe
主要技術:
    spring mvc、spring、hibernate、angular js、seajs、bootstrap、shiro
框架介紹:
    本框架是一個基礎後臺開發框架,基於springmvc+spring+hibernate搭建,前端採用angular js+sea js +bootstrap展示,基於shiro的權限管理和登錄控制。基礎框架中包含了用戶管理、權限管理等基礎模塊,提供了簡單的首頁門戶,能夠快速的實現新項目的搭建。
框架特點:
    支持電腦和手機界面的自動智能切換。html

技術交流羣:330710190(OSFrame技術交流羣) 歡迎你們加入,共同探討使用過程當中的問題。前端

一、開發前準備知識點
    1)後端開發必備知識熟悉spring mvc、spring、hibernate的基礎使用
    2)前端開發必備知識熟悉 angular js 的使用,本項目作爲首個開源git

二、模塊化支撐
    1)項目中全部模塊建在com.os.osframe包下,支持一到多級目錄的模塊,如:framework(框架模塊)、os.users(用戶管理模塊)
    2)各獨立模塊下包應包含:dao、domain、service、web四個包,
        dao-數據操做相關的類
        domain-實體類
        service-業務邏輯類
        web-mvc控制類
    3)各模塊資源目錄下應包括:i18n文件夾、enums.properties、*-beans.xml、*-servlet.xml
        i18n-國際化文件
        enums.properties-模塊枚舉屬性(有枚舉時使用)
        *-beans.xml-模塊的spring相關配置(能夠不用) *表明模塊名稱,推薦按駝峯命名
        *-servlet.xml-模塊的springmvc相關配置(通常不須要) *表明模塊名稱,推薦按駝峯命名
    4)jsp對應在web-inf/jsp目錄中
        模塊對應的jsp文件規則是:模塊路徑/實體名/實體名_頁面後綴.jsp
        基礎的頁面類型包括:編輯(_edit)、查看(_look)、列表(_list)
        如:員工信息列表在用戶模塊下,路徑爲:core/users/mscUsersPerson/mscUsersPerson_list.jsp
    5)模塊js文件在resource目錄下,包括app.js和頁面js
        app.js-定義模型引入相應依賴,並配置路由規則
        頁面js-執行頁面功能邏輯
    
三、基礎頁面增刪改查功能實現
    1)實體,包含實體類
        首先建立實體類,繼承BaseDomain,定義好除id之外的全部字段,並寫好get和set方法
        在實體類上添加@Entity註解和@Table(name="表名")定義好表名
        在字段上添加@Column(name="字段名",length = 字段長度)
    2)數據操做層(DAO),包含一個接口和一個實現類
        先在dao包中建立接口,繼承IBaseDao<實體類>,暫時無需添加任何代碼
        而後在dao.impl包建立實現類,繼承BaseDaoImpl<實體類>並實現上面建立的接口,一樣暫時不用添加任何代碼
        最後在實現類上添加@Repository("dao bean名稱")註解
    3)業務邏輯層(Service),包含一個接口和一個實體類
        先在service包中建立接口,繼承IBaseService<實體類>,暫時無需添加任何代碼
        而後在service.impl包建立實現類,繼承BaseServiceImpl<實體類>並實現上面建立的接口,一樣暫時不用添加任何代碼
        最後在實現類上添加@Repository("service bean名稱")註解
        使用@Resource根據變量名自動裝載對應的bean,這裏配置第二步定義的dao bean名。注意不推薦要使用@Autowired,按接口類型自動裝配,不便於一個接口多個實現的狀況。
        同時添加getBaseDao方法,將注入的dao返回回去,這是BaseServiceImpl中的一個抽象函數須要自類中實現,因爲父類中調用。angularjs

        @Resource
        IBaseDao daobean名稱;
        public IBaseDao getBaseDao(){
            return daobean名稱;
        }
    4)控制層(web),包含一個控制類
        建立一個控制類,繼承BaseController<實體類>
        在類上使用@Controller註解標註控制類,使用@RequestMapping(value = "訪問路徑")註解映射類的基礎訪問路徑
        實現BaseController的抽象方法
        @Resource
        IBaseService servicebean名稱;
        @Override
        protected IBaseService getServiceImp() {
            return servicebean名稱;
        }web

    5)模塊首頁(index.jsp)
        頁頭引入:<%@include file="/common/jsp/index_top.jsp"%>
        頁面底部引入:<%@include file="/common/jsp/index_bottom.jsp"%>
        而後引入模塊對應的頭部文件和導航文件等,參考權限和用戶模塊便可
    6)列表頁面(*_list.jsp)
        因爲angularjs的單頁面開發特性只在模塊首頁中使用完整的html元素,其他頁面均使用html片斷便可。
        列表頁面大體結構以下,開發中請參考demo模塊:
        <div class="wrapper-md" ng-controller="控制器名">
            <div >
                <!--標題-->
            </div>
            <div class="panel panel-default">spring

                <div class="row wrapper">
                    <!-- 搜索和按鈕區-->
                </div>
                <div class="table-responsive">
                    <!-- 列表區-->
                    <table class="table table-striped b-t b-light">
                    </table>
                </div>
                <!-- 分頁頁腳 -->
                <%@include file="/common/jsp/page_bottom.jsp"%>
            </div>
        </div>
    7)編輯頁面(*_edit.jsp)
        刪除頁面佈局與列表頁面相似,開發請參考demo模塊對應的編輯頁面。
        變量定義採用ng-model="formData.lbName",這裏全部須要提交保存的變量都定義formData變量下的。
        變量值的初始化:ng-init="formData.lbName='${osDemoInfo.lbName}'",${osDemoInfo.lbName}這個是springmvc的賦值方式,這裏添加了anularjs特性的賦值
        提交保存:在按鈕上使用屬性指令 ng-edit-submit="osDemoInfo(formData)" ,其中osDemoInfo是須要保存的實體
    8)查看頁面(*_look.jsp)
        查看值輸出:<label class="form-control">${osDemoInfo.lbName}</label>
        刪除記錄:在按鈕上使用屬性指令 ng-delete="osDemoInfo({id:'${osDemoInfo.pkId}'})"
    9)模塊基礎js(app.js)
        參考demo的app.js,在$stateProvider.state進行本身模塊的設置,這裏定義的js是按需加載的
        $stateProvider.state('規則名', {
                url: '/訪問展現路徑',
                views:{
                    "":{
                        controller: '控制器',
                        cache:'false',
                        templateUrl:function($routeParams){
                            var url= G.path.moduleTemplatePath+'/osDemoInfo/list.html';
                            return url;
                        },
                        controllerUrl: G.path.moduleResPath+'/osDemoInfo/osDemoInfoListCtrl.js'
                    }
                }
            })
        這裏配置以後,在jsp中能夠用ui-sref指令直接進行頁面跳轉,如:ui-sref="mscAuthCategoryLook({id:'${mscAuthCategory.pkId}'})"
    10)頁面js
        在第9)條中定義controllerUrl指定了頁面的js對應的存放位置,其內容按seajs的規則來寫的,通常只須要在controller對應的方法中添加業務代碼
        define(function (require, exports, module) {
            module.exports = function(app){
                //添加頁面控制器的ctrl
                app.controller('osDemoInfoListCtrl', ['$scope', function($scope) {bootstrap

                }]);
            }
        });後端

四、枚舉使用        
    1)首先在模塊下的enums.properties文件中定義好枚舉的key和value,注意key均採用2級模式用點間隔,點前面部分用於表示同一個枚舉組,後面部分用來區分枚舉值,如:
        #有無
        enumsCommonExist.yes=1
        enumsCommonExist.no=0
        其中 enumsCommonExist 表示有無這個枚舉對象,yes和no分別表示有和無,右側的表示值。
    2)其次再在國際化資源文件中定義枚舉選項各值的描述,這樣就簡單的定義實現了枚舉的國際化,如:
        enumsCommonExist.yes=有
        enumsCommonExist.no=無
    3)最後在jsp頁面中使用
        使用前先要引入bs標籤,項目中已經在global.jsp中引入了
            <%@ taglib prefix="bs" uri="http://www.bladeray.com/tags/bs" %>
        而後使用bs:enums 來輸出,其中的key爲enums.properties中定義的key點前面的部分,type爲可選,能夠爲:select/radio/checkbox
            <bs:enums name="formData.lbType" key="enumsDemo" value="${osDemoInfo.lbType}" type="radio"/>
        展現頁面直接輸出值,這裏使用到display屬性其可選值有:input(輸入-默認)、label(文本)、readOnly(只讀)
            <bs:enums name="formData.lbType" key="enumsDemo" value="${osDemoInfo.lbType}" display="label"/>mvc

相關文章
相關標籤/搜索