2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  畢業(yè)綜合實訓報告</b></p><p>  班主任管理系統(tǒng)設計與實踐</p><p><b>  目 錄</b></p><p><b>  第一章 緒論3</b></p><p>  1.1 課題背景3</p><p&

2、gt;  1.2 使用技術及發(fā)展4</p><p>  第二章班主任管理系統(tǒng)的設計和實現(xiàn)5</p><p>  2.1 班主任管理系統(tǒng)的設計5</p><p>  2.1.1 系統(tǒng)框架5</p><p>  2.1.2 系統(tǒng)使用部門7</p><p>  2.1.3 系統(tǒng)使用者8</p>&l

3、t;p>  2.1.4 系統(tǒng)功能劃分與描述8</p><p>  2.2班主任管理系統(tǒng)的部分實現(xiàn)9</p><p>  2.3 核心代碼業(yè)務實現(xiàn)12</p><p><b>  總結28</b></p><p><b>  參考文獻29</b></p><p>

4、;<b>  第一章 緒論</b></p><p><b>  1.1 課題背景</b></p><p>  隨著現(xiàn)在教育事業(yè)的不斷發(fā)展,信息技術對社會進步和國名經(jīng)濟發(fā)揮著越來越大的促進作用,并對傳統(tǒng)的思想觀念、工作方式產(chǎn)生巨大的沖擊。世界已進入信息化時代,網(wǎng)絡技術已進入了各行各業(yè),同時也帶動了各行業(yè)的發(fā)展。</p><p&g

5、t;  中國現(xiàn)在教育事業(yè)的發(fā)展迅猛,高等院校的數(shù)量和規(guī)模不斷的擴大。與此同時,根據(jù)時代的要求,管理,特別是對日益增多的學生的管理,對學校的發(fā)展起著不可忽視的作用。而班主任(輔導老師)在學生的管理中有著承上啟下的樞紐地位,這一角色的重要性也日漸突出起來。學校與學生之間溝通途徑的建立、對學生的具體管理措施的實施等都是通過班主任的工作得以體現(xiàn)和貫徹執(zhí)行的,如果班主任這個環(huán)節(jié)的工作做的好,其對學生工作的總體管理和發(fā)展都具有不可估量的好處。因此,

6、越來越多的學校對班主任這一角色也越來越重視,一些院校專門對班主任進行一系列培訓,并且由原來的一個系甚至一個院配備一名輔導員增加至每個班級一名班主任。</p><p>  與上述管理需求不符的是:針對班主任工作的配套管理軟件嚴重缺乏。雖然,已有很多較成熟的學生管理方面的軟件,但這些軟件主要是實現(xiàn)了教學和教務兩個方面的數(shù)字化管理,而在目前國內(nèi)已有的學生管理系統(tǒng)中,具體到班主任管理班級這個方面的管理軟件基本上是一片空白

7、。</p><p>  實際上,一方面,班主任工作的特點是事多、瑣碎、繁雜,但工作程序是有序。因而,在當今科技高度發(fā)達的信息社會,開發(fā)一個適合班主任工作的管理軟件,提高辦公質量,加強班級管理,是適應學校各方面發(fā)展的要求,是學生管理工作中急需解決的問題。</p><p>  1.2 使用技術及發(fā)展</p><p>  本論文主要研究JSP技術以及JSP技術實現(xiàn)基于We

8、b的三層體系結構的應用,實現(xiàn)了動態(tài)網(wǎng)頁對數(shù)據(jù)庫的查詢、統(tǒng)計、更新等功能。目的是應用計算機網(wǎng)絡、數(shù)據(jù)庫、Internet技術、以Tomcat為服務器,JSP、JAVA作為主要開發(fā)工具,實現(xiàn)跨平臺、跨網(wǎng)絡、統(tǒng)一界面、易于擴展和維護的大紅鷹班主任管理系統(tǒng)。 </p><p>  B/S結構,即Browser/Server(瀏覽器/服務器)結構,是隨著Internet技術的興起,對C/S結構的一種變化或者改進的結構。在這

9、種結構下,用戶界面完全通過WWW瀏覽器實現(xiàn),一部分事務邏輯在前端實現(xiàn),但是主要事務邏輯在服務器端實現(xiàn),形成所謂3-tier結構。B/S結構,主要是利用了不斷成熟的WWW瀏覽器技術,結合瀏覽器的多種Script語言(VBScript、JavaScript…)和ActiveX技術,用通用瀏覽器就實現(xiàn)了原來需要復雜專用軟件才能實現(xiàn)的強大功能,并節(jié)約了開發(fā)成本,是一種全新的軟件系統(tǒng)構造技術。隨著Windows 98/Windows&#

