11班主任管理系統(tǒng)設(shè)計與實踐
《11班主任管理系統(tǒng)設(shè)計與實踐》由會員分享,可在線閱讀,更多相關(guān)《11班主任管理系統(tǒng)設(shè)計與實踐(30頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、大紅鷹職業(yè)技術(shù)學(xué)院軟件學(xué)院畢業(yè)綜合實訓(xùn)報告畢業(yè)綜合實訓(xùn)報告班主任管理系統(tǒng)設(shè)計與實踐 目 錄第一章 緒論311 課題背景312 使用技術(shù)及發(fā)展4第二章班主任管理系統(tǒng)的設(shè)計和實現(xiàn)521 班主任管理系統(tǒng)的設(shè)計5211 系統(tǒng)框架5212 系統(tǒng)使用部門7213 系統(tǒng)使用者8214 系統(tǒng)功能劃分與描述822班主任管理系統(tǒng)的部分實現(xiàn)923 核心代碼業(yè)務(wù)實現(xiàn)12總結(jié)28參考文獻(xiàn)29第一章 緒論11 課題背景隨著現(xiàn)在教育事業(yè)的不斷發(fā)展,信息技術(shù)對社會進(jìn)步和國名經(jīng)濟(jì)發(fā)揮著越來越大的促進(jìn)作用,并對傳統(tǒng)的思想觀念、工作方式產(chǎn)生巨大的沖擊。世界已進(jìn)入信息化時代,網(wǎng)絡(luò)技術(shù)已進(jìn)入了各行各業(yè),同時也帶動了各行業(yè)的發(fā)展。中國現(xiàn)
2、在教育事業(yè)的發(fā)展迅猛,高等院校的數(shù)量和規(guī)模不斷的擴(kuò)大。與此同時,根據(jù)時代的要求,管理,特別是對日益增多的學(xué)生的管理,對學(xué)校的發(fā)展起著不可忽視的作用。而班主任(輔導(dǎo)老師)在學(xué)生的管理中有著承上啟下的樞紐地位,這一角色的重要性也日漸突出起來。學(xué)校與學(xué)生之間溝通途徑的建立、對學(xué)生的具體管理措施的實施等都是通過班主任的工作得以體現(xiàn)和貫徹執(zhí)行的,如果班主任這個環(huán)節(jié)的工作做的好,其對學(xué)生工作的總體管理和發(fā)展都具有不可估量的好處。因此,越來越多的學(xué)校對班主任這一角色也越來越重視,一些院校專門對班主任進(jìn)行一系列培訓(xùn),并且由原來的一個系甚至一個院配備一名輔導(dǎo)員增加至每個班級一名班主任。與上述管理需求不符的是:針
3、對班主任工作的配套管理軟件嚴(yán)重缺乏。雖然,已有很多較成熟的學(xué)生管理方面的軟件,但這些軟件主要是實現(xiàn)了教學(xué)和教務(wù)兩個方面的數(shù)字化管理,而在目前國內(nèi)已有的學(xué)生管理系統(tǒng)中,具體到班主任管理班級這個方面的管理軟件基本上是一片空白。實際上,一方面,班主任工作的特點是事多、瑣碎、繁雜,但工作程序是有序。因而,在當(dāng)今科技高度發(fā)達(dá)的信息社會,開發(fā)一個適合班主任工作的管理軟件,提高辦公質(zhì)量,加強(qiáng)班級管理,是適應(yīng)學(xué)校各方面發(fā)展的要求,是學(xué)生管理工作中急需解決的問題。12 使用技術(shù)及發(fā)展本論文主要研究JSP技術(shù)以及JSP技術(shù)實現(xiàn)基于Web的三層體系結(jié)構(gòu)的應(yīng)用,實現(xiàn)了動態(tài)網(wǎng)頁對數(shù)據(jù)庫的查詢、統(tǒng)計、更新等功能。目的是應(yīng)
4、用計算機(jī)網(wǎng)絡(luò)、數(shù)據(jù)庫、Internet技術(shù)、以Tomcat為服務(wù)器,JSP、JAVA作為主要開發(fā)工具,實現(xiàn)跨平臺、跨網(wǎng)絡(luò)、統(tǒng)一界面、易于擴(kuò)展和維護(hù)的大紅鷹班主任管理系統(tǒng)。 B/S結(jié)構(gòu),即Browser/Server(瀏覽器/服務(wù)器)結(jié)構(gòu),是隨著Internet技術(shù)的興起,對C/S結(jié)構(gòu)的一種變化或者改進(jìn)的結(jié)構(gòu)。在這種結(jié)構(gòu)下,用戶界面完全通過WWW瀏覽器實現(xiàn),一部分事務(wù)邏輯在前端實現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端實現(xiàn),形成所謂3-tier結(jié)構(gòu)。B/S結(jié)構(gòu),主要是利用了不斷成熟的WWW瀏覽器技術(shù),結(jié)合瀏覽器的多種Script語言(VBScript、JavaScript)和ActiveX技術(shù),用通用瀏覽
5、器就實現(xiàn)了原來需要復(fù)雜專用軟件才能實現(xiàn)的強(qiáng)大功能,并節(jié)約了開發(fā)成本,是一種全新的軟件系統(tǒng)構(gòu)造技術(shù)。隨著Windows98/Windows2000將瀏覽器技術(shù)植入操作系統(tǒng)內(nèi)部,這種結(jié)構(gòu)更成為當(dāng)今應(yīng)用軟件的首選體系結(jié)構(gòu)。顯然B/S結(jié)構(gòu)應(yīng)用程序相對于傳統(tǒng)的C/S結(jié)構(gòu)應(yīng)用程序?qū)⑹蔷薮蟮倪M(jìn)步。 B/S結(jié)構(gòu)采用星形拓?fù)浣Y(jié)構(gòu)建立企業(yè)內(nèi)部通信網(wǎng)絡(luò)或利用Internet虛擬專網(wǎng)(VPN)。前者的特點是安全、快捷、準(zhǔn)確。后者則具有節(jié)省投資、跨地域廣的優(yōu)點,須視企業(yè)規(guī)模和地理分布確定。企業(yè)內(nèi)部通過防火墻接入Internet,在整個網(wǎng)絡(luò)采用TCP/IP協(xié)議。Java 是 Sun 公司推出的一種編程語言。它是一種通過解
6、釋方式來執(zhí)行的語言,語法規(guī)則和 C+ 類似。同時, Java 也是一種跨平臺的程序設(shè)計語言。用 Java 語言編寫的程序叫做 “Applet” (小應(yīng)用程序),用編譯器將它編譯成類文件后,將它存在 WWW 頁面中,并在 HTML 檔上作好相應(yīng)標(biāo)記,用戶端只要裝上 Java 的客戶軟件就可以在網(wǎng)上直接運行 “Applet” 。 Java 非常適合于企業(yè)網(wǎng)絡(luò)和 Internet 環(huán)境,現(xiàn)在已成為 Internet 中最受歡迎、最有影響的編程語言之一。 Java 有許多值得稱道的優(yōu)點,如簡單、面向?qū)ο?、分布式、解釋性、可靠、安全、結(jié)構(gòu)中立性、可移植性、高性能、多線程、動態(tài)性等。 Java 擯棄了 C
7、+ 中各種弊大于利的功能和許多很少用到的功能。 Java 可以運行與任何微處理器,用 Java 開發(fā)的程序可以在網(wǎng)絡(luò)上傳輸,并運行于任何客戶機(jī)上。 JSP是JavaServer Pages的簡寫。JSP技術(shù)能讓W(xué)eb開發(fā)員和網(wǎng)頁設(shè)計員快速地開發(fā)容易維護(hù)的動態(tài)Web主頁。用JSP開發(fā)的Web應(yīng)用是跨平臺的,即能在Linux下運行,也能在其他操作系統(tǒng)上運行。 JSP技術(shù)使用Java編程語言編寫類XML的tags和scriptlets,來封裝產(chǎn)生動態(tài)網(wǎng)頁的處理邏輯。網(wǎng)頁還能通過tags和scriptlets訪問存在于服務(wù)端的資源(例如JavaBesns)的應(yīng)用邏輯。JSP將網(wǎng)頁邏輯與網(wǎng)頁設(shè)計和顯示分
8、離,支持可重用的基于組件的設(shè)計,使基于Web的應(yīng)用程序的開發(fā)變得迅速和容易。JSP技術(shù)是Servlet技術(shù)的擴(kuò)展。Servlet是平臺無關(guān)的,100%純Java的Java服務(wù)端組件。第二章班主任管理系統(tǒng)的設(shè)計和實現(xiàn)21 班主任管理系統(tǒng)的設(shè)計班主任管理系統(tǒng)總的目的在于方便班主任對班級的管理,同時也提高了學(xué)生處對各個班級的評比和對班主任事務(wù)的評估與考核,為領(lǐng)導(dǎo)提供輔助決策支持,提高決策的科學(xué)性。建立學(xué)校數(shù)據(jù)庫,在日常工作中自動生成數(shù)據(jù),簡化上報過程,提高辦事效率。211 系統(tǒng)框架班主任管理系統(tǒng)是學(xué)校信息系統(tǒng)的一個子系統(tǒng),相應(yīng)的系統(tǒng)框架圖見圖21: 暫時還不存在的子系統(tǒng) 已有的子系統(tǒng) 班主任管理子系
9、統(tǒng) 班主任管理子系統(tǒng)中的模塊積分考核管 理班主任事務(wù)管理消息公布、留言板用戶權(quán)限設(shè) 置登入登出管 理學(xué)生基本信息管 理教務(wù)處學(xué)生處宿管科圖21說明:班主任管理子系統(tǒng)和教務(wù)處、宿管科、學(xué)生處都有數(shù)據(jù)交互。1) 學(xué)生基本信息表單來自教務(wù)處中的數(shù)據(jù)庫。大紅鷹學(xué)院的教務(wù)系統(tǒng)是萬方系統(tǒng),它所使用的數(shù)據(jù)庫是ORACLE的。2) 積分考核管理、班主任日常事務(wù)管理、用戶權(quán)限設(shè)置這一模塊和學(xué)生處相連。3) 班主任事務(wù)管理、積分考核管理與宿管科相連。班主任管理系統(tǒng)學(xué)生基本信息管理班主任日常事務(wù)管理家長信息管理消息公布,留言板用戶權(quán)限設(shè)置管理積分考核管理登入、登出管理學(xué)生個人積分管理班級積分管理212 系統(tǒng)使用部門
10、班主任管理系統(tǒng)是一個非常實用的系統(tǒng),在學(xué)院里面使用它的部門主要是:學(xué)生處、宿管科和班級學(xué)生、學(xué)生家長以及相應(yīng)班主任。學(xué)生處每天對各班進(jìn)行各種檢查,針對不同的情況對相應(yīng)班級的千分制進(jìn)行增減,每月對所有班級千分制排名,并且以此作為班主任當(dāng)月工作考核內(nèi)容之一。每月學(xué)生處根據(jù)本系統(tǒng)檢查班主任日常事務(wù),這也是班主任每月考核內(nèi)容之一。宿管科管理學(xué)生寢室住宿,有權(quán)對班級成員因住宿方面的情況進(jìn)行個人方面千分制的增減。每次班主任下寢室,都由宿管科登記。班級的普通學(xué)生可以查看自己的基本信息,查看自己班級以及本人的千分制情況,可以在留言板里發(fā)布信息;班委除了擁有班級普通學(xué)生的權(quán)限以外,還可以根據(jù)班級成員的具體情況對
11、班級成員的千分制進(jìn)行相應(yīng)增扣,查看其他班級成員信息;班主任可以修改班級成員的千分制,對班主任日常事務(wù)管理這一塊進(jìn)行相應(yīng)數(shù)據(jù)錄入。學(xué)生家長可以用自己子女的用戶名、密碼登入系統(tǒng),并且可以在留言板留言。213 系統(tǒng)使用者班主任管理系統(tǒng)主要工作是方便班主任的日常工作,并且對班主任工作進(jìn)行定性定量考核的考核,系統(tǒng)使用者有:學(xué)生處管理者:對班級千分制進(jìn)行查詢、修改;對班主任工作進(jìn)行查詢。宿管科管理者:對班級成員千分制進(jìn)行增扣的錄入;對班主任下寢室時間與寢室號碼的錄入。班主任:對班級千分制和班級成員千分制的錄入、查詢、修改;對班級成員信息的查詢;對班主任日常事務(wù)的相關(guān)錄入;留言板上留言。班委:對班級成員千分
12、制的錄入;對班級千分制的查詢;留言板上留言。普通學(xué)生、學(xué)生家長:對本人或子女千分制的查詢,班級千分制的查詢,留言板留言。214 系統(tǒng)功能劃分與描述班主任管理系統(tǒng)分為學(xué)生基本信息管理、積分考核管理、班主任日常事務(wù)管理、用戶權(quán)限設(shè)置管理、登入登出管理和消息公布留言板六個模塊。學(xué)生基本信息管理:這個模塊中的數(shù)據(jù)是教務(wù)處的方正教務(wù)系統(tǒng)中的數(shù)據(jù),在我們這個班主任管理系統(tǒng)中沒有修改權(quán)限,但是可以供班委、班主任、學(xué)生處查詢。積分考核管理:這個模塊是我們這個系統(tǒng)的一個重點模塊,班主任定性定量考核班委、學(xué)生處考核班主任、班級優(yōu)劣排名都是在這個模塊進(jìn)行。班主任日常事務(wù)管理:這個模塊是考核班主任所有任務(wù)完成與否的一
13、個模塊,通過這個模塊可以督促班主任和學(xué)生、學(xué)生家長之間的聯(lián)系;班主任可以通過這個模塊了解自己的工作進(jìn)程;同時,這個模塊也是學(xué)生處對班主任工作考核的依據(jù)之一。這個模塊只能班主任和學(xué)生處可以看到。用戶權(quán)限設(shè)置:可以設(shè)置用戶的權(quán)限,分為:只讀、增加和修改權(quán)限。只讀權(quán)限權(quán)限最低,除了查看之外沒有任何別的權(quán)限。增加權(quán)限可以輸入數(shù)據(jù),比如班級和個人千分制的輸入,但是不能進(jìn)行修改。修改權(quán)限權(quán)限最高,除了讀寫外,還可以修改數(shù)據(jù)。登入登出管理:形成一個日志文件,從該模塊可以知道進(jìn)入該模塊的人和時間。消息公布留言板模塊:這個模塊實際上是一個班級的BBS,所有同學(xué)都可以在上面留言,留言上面的名字顯示是登入班主任管理
14、系統(tǒng)的名字,可以規(guī)范留言。班級有什么事情,及時在這里發(fā)布。學(xué)生有什么意見或建議,又不愿意和老師溝通的,可以在這里發(fā)表。同時,學(xué)生家長也可以通過這個模塊知道班級或?qū)W校動態(tài),并且可以發(fā)表言論。這個模塊是學(xué)生、家長和老師的一個溝通平臺。22班主任管理系統(tǒng)的部分實現(xiàn)班主任管理系統(tǒng)的實現(xiàn)是在我們畢業(yè)實踐小組的共同努力下完成的,我所作的工作是: 我在項目主要負(fù)責(zé)權(quán)限驗證,我采用了過濾器來實現(xiàn)RBAC模式做權(quán)限這塊!權(quán)限系統(tǒng)是一個系統(tǒng)必不可少的模塊之一!簡單介紹以下權(quán)限系統(tǒng),訪問控制是針對越權(quán)使用資源的防御措施?;灸繕?biāo)是為了限制訪問主體(用戶、進(jìn)程、服務(wù)等)對訪問客體(文件、系統(tǒng)等)的訪問權(quán)限,從而使計算
15、機(jī)系統(tǒng)在合法范圍內(nèi)使用;決定用戶能做什么,也決定代表一定用戶利益的程序能做什么1。企業(yè)環(huán)境中的訪問控制策略一般有三種:自主型訪問控制方法、強(qiáng)制型訪問控制方法和基于角色的訪問控制方法(RBAC)。其中,自主式太弱,強(qiáng)制式太強(qiáng),二者工作量大,不便于管理1。基于角色的訪問控制方法是目前公認(rèn)的解決大型企業(yè)的統(tǒng)一資源訪問控制的有效方法。其顯著的兩大特征是:1.減小授權(quán)管理的復(fù)雜性,降低管理開銷;2.靈活地支持企業(yè)的安全策略,并對企業(yè)的變化有很大的伸縮性。NIST(The National Institute of Standards and Technology,美國國家標(biāo)準(zhǔn)與技術(shù)研究院)標(biāo)準(zhǔn)RBAC模
16、型由4個部件模型組成,這4個部件模型分別是基本模型RBAC0(Core RBAC)、角色分級模型RBAC1(Hierarchal RBAC)、角色限制模型RBAC2(Constraint RBAC)和統(tǒng)一模型RBAC3(Combines RBAC)1。RBAC0模型如圖2-2所示。圖2-2 RBAC0模型a. RBAC0定義了能構(gòu)成一個RBAC控制系統(tǒng)的最小的元素集合。在RBAC之中,包含用戶users(USERS)、角色roles(ROLES)、目標(biāo)objects(OBS)、操作operations(OPS)、許可權(quán)permissions(PRMS)五個基本數(shù)據(jù)元素,權(quán)限被賦予角色,而不是用
17、戶,當(dāng)一個角色被指定給一個用戶時,此用戶就擁有了該角色所包含的權(quán)限。會話sessions是用戶與激活的角色集合之間的映射。RBAC0與傳統(tǒng)訪問控制的差別在于增加一層間接性帶來了靈活性,RBAC1、RBAC2、RBAC3都是先后在RBAC0上的擴(kuò)展。b. RBAC1引入角色間的繼承關(guān)系,角色間的繼承關(guān)系可分為一般繼承關(guān)系和受限繼承關(guān)系。一般繼承關(guān)系僅要求角色繼承關(guān)系是一個絕對偏序關(guān)系,允許角色間的多繼承。而受限繼承關(guān)系則進(jìn)一步要求角色繼承關(guān)系是一個樹結(jié)構(gòu)。c. RBAC2模型中添加了責(zé)任分離關(guān)系。RBAC2的約束規(guī)定了權(quán)限被賦予角色時,或角色被賦予用戶時,以及當(dāng)用戶在某一時刻激活一個角色時所應(yīng)遵
18、循的強(qiáng)制性規(guī)則。責(zé)任分離包括靜態(tài)責(zé)任分離和動態(tài)責(zé)任分離。約束與用戶-角色-權(quán)限關(guān)系一起決定了RBAC2模型中用戶的訪問許可。d. RBAC3包含了RBAC1和RBAC2,既提供了角色間的繼承關(guān)系,又提供了責(zé)任分離關(guān)系。3核心對象模型設(shè)計根據(jù)RBAC模型的權(quán)限設(shè)計思想,建立權(quán)限管理系統(tǒng)的核心對象模型。如圖2所示。對象模型中包含的基本元素主要有:用戶(Users)、用戶組(Group)、角色(Role)、目標(biāo)(Objects)、訪問模式(Access Mode)、操作(Operator)。主要的關(guān)系有:分配角色權(quán)限PA(Permission Assignment)、分配用戶角色UA(Users A
19、ssignmen描述如下:a .控制對象:是系統(tǒng)所要保護(hù)的資源(Resource),可以被訪問的對象。資源的定義需要注意以下兩個問題:1.資源具有層次關(guān)系和包含關(guān)系。例如,網(wǎng)頁是資源,網(wǎng)頁上的按鈕、文本框等對象也是資源,是網(wǎng)頁節(jié)點的子節(jié)點,如可以訪問按鈕,則必須能夠訪問頁面。2.這里提及的資源概念是指資源的類別(Resource Class),不是某個特定資源的實例(Resource Instance)。資源的類別和資源的實例的區(qū)分,以及資源的粒度的細(xì)分,有利于確定權(quán)限管理系統(tǒng)和應(yīng)用系統(tǒng)之間的管理邊界,權(quán)限管理系統(tǒng)需要對于資源的類別進(jìn)行權(quán)限管理,而應(yīng)用系統(tǒng)需要對特定資源的實例進(jìn)行權(quán)限管理。兩者
20、的區(qū)分主要是基于以下兩點考慮:一方面,資源實例的權(quán)限常具有資源的相關(guān)性。即根據(jù)資源實例和訪問資源的主體之間的關(guān)聯(lián)關(guān)系,才可能進(jìn)行資源的實例權(quán)限判斷。例如,在管理信息系統(tǒng)中,需要按照營業(yè)區(qū)域劃分不同部門的客戶,A區(qū)和B區(qū)都具有修改客戶資料這一受控的資源,這里“客戶檔案資料”是屬于資源的類別的范疇。如果規(guī)定A區(qū)只能修改A區(qū)管理的客戶資料,就必須要區(qū)分出資料的歸屬,這里的資源是屬于資源實例的范疇??蛻魴n案(資源)本身應(yīng)該有其使用者的信息(客戶資料可能就含有營業(yè)區(qū)域這一屬性),才能區(qū)分特定資源的實例操作,可以修改屬于自己管轄的信息內(nèi)容。另一方面,資源的實例權(quán)限常具有相當(dāng)大的業(yè)務(wù)邏輯相關(guān)性。對不同的業(yè)務(wù)
21、邏輯,常常意味著完全不同的權(quán)限判定原則和策略。b.權(quán)限:對受保護(hù)的資源操作的訪問許可(Access Permission),是綁定在特定的資源實例上的。對應(yīng)地,訪問策略(Access Strategy)和資源類別相關(guān),不同的資源類別可能采用不同的訪問模式(Access Mode)。例如,頁面具有能打開、不能打開的訪問模式,按鈕具有可用、不可用的訪問模式,文本編輯框具有可編輯、不可編輯的訪問模式。同一資源的訪問策略可能存在排斥和包含關(guān)系。例如,某個數(shù)據(jù)集的可修改訪問模式就包含了可查詢訪問模式。c.用戶:是權(quán)限的擁有者或主體。用戶和權(quán)限實現(xiàn)分離,通過授權(quán)管理進(jìn)行綁定。d.用戶組:一組用戶的集合。在
22、業(yè)務(wù)邏輯的判斷中,可以實現(xiàn)基于個人身份或組的身份進(jìn)行判斷。系統(tǒng)弱化了用戶組的概念,主要實現(xiàn)用戶(個人的身份)的方式。e.角色:權(quán)限分配的單位與載體。角色通過繼承關(guān)系支持分級的權(quán)限實現(xiàn)。例如,科長角色同時具有科長角色、科內(nèi)不同業(yè)務(wù)人員角色。f.操作:完成資源的類別和訪問策略之間的綁定。g.分配角色權(quán)限PA:實現(xiàn)操作和角色之間的關(guān)聯(lián)關(guān)系映射。h.分配用戶角色UA:實現(xiàn)用戶和角色之間的關(guān)聯(lián)關(guān)系映射。該對象模型最終將訪問控制模型轉(zhuǎn)化為訪問矩陣形式。訪問矩陣中的行對應(yīng)于用戶,列對應(yīng)于操作,每個矩陣元素規(guī)定了相應(yīng)的角色,對應(yīng)于相應(yīng)的目標(biāo)被準(zhǔn)予的訪問許可、實施行為。按訪問矩陣中的行看,是訪問能力表CL(Ac
23、cess Capabilities)的內(nèi)容;按訪問矩陣中的列看,是訪問控制表ACL(Access Control Lists)的內(nèi)容。4 權(quán)限訪問機(jī)制權(quán)限管理系統(tǒng)端:提供集中管理權(quán)限的服務(wù),負(fù)責(zé)提供用戶的鑒別、用戶信息、組織結(jié)構(gòu)信息,以及權(quán)限關(guān)系表的計算。如圖2-3所示。圖2-3 權(quán)限的訪問示意圖Fig.3 Privilege invoke 系統(tǒng)根據(jù)用戶,角色、操作、訪問策略和控制對象之間的關(guān)聯(lián)關(guān)系,同時考慮權(quán)限的正負(fù)向授予,計算出用戶的最小權(quán)限。在業(yè)務(wù)邏輯層采用Session Bean實現(xiàn)此服務(wù),也可以發(fā)布成Web Service。采用代理Proxy模式,集中控制來自應(yīng)用系統(tǒng)的所要訪問的權(quán)限
24、計算服務(wù),并返回權(quán)限關(guān)系表,即二元組ObjectId,OperatorId。應(yīng)用系統(tǒng)端:可以通過訪問能力表CL和訪問控制表ACL兩種可選的訪問方式訪問權(quán)限管理系統(tǒng)。以基于J2EE框架的應(yīng)用系統(tǒng)為例,說明訪問過程:a.首先采用基于表單的驗證,利用Servlet方式集中處理登錄請求2??紤]到需要鑒別的實體是用戶,采用基于ACL訪問方式。用戶登錄時調(diào)用權(quán)限管理系統(tǒng)的用戶鑒別服務(wù),如果驗證成功,調(diào)用權(quán)限計算服務(wù),并返回權(quán)限關(guān)系表,以HashMap的方式存放到登錄用戶的全局Session中;如果沒有全局的Session或者過期,則被導(dǎo)向到登錄頁面,重新獲取權(quán)限。b.直接URL資源采用基于CL訪問方式進(jìn)行
25、的訪問控制。如果用戶直接輸入URL地址訪問頁面,有兩種方法控制訪問:1.通過權(quán)限標(biāo)簽讀取CL進(jìn)行控制;2.采取Filter模式,進(jìn)行權(quán)限控制,如果沒有權(quán)限,則重定向到登錄頁面。5 權(quán)限控制機(jī)制權(quán)限所要控制的資源類別是根據(jù)應(yīng)用系統(tǒng)的需要而定義的,具有的語義和控制規(guī)則也是應(yīng)用系統(tǒng)提供的,對于權(quán)限管理系統(tǒng)來說是透明的,權(quán)限將不同應(yīng)用系統(tǒng)的資源和操作統(tǒng)一對待。應(yīng)用系統(tǒng)調(diào)用權(quán)限管理系統(tǒng)所獲得的權(quán)限關(guān)系表,也是需要應(yīng)用系統(tǒng)來解釋的。按此設(shè)計,權(quán)限管理系統(tǒng)的通用性較強(qiáng),權(quán)限的控制機(jī)制則由應(yīng)用系統(tǒng)負(fù)責(zé)處理。由于應(yīng)用系統(tǒng)的權(quán)限控制與特定的技術(shù)環(huán)境有關(guān),以基于J2EE架構(gòu)的應(yīng)用系統(tǒng)為例來說明,系統(tǒng)主要的展示組件是
26、JSP頁面,采用標(biāo)記庫和權(quán)限控制組件共同來實現(xiàn)。a. 權(quán)限標(biāo)識:利用標(biāo)簽來標(biāo)識不同級別資源,頁面權(quán)限標(biāo)簽將標(biāo)識頁面對象。b. 權(quán)限注冊:遍歷JSP頁面上的權(quán)限控制標(biāo)簽,讀取JSP的控制權(quán)限。通過權(quán)限注冊組件將JSP頁面上的權(quán)限控制對象以及規(guī)則注冊到權(quán)限管理信息系統(tǒng)中。c. 權(quán)限控制:應(yīng)用系統(tǒng)用戶登錄系統(tǒng)時,從權(quán)限管理系統(tǒng)獲得權(quán)限關(guān)系表之后,一方面,權(quán)限標(biāo)簽控制頁面展示;另一方面,利用權(quán)限控制組件在業(yè)務(wù)邏輯中進(jìn)行相應(yīng)的權(quán)限控制,尤其是和業(yè)務(wù)邏輯緊密聯(lián)系的控制對象實例的權(quán)限控制。6 權(quán)限存儲機(jī)制權(quán)限管理系統(tǒng)采用了兩種可選的存儲機(jī)制:LDAP(Lightweight Directory Access
27、 Protocol)目錄服務(wù)數(shù)據(jù)庫和關(guān)系型數(shù)據(jù)庫。存儲用戶信息、組織結(jié)構(gòu)、角色、操作、訪問模式等信息。其中,目錄服務(wù)系統(tǒng)基于LDAP標(biāo)準(zhǔn),具有廣泛的數(shù)據(jù)整合和共享能力。元目錄(Meta-Directory)功能允許快速、簡潔的與企業(yè)現(xiàn)存基礎(chǔ)結(jié)構(gòu)進(jìn)行集成,解決基于傳統(tǒng)RDBMS等用戶數(shù)據(jù)庫與LDAP用戶數(shù)據(jù)庫的同步問題。23 核心代碼業(yè)務(wù)實現(xiàn)1,數(shù)據(jù)庫操作package bean;import java.sql.*;import java.util.*;public class JFBean private Connection con = null;/數(shù)據(jù)庫連接 private ResultS
28、et rs = null;/原始結(jié)果集 private Statement stmt = null; /連接參數(shù) private final String DBURL = jdbc:odbc:bysj; private final String DBUSER =sa; private final String DBPASSWORD =; private ArrayList result = new ArrayList(); /存放結(jié)果集 String colName = null; private int colLen = 0; /列數(shù) private String empty= ;/替換結(jié)果
29、集中的空字符 public JFBean() public void ini() throws SQLException try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); if ( (con = null) | con.isClosed() con = DriverManager.getConnection(DBURL,DBUSER, DBPASSWORD); stmt = con.createStatement(); catch (SQLException e) throw e; catch(Exception e) System.out.pr
30、intln(load driver error); public ArrayList getRS() return result; /* * 執(zhí)行數(shù)據(jù)查詢,結(jié)果集以數(shù)組(每一行的內(nèi)容)形式存放在ArrayList中 * * param sqlStatement String 查詢的SQL語句 * retrurn rownum * */ public int execQuery(String sqlStatement) throws SQLException int recounter = 0; clearResult(); try ini(); rs = stmt.executeQuery(s
31、qlStatement); ResultSetMetaData rsmd = rs.getMetaData(); String self = null; colLen = rsmd.getColumnCount() ; while (rs.next() String colValue = new StringcolLen; for (int i = 0; i colLen; i+) colValuei = ( (self = rs.getString(i + 1 ) = null ?empty : self.trim().length() = 0 ? empty : self.trim();
32、result.add(colValue); recounter+; return recounter; catch (SQLException e) throw e; finally closeConn(); /* * 執(zhí)行數(shù)據(jù)查詢,結(jié)果集以HashMap(每一行的內(nèi)容)形式存放在ArrayList中 * * param sqlStatement String 查詢的SQL語句 * retrurn rownum */ public int execQueryName(String sqlStatement) throws SQLException int recounter = 0; clea
33、rResult(); try ini(); rs = stmt.executeQuery(sqlStatement); ResultSetMetaData rsmd = rs.getMetaData(); String self = null; colLen = rsmd.getColumnCount() ; colName = new StringcolLen; for (int i = 0; i colLen; i+) colNamei = rsmd.getColumnName(i + 1); while (rs.next() HashMap colValue = new HashMap(
34、); for (int i = 0; i 0) result.clear(); / Release the SQL statement resources private void closeConn() throws SQLException try if (con != null) stmt.close(); con.close(); stmt = null; con = null; catch (SQLException e) throw e; 2,核心SERVLET中央控制器package bean;import java.io.IOException;import java.sql.
35、*;import java.util.Date;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class servlet extends HttpServlet private static final long seri
36、alVersionUID = 1L;public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException response.setContentType(text/html;charset=gb2312);String action = request.getParameter(action);/ 登陸if (action.equals(login) logIn(request, response);/ 登出if (action.equal
37、s(logout) logOut(request, response);/添加記錄if (action.equals(add) addOper(request, response); /更新記錄 if (action.equals(update) updateOper(request, response); /刪除記錄 if (action.equals(del) delOper(request, response);/ 留言if (action.equals(message) message(request, response);public void doGet(HttpServletRe
38、quest request, HttpServletResponse response)throws ServletException, IOException doPost(request,response);/ 處理字符串方法public String getString(String s) if (s = null)s = ;try byte a = s.getBytes(ISO-8859-1);s = new String(a); catch (Exception e) return s;private void logIn(HttpServletRequest request, Ht
39、tpServletResponse response)throws ServletException, IOException Connection con = null;Statement sql = null;ResultSet rs = null;HttpSession session = request.getSession();String type = getString(request.getParameter(type);String username = getString(request.getParameter(username);String password = ge
40、tString(request.getParameter(password);JFBean jf = new JFBean();try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch (ClassNotFoundException en) en.printStackTrace();try con = DriverManager.getConnection(jdbc:odbc:bysj, sa, );sql = con.createStatement();/ 教師登陸if (type.equals(teacher) String condit
41、ion = select * from teacher where id = + username + AND password = + password + ;String condition1 = select teacher.name,classlist.name,auothinfo.typename from teacher,classteacher,classlist,auothinfo where teacher.id = + username+ AND teacher.id =classteacher.teacherid AND classteacher.classid=clas
42、slist.id AND teacher.id=auothinfo.id;rs = sql.executeQuery(condition);if (rs.next() session.setAttribute(islog, yes);ResultSet rs1 = sql.executeQuery(condition1);rs1.next();session.setAttribute(name, rs1.getString(1);session.setAttribute(class, rs1.getString(2);session.setAttribute(type, rs1.getStri
43、ng(3);/ 存入日志String logid = getString(request.getParameter(username);/ 登入IDString logname = (String) session.getAttribute(name);/ 登入姓名Date time = new Date();time.getTime();String logtime = time.toString().substring(4, 20);/ 登入時間String condition2 = insert into rzgl (rid,rname,intime) values (+ logid+
44、+ ,+ + logname+ + ,+ + logtime + );jf.execUpdate(condition2);response.sendRedirect(Templates/index.jsp); else session.setAttribute(error, 用戶名或密碼錯誤,請重新輸入!);response.sendRedirect(Templates/index.jsp);/ 學(xué)生登陸if (type.equals(student) String condition = select * from student where id = + username + AND pa
45、ssword = + password + ;String condition1 = select student.name,classlist.name,auothinfo.typename from student,classlist,auothinfo where student.id = + username+ AND student.classid=classlist.id AND student.id=auothinfo.id;rs = sql.executeQuery(condition);if (rs.next() session.setAttribute(islog, yes
46、);ResultSet rs1 = sql.executeQuery(condition1);rs1.next();session.setAttribute(name, rs1.getString(1);session.setAttribute(class, rs1.getString(2);session.setAttribute(type, rs1.getString(3);/ 存入日志String logid = getString(request.getParameter(username);/ 登入IDString logname = (String) session.getAttr
47、ibute(name);/ 登入姓名Date time = new Date();time.getTime();String logtime = time.toString().substring(4, 20);/ 登入時間String condition2 = insert into rzgl (rid,rname,intime) values (+ logid+ + ,+ + logname+ + ,+ + logtime + );jf.execUpdate(condition2);response.sendRedirect(Templates/index.jsp); else sessi
48、on.setAttribute(error, 用戶名或密碼錯誤,請重新輸入!);response.sendRedirect(Templates/index.jsp);/ 班委登陸if (type.equals(monitor) String condition = select * from student where id = + username + AND password = + password + ;String condition1 = select student.name,classlist.name,auothinfo.typename from student,class
49、list,auothinfo where student.id = + username+ AND student.classid=classlist.id AND student.id=auothinfo.id;rs = sql.executeQuery(condition);if (rs.next() session.setAttribute(islog, yes);ResultSet rs1 = sql.executeQuery(condition1);rs1.next();session.setAttribute(name, rs1.getString(1);session.setAt
50、tribute(class, rs1.getString(2);session.setAttribute(type, rs1.getString(3);/ 存入日志String logid = getString(request.getParameter(username);/ 登入IDString logname = (String) session.getAttribute(name);/ 登入姓名Date time = new Date();time.getTime();String logtime = time.toString().substring(4, 20);/ 登入時間Str
51、ing condition2 = insert into rzgl (rid,rname,intime) values (+ logid+ + ,+ + logname+ + ,+ + logtime + );jf.execUpdate(condition2);response.sendRedirect(Templates/index.jsp); else session.setAttribute(error, 用戶名或密碼錯誤,請重新輸入!);response.sendRedirect(Templates/index.jsp); catch (Exception e) e.printStac
52、kTrace();private void logOut(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException /存入日志HttpSession session = request.getSession();JFBean jf = new JFBean();String logid = getString(request.getParameter(username);/ 登入IDString logname = (String) session.getAttri
53、bute(name);/ 登入姓名Date time = new Date();time.getTime();String logtime = time.toString().substring(4, 20);/ 登出時間String condition = insert into rzgl (rid,rname,outtime) values (+ logid + + , + + logname + + , + + logtime+ );try jf.execUpdate(condition); catch (SQLException e) e.printStackTrace();session = request.getSession();session.invalidate();response.sendRedirect(Templates/index.jsp);private void message(HttpServletRequ
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案