10、160;2000將瀏覽器技術植入操作系統(tǒng)內(nèi)部,這種結構更成為當今應用軟件的首選體系結構。顯然B/S結構應用程序相對于傳統(tǒng)的C/S結構應用程序將是巨大的進步。    B/S結構采用星形拓撲結構建立企業(yè)內(nèi)部通信網(wǎng)絡或利用Internet虛擬專網(wǎng)(VPN)。前者的特點是安全、快捷、準確。后者則具有節(jié)省投資、跨地域廣的優(yōu)點,須視企業(yè)規(guī)模和地理分布確定。企業(yè)內(nèi)部通過防火墻接入Internet,在整個網(wǎng)絡采用TCP/IP協(xié)議。</

11、p><p>  Java 是 Sun 公司推出的一種編程語言。它是一種通過解釋方式來執(zhí)行的語言,語法規(guī)則和 C++ 類似。同時, Java 也是一種跨平臺的程序設計語言。用 Java 語言編寫的程序叫做 “Applet” (小應用程序),用編譯器將它編譯成類文件后,將它存在 WWW 頁面中,并在 HTML 檔上作好相應標記,用戶端只要裝上 Java 的客戶軟件就可以在網(wǎng)上直接運行 “Applet” 。 Java 非常

12、適合于企業(yè)網(wǎng)絡和 Internet 環(huán)境,現(xiàn)在已成為 Internet 中最受歡迎、最有影響的編程語言之一。 Java 有許多值得稱道的優(yōu)點,如簡單、面向對象、分布式、解釋性、可靠、安全、結構中立性、可移植性、高性能、多線程、動態(tài)性等。 Java 擯棄了 C++ 中各種弊大于利的功能和許多很少用到的功能。 Java 可以運行與任何微處理器,用 Java 開發(fā)的程序可以在網(wǎng)絡上傳輸,并運行于任何客戶機上。 </p><

13、p>  JSP是JavaServer Pages的簡寫。JSP技術能讓Web開發(fā)員和網(wǎng)頁設計員快速地開發(fā)容易維護的動態(tài)Web主頁。用JSP開發(fā)的Web應用是跨平臺的,即能在Linux下運行,也能在其他操作系統(tǒng)上運行。 </p><p>  JSP技術使用Java編程語言編寫類XML的tags和scriptlets,來封裝產(chǎn)生動態(tài)網(wǎng)頁的處理邏輯。網(wǎng)頁還能通過tags和scriptlets訪問存在于服務端的資源

14、(例如JavaBesns)的應用邏輯。JSP將網(wǎng)頁邏輯與網(wǎng)頁設計和顯示分離,支持可重用的基于組件的設計,使基于Web的應用程序的開發(fā)變得迅速和容易。JSP技術是Servlet技術的擴展。Servlet是平臺無關的,100%純Java的Java服務端組件。</p><p>  第二章班主任管理系統(tǒng)的設計和實現(xiàn)</p><p>  2.1 班主任管理系統(tǒng)的設計</p><p

15、>  班主任管理系統(tǒng)總的目的在于方便班主任對班級的管理,同時也提高了學生處對各個班級的評比和對班主任事務的評估與考核,為領導提供輔助決策支持,提高決策的科學性。建立學校數(shù)據(jù)庫,在日常工作中自動生成數(shù)據(jù),簡化上報過程,提高辦事效率。</p><p>  2.1.1 系統(tǒng)框架</p><p>  班主任管理系統(tǒng)是學校信息系統(tǒng)的一個子系統(tǒng),相應的系統(tǒng)框架圖見圖2-1:</p>

16、<p>  暫時還不存在的子系統(tǒng)</p><p><b>  已有的子系統(tǒng)</b></p><p><b>  班主任管理子系統(tǒng)</b></p><p>  班主任管理子系統(tǒng)中的模塊</p><p><b>  圖2-1</b></p><p&g

17、t;  說明:班主任管理子系統(tǒng)和教務處、宿管科、學生處都有數(shù)據(jù)交互。</p><p>  學生基本信息表單來自教務處中的數(shù)據(jù)庫。大紅鷹學院的教務系統(tǒng)是萬方系統(tǒng),它所使用的數(shù)據(jù)庫是ORACLE的。</p><p>  積分考核管理、班主任日常事務管理、用戶權限設置這一模塊和學生處相連。</p><p>  班主任事務管理、積分考核管理與宿管科相連。</p>

18、<p>  2.1.2 系統(tǒng)使用部門</p><p>  班主任管理系統(tǒng)是一個非常實用的系統(tǒng),在學院里面使用它的部門主要是:學生處、宿管科和班級學生、學生家長以及相應班主任。</p><p>  學生處每天對各班進行各種檢查,針對不同的情況對相應班級的千分制進行增減,每月對所有班級千分制排名,并且以此作為班主任當月工作考核內(nèi)容之一。每月學生處根據(jù)本系統(tǒng)檢查班主任日常事務,這也

19、是班主任每月考核內(nèi)容之一。</p><p>  宿管科管理學生寢室住宿,有權對班級成員因住宿方面的情況進行個人方面千分制的增減。每次班主任下寢室,都由宿管科登記。</p><p>  班級的普通學生可以查看自己的基本信息,查看自己班級以及本人的千分制情況,可以在留言板里發(fā)布信息;班委除了擁有班級普通學生的權限以外,還可以根據(jù)班級成員的具體情況對班級成員的千分制進行相應增扣,查看其他班級成員

20、信息;班主任可以修改班級成員的千分制,對班主任日常事務管理這一塊進行相應數(shù)據(jù)錄入。</p><p>  學生家長可以用自己子女的用戶名、密碼登入系統(tǒng),并且可以在留言板留言。</p><p>  2.1.3 系統(tǒng)使用者</p><p>  班主任管理系統(tǒng)主要工作是方便班主任的日常工作,并且對班主任工作進行定性定量考核的考核,系統(tǒng)使用者有:</p><

21、;p>  學生處管理者:對班級千分制進行查詢、修改;對班主任工作進行查詢。</p><p>  宿管科管理者:對班級成員千分制進行增扣的錄入;對班主任下寢室時間與寢室號碼的錄入。</p><p>  班主任:對班級千分制和班級成員千分制的錄入、查詢、修改;對班級成員信息的查詢;對班主任日常事務的相關錄入;留言板上留言。</p><p>  班委:對班級成員千分

22、制的錄入;對班級千分制的查詢;留言板上留言。</p><p>  普通學生、學生家長:對本人或子女千分制的查詢,班級千分制的查詢,留言板留言。</p><p>  2.1.4 系統(tǒng)功能劃分與描述</p><p>  班主任管理系統(tǒng)分為學生基本信息管理、積分考核管理、班主任日常事務管理、用戶權限設置管理、登入登出管理和消息公布留言板六個模塊。</p>&

23、lt;p>  學生基本信息管理:這個模塊中的數(shù)據(jù)是教務處的方正教務系統(tǒng)中的數(shù)據(jù),在我們這個班主任管理系統(tǒng)中沒有修改權限,但是可以供班委、班主任、學生處查詢。</p><p>  積分考核管理:這個模塊是我們這個系統(tǒng)的一個重點模塊,班主任定性定量考核班委、學生處考核班主任、班級優(yōu)劣排名都是在這個模塊進行。</p><p>  班主任日常事務管理:這個模塊是考核班主任所有任務完成與否的一

24、個模塊,通過這個模塊可以督促班主任和學生、學生家長之間的聯(lián)系;班主任可以通過這個模塊了解自己的工作進程;同時,這個模塊也是學生處對班主任工作考核的依據(jù)之一。這個模塊只能班主任和學生處可以看到。</p><p>  用戶權限設置:可以設置用戶的權限,分為:只讀、增加和修改權限。只讀權限權限最低,除了查看之外沒有任何別的權限。增加權限可以輸入數(shù)據(jù),比如班級和個人千分制的輸入,但是不能進行修改。修改權限權限最高,除了讀

25、寫外,還可以修改數(shù)據(jù)。</p><p>  登入登出管理:形成一個日志文件,從該模塊可以知道進入該模塊的人和時間。</p><p>  消息公布留言板模塊:這個模塊實際上是一個班級的BBS,所有同學都可以在上面留言,留言上面的名字顯示是登入班主任管理系統(tǒng)的名字,可以規(guī)范留言。班級有什么事情,及時在這里發(fā)布。學生有什么意見或建議,又不愿意和老師溝通的,可以在這里發(fā)表。同時,學生家長也可以通過

26、這個模塊知道班級或學校動態(tài),并且可以發(fā)表言論。這個模塊是學生、家長和老師的一個溝通平臺。</p><p>  2.2班主任管理系統(tǒng)的部分實現(xiàn)</p><p>  班主任管理系統(tǒng)的實現(xiàn)是在我們畢業(yè)實踐小組的共同努力下完成的,我所作的工作是: </p><p>  我在項目主要負責權限驗證,我采用了過濾器來實現(xiàn)RBAC模式做權限這塊!權限系統(tǒng)是一個系統(tǒng)必不可少的模塊之一

27、!簡單介紹以下權限系統(tǒng),</p><p>  訪問控制是針對越權使用資源的防御措施?;灸繕耸菫榱讼拗圃L問主體(用戶、進程、服務等)對訪問客體(文件、系統(tǒng)等)的訪問權限,從而使計算機系統(tǒng)在合法范圍內(nèi)使用;決定用戶能做什么,也決定代表一定用戶利益的程序能做什么[1]。</p><p>  企業(yè)環(huán)境中的訪問控制策略一般有三種:自主型訪問控制方法、強制型訪問控制方法和基于角色的訪問控制方法(RB

28、AC)。其中,自主式太弱,強制式太強,二者工作量大,不便于管理[1]?;诮巧脑L問控制方法是目前公認的解決大型企業(yè)的統(tǒng)一資源訪問控制的有效方法。其顯著的兩大特征是:1.減小授權管理的復雜性,降低管理開銷;2.靈活地支持企業(yè)的安全策略,并對企業(yè)的變化有很大的伸縮性。</p><p>  NIST(The National Institute of Standards and Technology,美國國家標準與技

29、術研究院)標準RBAC模型由4個部件模型組成,這4個部件模型分別是基本模型RBAC0(Core RBAC)、角色分級模型RBAC1(Hierarchal RBAC)、角色限制模型RBAC2(Constraint RBAC)和統(tǒng)一模型RBAC3(Combines RBAC)[1]。RBAC0模型如圖2-2所示。</p><p>  圖2-2 RBAC0模型</p><p>  a. RBAC

30、0定義了能構成一個RBAC控制系統(tǒng)的最小的元素集合。在RBAC之中,包含用戶users(USERS)、角色roles(ROLES)、目標objects(OBS)、操作operations(OPS)、許可權permissions(PRMS)五個基本數(shù)據(jù)元素,權限被賦予角色,而不是用戶,當一個角色被指定給一個用戶時,此用戶就擁有了該角色所包含的權限。會話sessions是用戶與激活的角色集合之間的映射。RBAC0與傳統(tǒng)訪問控制的差別在于增加

31、一層間接性帶來了靈活性,RBAC1、RBAC2、RBAC3都是先后在RBAC0上的擴展。</p><p>  b. RBAC1引入角色間的繼承關系,角色間的繼承關系可分為一般繼承關系和受限繼承關系。一般繼承關系僅要求角色繼承關系是一個絕對偏序關系,允許角色間的多繼承。而受限繼承關系則進一步要求角色繼承關系是一個樹結構。</p><p>  c. RBAC2模型中添加了責任分離關系。RBAC

32、2的約束規(guī)定了權限被賦予角色時,或角色被賦予用戶時,以及當用戶在某一時刻激活一個角色時所應遵循的強制性規(guī)則。責任分離包括靜態(tài)責任分離和動態(tài)責任分離。約束與用戶-角色-權限關系一起決定了RBAC2模型中用戶的訪問許可。</p><p>  d. RBAC3包含了RBAC1和RBAC2,既提供了角色間的繼承關系,又提供了責任分離關系。</p><p><b>  3核心對象模型設計&

33、lt;/b></p><p>  根據(jù)RBAC模型的權限設計思想,建立權限管理系統(tǒng)的核心對象模型。如圖2所示。</p><p>  對象模型中包含的基本元素主要有:用戶(Users)、用戶組(Group)、角色(Role)、目標(Objects)、訪問模式(Access Mode)、操作(Operator)。主要的關系有:分配角色權限PA(Permission Assignment)

34、、分配用戶角色UA(Users Assignmen描述如下:</p><p>  a .控制對象:是系統(tǒng)所要保護的資源(Resource),可以被訪問的對象。資源的定義需要注意以下兩個問題:</p><p>  1.資源具有層次關系和包含關系。例如,網(wǎng)頁是資源,網(wǎng)頁上的按鈕、文本框等對象也是資源,是網(wǎng)頁節(jié)點的子節(jié)點,如可以訪問按鈕,則必須能夠訪問頁面。</p><p&g

35、t;  2.這里提及的資源概念是指資源的類別(Resource Class),不是某個特定資源的實例(Resource Instance)。資源的類別和資源的實例的區(qū)分,以及資源的粒度的細分,有利于確定權限管理系統(tǒng)和應用系統(tǒng)之間的管理邊界,權限管理系統(tǒng)需要對于資源的類別進行權限管理,而應用系統(tǒng)需要對特定資源的實例進行權限管理。兩者的區(qū)分主要是基于以下兩點考慮:</p><p>  一方面,資源實例的權限常具有資源

36、的相關性。即根據(jù)資源實例和訪問資源的主體之間的關聯(lián)關系,才可能進行資源的實例權限判斷。</p><p>  例如,在管理信息系統(tǒng)中,需要按照營業(yè)區(qū)域劃分不同部門的客戶,A區(qū)和B區(qū)都具有修改客戶資料這一受控的資源,這里“客戶檔案資料”是屬于資源的類別的范疇。如果規(guī)定A區(qū)只能修改A區(qū)管理的客戶資料,就必須要區(qū)分出資料的歸屬,這里的資源是屬于資源實例的范疇。客戶檔案(資源)本身應該有其使用者的信息(客戶資料可能就含有營

37、業(yè)區(qū)域這一屬性),才能區(qū)分特定資源的實例操作,可以修改屬于自己管轄的信息內(nèi)容。</p><p>  另一方面,資源的實例權限常具有相當大的業(yè)務邏輯相關性。對不同的業(yè)務邏輯,常常意味著完全不同的權限判定原則和策略。</p><p>  b.權限:對受保護的資源操作的訪問許可(Access Permission),是綁定在特定的資源實例上的。對應地,訪問策略(Access Strategy)和

38、資源類別相關,不同的資源類別可能采用不同的訪問模式(Access Mode)。例如,頁面具有能打開、不能打開的訪問模式,按鈕具有可用、不可用的訪問模式,文本編輯框具有可編輯、不可編輯的訪問模式。同一資源的訪問策略可能存在排斥和包含關系。例如,某個數(shù)據(jù)集的可修改訪問模式就包含了可查詢訪問模式。</p><p>  c.用戶:是權限的擁有者或主體。用戶和權限實現(xiàn)分離,通過授權管理進行綁定。</p>&l

39、t;p>  d.用戶組:一組用戶的集合。在業(yè)務邏輯的判斷中,可以實現(xiàn)基于個人身份或組的身份進行判斷。系統(tǒng)弱化了用戶組的概念,主要實現(xiàn)用戶(個人的身份)的方式。</p><p>  e.角色:權限分配的單位與載體。角色通過繼承關系支持分級的權限實現(xiàn)。例如,科長角色同時具有科長角色、科內(nèi)不同業(yè)務人員角色。</p><p>  f.操作:完成資源的類別和訪問策略之間的綁定。</p&g

40、t;<p>  g.分配角色權限PA:實現(xiàn)操作和角色之間的關聯(lián)關系映射。</p><p>  h.分配用戶角色UA:實現(xiàn)用戶和角色之間的關聯(lián)關系映射。</p><p>  該對象模型最終將訪問控制模型轉化為訪問矩陣形式。訪問矩陣中的行對應于用戶,列對應于操作,每個矩陣元素規(guī)定了相應的角色,對應于相應的目標被準予的訪問許可、實施行為。按訪問矩陣中的行看,是訪問能力表CL(Acc

41、ess Capabilities)的內(nèi)容;按訪問矩陣中的列看,是訪問控制表ACL(Access Control Lists)的內(nèi)容。</p><p><b>  4 權限訪問機制</b></p><p>  權限管理系統(tǒng)端:提供集中管理權限的服務,負責提供用戶的鑒別、用戶信息、組織結構信息,以及權限關系表的計算。如圖2-3所示。</p><p>

42、;  圖2-3 權限的訪問示意圖</p><p>  Fig.3 Privilege invoke </p><p>  系統(tǒng)根據(jù)用戶,角色、操作、訪問策略和控制對象之間的關聯(lián)關系,同時考慮權限的正負向授予,計算出用戶的最小權限。在業(yè)務邏輯層采用Session Bean實現(xiàn)此服務,也可以發(fā)布成Web Service。采用代理Proxy模式,集中控制來自應用系統(tǒng)的所要訪問的權限計算服務,并返

43、回權限關系表,即二元組{ObjectId,OperatorId}。</p><p>  應用系統(tǒng)端:可以通過訪問能力表CL和訪問控制表ACL兩種可選的訪問方式訪問權限管理系統(tǒng)。以基于J2EE框架的應用系統(tǒng)為例,說明訪問過程:</p><p>  a.首先采用基于表單的驗證,利用Servlet方式集中處理登錄請求[2]??紤]到需要鑒別的實體是用戶,采用基于ACL訪問方式。用戶登錄時調(diào)用權限管

44、理系統(tǒng)的用戶鑒別服務,如果驗證成功,調(diào)用權限計算服務,并返回權限關系表,以HashMap的方式存放到登錄用戶的全局Session中;如果沒有全局的Session或者過期,則被導向到登錄頁面,重新獲取權限。</p><p>  b.直接URL資源采用基于CL訪問方式進行的訪問控制。如果用戶直接輸入URL地址訪問頁面,有兩種方法控制訪問:1.通過權限標簽讀取CL進行控制;2.采取Filter模式,進行權限控制,如果沒

45、有權限,則重定向到登錄頁面。</p><p><b>  5 權限控制機制</b></p><p>  權限所要控制的資源類別是根據(jù)應用系統(tǒng)的需要而定義的,具有的語義和控制規(guī)則也是應用系統(tǒng)提供的,對于權限管理系統(tǒng)來說是透明的,權限將不同應用系統(tǒng)的資源和操作統(tǒng)一對待。應用系統(tǒng)調(diào)用權限管理系統(tǒng)所獲得的權限關系表,也是需要應用系統(tǒng)來解釋的。按此設計,權限管理系統(tǒng)的通用性較強

46、,權限的控制機制則由應用系統(tǒng)負責處理。</p><p>  由于應用系統(tǒng)的權限控制與特定的技術環(huán)境有關,以基于J2EE架構的應用系統(tǒng)為例來說明,系統(tǒng)主要的展示組件是JSP頁面,采用標記庫和權限控制組件共同來實現(xiàn)。</p><p>  a. 權限標識:利用標簽來標識不同級別資源,頁面權限標簽將標識頁面對象。</p><p>  b. 權限注冊:遍歷JSP頁面上的權限控

47、制標簽,讀取JSP的控制權限。通過權限注冊組件將JSP頁面上的權限控制對象以及規(guī)則注冊到權限管理信息系統(tǒng)中。</p><p>  c. 權限控制:應用系統(tǒng)用戶登錄系統(tǒng)時,從權限管理系統(tǒng)獲得權限關系表之后,一方面,權限標簽控制頁面展示;另一方面,利用權限控制組件在業(yè)務邏輯中進行相應的權限控制,尤其是和業(yè)務邏輯緊密聯(lián)系的控制對象實例的權限控制。</p><p><b>  6 權限存

48、儲機制</b></p><p>  權限管理系統(tǒng)采用了兩種可選的存儲機制:LDAP(Lightweight Directory Access Protocol)目錄服務數(shù)據(jù)庫和關系型數(shù)據(jù)庫。存儲用戶信息、組織結構、角色、操作、訪問模式等信息。</p><p>  其中,目錄服務系統(tǒng)基于LDAP標準,具有廣泛的數(shù)據(jù)整合和共享能力。元目錄(Meta-Directory)功能允許快速

49、、簡潔的與企業(yè)現(xiàn)存基礎結構進行集成,解決基于傳統(tǒng)RDBMS等用戶數(shù)據(jù)庫與LDAP用戶數(shù)據(jù)庫的同步問題。</p><p>  2.3 核心代碼業(yè)務實現(xiàn)</p><p><b>  1,數(shù)據(jù)庫操作</b></p><p>  package bean;</p><p>  import java.sql.*;</p&g

50、t;<p>  import java.util.*;</p><p>  public class JFBean {</p><p>  private Connection con = null;//數(shù)據(jù)庫連接</p><p>  private ResultSet rs = null;//原始結果集</p>

51、<p>  private Statement stmt = null;</p><p><b>  //連接參數(shù)</b></p><p>  private final String DBURL = "jdbc:odbc:bysj";</p><p>  private f

52、inal String DBUSER ="sa";</p><p>  private final String DBPASSWORD ="";</p><p>  private ArrayList result = new ArrayList(); //存放結果集</p><p>  Str

53、ing[] colName = null;</p><p>  private int colLen = 0; //列數(shù)</p><p>  private String empty= "";//替換結果集中的空字符</p><p>  public JFBean() {</p><p><b>  }<

54、;/b></p><p>  public void ini() throws SQLException {</p><p><b>  try {</b></p><p>  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");</p><p>  if

55、 ( (con == null) || con.isClosed())</p><p>  con = DriverManager.getConnection(DBURL,DBUSER, DBPASSWORD);</p><p>  stmt = con.createStatement();</p><p><b>  }</b></p&

56、gt;<p>  catch (SQLException e) {</p><p><b>  throw e;</b></p><p>  }catch(Exception e){</p><p>  System.out.println("load driver error");</p>&l

57、t;p><b>  }</b></p><p><b>  }</b></p><p>  public ArrayList getRS() {</p><p>  return result;</p><p><b>  }</b></p><p&g

58、t;<b>  /**</b></p><p>  * 執(zhí)行數(shù)據(jù)查詢,結果集以數(shù)組(每一行的內(nèi)容)形式存放在ArrayList中</p><p><b>  *</b></p><p>  * @param sqlStatement String 查詢的SQL語句</p><p>  * @retr

59、urn rownum</p><p><b>  *</b></p><p><b>  */</b></p><p>  public int execQuery(String sqlStatement) throws SQLException {</p><p>  int recounter

60、= 0;</p><p>  clearResult();</p><p><b>  try {</b></p><p><b>  ini();</b></p><p>  rs = stmt.executeQuery(sqlStatement);</p><p>  R

61、esultSetMetaData rsmd = rs.getMetaData();</p><p>  String self = null;</p><p>  colLen = rsmd.getColumnCount() ;</p><p>  while (rs.next()) {</p><p>  String[] colValue

62、 = new String[colLen];</p><p>  for (int i = 0; i < colLen; i++) {</p><p>  colValue[i] = ( (self = rs.getString(i + 1 )) == null ?empty :</p><p>  self.trim().length() == 0 ? em

63、pty : self.trim());</p><p><b>  }</b></p><p>  result.add(colValue);</p><p>  recounter++;</p><p><b>  }</b></p><p>  return recoun

64、ter;</p><p><b>  }</b></p><p>  catch (SQLException e) {</p><p><b>  throw e;</b></p><p><b>  }</b></p><p><b>  f

65、inally {</b></p><p>  closeConn();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  /**</b></p><p>  * 執(zhí)行數(shù)據(jù)查詢,結果集以

66、HashMap(每一行的內(nèi)容)形式存放在ArrayList中</p><p><b>  *</b></p><p>  * @param sqlStatement String 查詢的SQL語句</p><p>  * @retrurn rownum</p><p><b>  */</b>&l

67、t;/p><p>  public int execQueryName(String sqlStatement) throws SQLException {</p><p>  int recounter = 0;</p><p>  clearResult();</p><p><b>  try {</b></p&

68、gt;<p><b>  ini();</b></p><p>  rs = stmt.executeQuery(sqlStatement);</p><p>  ResultSetMetaData rsmd = rs.getMetaData();</p><p>  String self = null;</p>

69、<p>  colLen = rsmd.getColumnCount() ;</p><p>  colName = new String[colLen];</p><p>  for (int i = 0; i < colLen; i++) {</p><p>  colName[i] = rsmd.getColumnName(i + 1);<

70、;/p><p><b>  }</b></p><p>  while (rs.next()) {</p><p>  HashMap colValue = new HashMap();</p><p>  for (int i = 0; i < colLen; i++) {</p><p> 

71、 colValue.put(colName[i],</p><p>  (self = rs.getString(i + 1 )) == null ? empty :</p><p>  self.trim().length() == 0 ? empty : self.trim());</p><p><b>  }</b></p>

72、<p>  result.add(colValue);</p><p>  recounter++;</p><p><b>  }</b></p><p>  return recounter;</p><p><b>  }</b></p><p>  ca

73、tch (SQLException e) {</p><p><b>  throw e;</b></p><p><b>  }</b></p><p><b>  finally {</b></p><p>  closeConn();</p><p&g

74、t;<b>  }</b></p><p><b>  }</b></p><p><b>  /**</b></p><p>  * 執(zhí)行一條沒有返回結果集的SQL</p><p><b>  *</b></p><p>  *

75、@param sqlStatement String SQL腳本</p><p>  * @retrurn int 成功與否標志</p><p><b>  *</b></p><p><b>  */</b></p><p>  public int execUpdate(String sqlSt

76、atement) throws SQLException {</p><p><b>  try {</b></p><p><b>  ini();</b></p><p>  int recounter = stmt.executeUpdate(sqlStatement);</p><p>  

77、return recounter;</p><p><b>  }</b></p><p>  catch (SQLException e) {</p><p><b>  throw e;</b></p><p><b>  }</b></p><p>

78、;<b>  finally {</b></p><p>  closeConn();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  /**</b></p><p>  

79、* 清空自定義的結果集</p><p><b>  */</b></p><p>  public void clearResult() {</p><p>  if (result.size() > 0)</p><p>  result.clear();</p><p><b>

80、;  }</b></p><p>  // Release the SQL statement resources</p><p>  private void closeConn() throws SQLException {</p><p><b>  try {</b></p><p>  if (co

81、n != null) {</p><p>  stmt.close();</p><p>  con.close();</p><p>  stmt = null;</p><p>  con = null;</p><p><b>  }</b></p><p><

82、b>  }</b></p><p>  catch (SQLException e) {</p><p><b>  throw e;</b></p><p><b>  }</b></p><p><b>  }</b></p><p&g

83、t;<b>  }</b></p><p>  2,核心SERVLET中央控制器</p><p>  package bean;</p><p>  import java.io.IOException;</p><p>  import java.sql.*;</p><p>  import

84、java.util.Date;</p><p>  import javax.servlet.ServletException;</p><p>  import javax.servlet.http.HttpServlet;</p><p>  import javax.servlet.http.HttpServletRequest;</p><

85、;p>  import javax.servlet.http.HttpServletResponse;</p><p>  import javax.servlet.http.HttpSession;</p><p>  public class servlet extends HttpServlet {</p><p>  private static fi

86、nal long serialVersionUID = 1L;</p><p>  public void doPost(HttpServletRequest request, HttpServletResponse response)</p><p>  throws ServletException, IOException {</p><p>  respon

87、se.setContentType("text/html;charset=gb2312");</p><p>  String action = request.getParameter("action");</p><p><b>  // 登陸</b></p><p>  if (action.equ

88、als("login")) {</p><p>  logIn(request, response);</p><p><b>  }</b></p><p><b>  // 登出</b></p><p>  if (action.equals("logout&quo

89、t;)) {</p><p>  logOut(request, response);</p><p><b>  }</b></p><p><b>  //添加記錄</b></p><p>  if (action.equals("add")) {</p>&l

90、t;p>  addOper(request, response);</p><p><b>  } </b></p><p><b>  //更新記錄</b></p><p>  if (action.equals("update")) {</p><p>  update

91、Oper(request, response);</p><p><b>  } </b></p><p><b>  //刪除記錄</b></p><p>  if (action.equals("del")) {</p><p>  delOper(request, resp

92、onse);</p><p><b>  }</b></p><p><b>  // 留言</b></p><p>  if (action.equals("message")) {</p><p>  message(request, response);</p>

93、<p><b>  }</b></p><p><b>  }</b></p><p>  public void doGet(HttpServletRequest request, HttpServletResponse response)</p><p>  throws ServletException

94、, IOException {</p><p>  doPost(request,response);</p><p><b>  }</b></p><p>  // 處理字符串方法</p><p>  public String getString(String s) {</p><p>  

95、if (s == null)</p><p><b>  s = "";</b></p><p><b>  try {</b></p><p>  byte a[] = s.getBytes("ISO-8859-1");</p><p>  s = new

96、String(a);</p><p>  } catch (Exception e) {</p><p><b>  }</b></p><p><b>  return s;</b></p><p><b>  }</b></p><p>  priv

97、ate void logIn(HttpServletRequest request, HttpServletResponse response)</p><p>  throws ServletException, IOException {</p><p>  Connection con = null;</p><p>  Statement sql = nul

98、l;</p><p>  ResultSet rs = null;</p><p>  HttpSession session = request.getSession();</p><p>  String type = getString(request.getParameter("type"));</p><p> 

99、 String username = getString(request.getParameter("username"));</p><p>  String password = getString(request.getParameter("password"));</p><p>  JFBean jf = new JFBean();<

100、/p><p><b>  try {</b></p><p>  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");</p><p>  } catch (ClassNotFoundException en) {</p><p>  en.printStackTr

101、ace();</p><p><b>  }</b></p><p><b>  try {</b></p><p>  con = DriverManager.getConnection("jdbc:odbc:bysj", "sa", "");</p>

102、;<p>  sql = con.createStatement();</p><p><b>  // 教師登陸</b></p><p>  if (type.equals("teacher")) {</p><p>  String condition = "select * from teach

103、er where id = '"</p><p>  + username + "'AND password = '" + password + "'";</p><p>  String condition1 = "select teacher.name,classlist.name,auothi

104、nfo.typename from teacher,classteacher,classlist,auothinfo where teacher.id = '"</p><p>  + username</p><p>  + "'AND teacher.id =classteacher.teacherid AND classteacher.classi

105、d=classlist.id AND teacher.id=auothinfo.id";</p><p>  rs = sql.executeQuery(condition);</p><p>  if (rs.next()) {</p><p>  session.setAttribute("islog", "yes&quo

106、t;);</p><p>  ResultSet rs1 = sql.executeQuery(condition1);</p><p>  rs1.next();</p><p>  session.setAttribute("name", rs1.getString(1));</p><p>  session.set

107、Attribute("class", rs1.getString(2));</p><p>  session.setAttribute("type", rs1.getString(3));</p><p>  // 存入日志</p><p>  String logid = getString(request.g

108、etParameter("username"));</p><p><b>  ;// 登入ID</b></p><p>  String logname = (String) session.getAttribute("name");// 登入姓名</p><p>  Date time = new D

109、ate();</p><p>  time.getTime();</p><p>  String logtime = time.toString().substring(4, 20);// 登入時間</p><p>  String condition2 = "insert into rzgl (rid,rname,intime) values (

110、9;"</p><p><b>  + logid</b></p><p><b>  + "'"</b></p><p><b>  + ","</b></p><p><b>  + "'

111、"</b></p><p><b>  + logname</b></p><p><b>  + "'"</b></p><p><b>  + ","</b></p><p>  + "'

112、;" + logtime + "')";</p><p>  jf.execUpdate(condition2);</p><p>  response.sendRedirect("Templates/index.jsp");</p><p><b>  } else {</b><

113、/p><p>  session.setAttribute("error", "用戶名或密碼錯誤,請重新輸入!");</p><p>  response.sendRedirect("Templates/index.jsp");</p><p><b>  }</b></p>

114、<p><b>  }</b></p><p><b>  // 學生登陸</b></p><p>  if (type.equals("student")) {</p><p>  String condition = "select * from student where i

115、d = '"</p><p>  + username + "'AND password = '" + password + "'";</p><p>  String condition1 = "select student.name,classlist.name,auothinfo.typena

116、me from student,classlist,auothinfo where student.id = '"</p><p>  + username</p><p>  + "'AND student.classid=classlist.id AND student.id=auothinfo.id";</p><p

117、>  rs = sql.executeQuery(condition);</p><p>  if (rs.next()) {</p><p>  session.setAttribute("islog", "yes");</p><p>  ResultSet rs1 = sql.executeQuery(condit

118、ion1);</p><p>  rs1.next();</p><p>  session.setAttribute("name", rs1.getString(1));</p><p>  session.setAttribute("class", rs1.getString(2));</p><p&g

119、t;  session.setAttribute("type", rs1.getString(3));</p><p>  // 存入日志</p><p>  String logid = getString(request.getParameter("username"));</p><p><b> 

120、 ;// 登入ID</b></p><p>  String logname = (String) session.getAttribute("name");// 登入姓名</p><p>  Date time = new Date();</p><p>  time.getTime();</p><p> 

121、 String logtime = time.toString().substring(4, 20);// 登入時間</p><p>  String condition2 = "insert into rzgl (rid,rname,intime) values ('"</p><p><b>  + logid</b></p>

122、;<p><b>  + "'"</b></p><p><b>  + ","</b></p><p><b>  + "'"</b></p><p><b>  + logname</b>

123、;</p><p><b>  + "'"</b></p><p><b>  + ","</b></p><p>  + "'" + logtime + "')";</p><p>  jf.e

124、xecUpdate(condition2);</p><p>  response.sendRedirect("Templates/index.jsp");</p><p><b>  } else {</b></p><p>  session.setAttribute("error", "用

125、戶名或密碼錯誤,請重新輸入!");</p><p>  response.sendRedirect("Templates/index.jsp");</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //

126、 班委登陸</b></p><p>  if (type.equals("monitor")) {</p><p>  String condition = "select * from student where id = '"</p><p>  + username + "'AND

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論