jsp數據庫論文,關於數據庫論文

本文目錄一覽:

基於JSP、數據庫的畢業論文,題目是設計電子相冊,急!!!!!

使用JSP技術設計電子商務應用系統(2)(1)

關鍵詞:使用JSP技術設計電子商務應用系統,,

p2、 開放的開發過程,開放的原代碼

SUN應用JAVA社團性過程開發JSP技術。自從1995年,SUN已經用這種開放過程方法同國際JAVA組織合作開發和修改了JAVA技術與規範。針對JSP的產品,SUN授權了工具提供商(如Macromedia),結盟公司(如Apache, Netscape),最終用戶,協作商及其他。最近,SUN將最新版本的JSP和JavaTM Servlet(JSP 1.1,JAVA SERVLET 2.2)的原代碼發放給Apache,以求JSP與Apache緊密的相互發展。Apache,SUN和許多其他的公司及個人公開成立一個健壯的諮詢機構以便任何公司和個人都能免費取得信息。(詳見:)

圖1-2 SUN的合作夥伴Apache關於JSP最新內容的網址

而由於APACHE對源代碼採用了OPEN TO PUBLIC的技術戰略, 如果你對研究JSP平台的系統源代碼感興趣, 你甚至可以在INTERNET上下載它們.其網址為:

圖1-3 APACHE的JSP平台: TOMCAT的系統源代碼下載網址

JSP應用程序界面(API)毫無疑問已經取得成功,並將隨JAVA組織不斷開放擴大繼續完善。相反,ASP技術僅依靠微軟本身的推動,其發展是建立在獨佔的,封閉的開發過程基礎之上。

3、 從開發人員的角度來看 :ASP和JSP技術都能使開發者實現通過點擊網頁中的組件製作交互式的,動態的內容和應用程序的WEB站點。ASP僅支持組件對象模型COM,而JSP技術提供的組件都是基於JavabeansTM技術或JSP標籤庫。由此可以看出兩者雖有相同之處,但其區別是很明顯的。

1) JSP標籤可擴充性

儘管ASP和JSP都使用標籤與腳本技術來製作動態WEB網頁,JSP技術能夠使開發者擴展JSP標籤得以應用,JSP開發者能定製標籤庫,所以網頁製作者充分利用與XML兼容的標籤技術強大的功能,大大減少對腳本語言的依賴。由於定製標籤技術,使網頁製作者降低了製作網頁和向多個網頁擴充關鍵功能的複雜程度。

2) JSP跨平台的可重用性

JSP的開發人員在開發過程中一直關注可重用性。JSP組件(企業JavabeansTM,Javabeans,或定製的JSP標籤)都是跨平台可重用的。企業Javabeans組件可以訪問傳統的數據庫,並能以分佈式系統模式工作於UNIX和WINDOWS平台。JSP技術的標籤可擴充功能為開發人員提供簡便的,與XML兼容的接口即共享網頁的打包功能使其完全的工業標準化。

這種基於組件的模式很有效提高應用程序的開發效率,因為這種模式能夠使開發人員利用快捷的子組件快速創建模板應用程序,然後再整合一些附加功能以後便可使用。象這樣有效的方法在JSP中無處不在,並可將其打包成一個Javabean或一個工業標準化的Javabean組件。

二、 JAVA的優越性

JSP技術是用JAVA語言作為腳本語言的,而ASP網頁使用微軟的VBScrip或Jscrip。JAVA是成熟的,強大的,易擴充的編程語言,遠優於基於BASIC的腳本語言。如:JAVA的可執行性優於VBScript或Jscript語言。因為它們利用JAVA技術並且都被編譯為JAVA Servlets,JSP網頁為整個服務器端的JAVA庫單元提供了一個接口來服務於HTTP的應用程序。

JAVA使開發人員的工作在其他方面也變的一樣容易,簡單。例如,當ASP應用程序在WINDOWS NT系統被懷疑可能會崩潰時,JAVA能有效的防止系統的崩潰。JAVA語言通過提供防止內存的泄漏的方法,在內存管理方面也能大顯身手。加之,JSP為應用提供了健壯的意外事件處理機制。

1、 易於維護性

基於JSP技術的應用程序比基於ASP的應用程序易於維護和管理。

腳本語言都能很好服務於小的應用程序,但不能適應大型的,複雜的應用程序。因為,JAVA是結構化的,它比較容易創建和維護龐大的,組件化的應用程序。

JSP突出的組件技術使修改內容而不影響邏輯或修改邏輯而不影響內容變得很容易實現。

企業級的Javabeans結構整合了企業邏輯,例如數據庫的訪問,安全,事務完整性,及獨立性即獨立於應用程序。

因為JSP技術是一種開放的,跨平台的結構,因此,WEB服務器,平台,及其他的組件能很容易升級或切換,且不會影響JSP基本的應用程序。這一特點使JSP能夠適用現實世界的各種WEB應用程序不斷的變化和發展。

2、企業產品的多樣性

JAVA2平台即企業版(J2EE)是適用於多企業應用程序的JAVA結構,作為J2EE的部分,JSP網頁可訪問所有J2EE的組件,包括Javabeans,企業級Javabeans及JAVA Servlets。JSP網頁都能完全編譯成為Servlets,所以它們都享有靈活性的特點和為服務器端JAVA應用程序。J2EE平台內容不僅包括管理複雜的企業應用程序而且包括事務管理技術和Pooling資源管理技術。

JSP網頁可以訪問標準的J2EE服務,包括:

* JAVA名稱和目錄界面API

* JDBCTM API(與關聯的數據庫通訊)

* JavaMailTM(支持基於JAVA郵件和消息應用程序的類)

* JAVATM 消息服務

通過J2EE,JSP網頁能夠用許多方式同企業系統交互訪問。J2EE支持兩種CORBA規範的技術:JAVA IDL和RMI-IIOP。在企業級JAVABEANS技術支持下,JSP網頁通過運用高級的,對象映射的方式訪問數據庫。

數據庫論文 急求!!追加1000分

一、三個世界

1、現實世界 人們管理的對象存於現實世界中。現實世界的事物及事物之間存在着聯繫,這種聯繫是客觀存在的,是由事物本身的性質決定的。例如學校的教學系統中有教師、學生、課程,教師為學生授課,學生選修課程並取得成績。

2、概念世界 概念世界是現實世界在人們頭腦中的反映,是對客觀事物及其聯繫的一種抽象描述,從而產生概念模型。概念模型是現實世界到機器世界必然經過的中間層次。涉及到下面幾個術語:

實體:我們把客觀存在並且可以相互區別的事物稱為實體。實體可以是實際事物,也可以是抽象事件。如一個職工、一場比賽等。

實體集:同一類實體的集合稱為實體集。如全體職工。注意區分”型”與”值”的概念。如每個職工是職工實體”型”的一個具體”值”。

屬性:描述實體的特性稱為屬性。如職工的職工號,姓名,性別,出生日期,職稱等。

關鍵字:如果某個屬性或屬性組合的值能唯一地標識出實體集中的每一個實體,可以選作關鍵字。用作標識的關鍵字,也稱為碼。如”職工號”就可作為關鍵字。

聯繫:實體集之間的對應關係稱為聯繫,它反映現實世界事物之間的相互關聯。聯繫分為兩種,一種是實體內部各屬性之間的聯繫。另一種是實體之間的聯繫。

3、機器世界 存入計算機系統里的數據是將概念世界中的事物數據化的結果。為了準確地反映事物本身及事物之間的各種聯繫,數據庫中的數據必須有一定的結構,這種結構用數據模型來表示。數據模型將概念世界中的實體,及實體間的聯繫進一步抽象成便於計算機處理的方式。

數據模型應滿足三方面要求:一是能比較真實地模擬現實世界;二是容易為人所理解;三是便於在計算機上實現。數據結構、數據操作和完整性約束是構成數據模型的三要素。數據模型主要包括網狀模型、層次模型、關係模型等,它是按計算機系統的觀點對數據建模,用於DBMS的實現。

關係數據庫採用關係模型作為數據的組織方式。 關係數據庫因其嚴格的數學理論、使用簡單靈活、數據獨立性強等特點,而被公認為最有前途的一種數據庫管理系統。它的發展十分迅速,目前已成為佔據主導地位的數據庫管理系統。自20世紀80年代以來,作為商品推出的數據庫管理系統幾乎都是關係型的,例如,Oracle,Sybase,Informix,Visual FoxPro等。

網絡數據庫也叫Web數據庫。促進Internet發展的因素之一就是Web技術。由靜態網頁技術的HTML到動態網頁技術的CGI、ASP、PHP、JSP等,Web技術經歷了一個重要的變革過程。Web已經不再局限於僅僅由靜態網頁提供信息服務,而改變為動態的網頁,可提供交互式的信息查詢服務,使信息數據庫服務成為了可能。Web數據庫就是將數據庫技術與Web技術融合在一起,使數據庫系統成為Web的重要有機組成部分,從而實現數據庫與網絡技術的無縫結合。這一結合不僅把Web與數據庫的所有優勢集合在了一起,而且充分利用了大量已有數據庫的信息資源。圖1-1是Web數據庫的基本結構圖,它由數據庫服務器(Database Server)、中間件(Middle Ware)、Web服務器(Web Server)、瀏覽器(Browser)4部分組成。

Web數據庫的基本結構

它的工作過程可簡單地描述成:用戶通過瀏覽器端的操作界面以交互的方式經由Web服務器來訪問數據庫。用戶向數據庫提交的信息以及數據庫返回給用戶的信息都是以網頁的形式顯示。

1.1.1 Internet技術與相關協議

Internet技術在Web數據庫技術中扮演着重要的角色。Internet(互聯網)專指全球最大的、開放的、由眾多網絡相互連接而成的計算機網絡,並通過各種協議在計算機網絡中傳遞信息。TCP/IP協議是Internet上使用的兩個最基本的協議。因此也可以說Internet是全球範圍的基於分組交換原理和TCP/IP協議的計算機網絡。它將信息進行分組後,以數據包為單位進行傳輸。Internet在進行信息傳輸時,主要完成兩項任務。

(1)正確地將源信息文件分割成一個個數據包,並能在目的地將源信息文件的數據包再準確地重組起來。

(2)將數據包準確地送往目的地。

TCP/IP協議的作用就是為了完成上述兩項任務,規範了網絡上所有計算機之間數據傳遞的方式與數據格式,提供了數據打包和尋址的標準方法。

1.TCP/IP協議

TCP協議(Transmission Control Protocol,傳輸控制協議)規定了分割數據和重組數據所要遵循的規則和要進行的操作。TCP協議能保證數據發送的正確性,如果發現數據有損失,TCP將重新發送數據。

2.IP協議

在Internet上傳送數據往往都是遠距離的,因此在傳輸過程中要通過路由器一站一站的轉接來實現。路由器是一種特殊的計算機,它會檢測數據包的目的地主機地址,然後決定將該數據包送往何處。IP協議(Internet Protocol,網際協議)給Internet中的每一台計算機規定了一個地址,稱為IP地址。IP地址的標準是由4部分組成(例如202.112.203.11),其中前兩部分規定了當前使用網絡的管理機構,第3部分規定了當前使用的網絡地址,第4部分規定了當前使用的計算機地址。

Internet上提供的主要服務有E-mail、FTP、BBS、Telnet、WWW等。其中WWW(World Wide Web,萬維網)由於其豐富的信息資源而成為Internet最為重要的服務。

3.HTTP協議

HTTP協議(Hypertext Transfer Protocol,超文本傳輸協議)應用在WWW上,其作用是完成客戶端瀏覽器與Web服務器端之間的HTML數據傳輸。

1.1.2 Web的工作原理與工作步驟

萬維網簡稱為Web。Web可以描述為在Internet上運行的、全球的、交互的、動態的、跨平台的、分佈式的、圖形化的超文本信息系統。

1.Web的工作原理

Web是伴隨着Internet技術而產生的。在計算機網絡中,對於提供Web服務的計算機稱為Web服務器。Web採用瀏覽器/服務器的工作方式。每個Web服務器上都放置着大量的Web信息。Web信息的基本單位是Web頁(網頁),多個網頁組成了一個Web節點。每個Web節點的起始頁稱為「主頁」,且擁有一個URL地址(統一資源定位地址)。Web節點之間及網頁之間都是以超文本結構(非線性的網狀結構)來進行組織的。

2.Web的工作步驟

Web的工作步驟如下。

(1)用戶打開客戶端計算機中的瀏覽器軟件(例如Internet Explorer)。

(2)用戶輸入要啟動的Web主頁的URL地址,瀏覽器將生成一個HTTP請求。

(3)瀏覽器連接到指定的Web服務器,並發送HTTP請求。

(4)Web服務器接到HTTP請求,根據請求的內容不同作相應的處理,再將網頁以HTML文件格式發回給瀏覽器。

(5)瀏覽器將網頁顯示到屏幕上.

圖1-2 Web的工作步驟

1.1.3 WWW世界中的標記語言

1.HTML語言

HTML(Hypertext Markup Language,超文本標記語言)是創建網頁的計算機語言。所謂網頁實際上就是一個HTML文檔。文檔內容由文本和HTML標記組成。HTML文檔的擴展名就是.html或.htm。瀏覽器負責解釋HTML文檔中的標記,並將HTML文檔顯示成網頁。

(1)HTML標記

HTML標記的作用是告訴瀏覽器網頁的結構和格式。每一個標記用尖括號括起來。大多數標記都有一個開始標記和一個結束標記。標記不分大小寫。多數標記都帶有自己的屬性。例如字體標記FONT有FACE、COLOR、SIZE等屬性:FACE定義字體;COLOR定義字體的顏色;SIZE定義字體的大小。

使用格式:FONT FACE= SONG SIZE=3 COLOR=RED BEIJING /FONT。

網頁中有很多文本鏈接和圖片鏈接。鏈接,又被稱為超鏈接,用於鏈接到WWW萬維網中的其他網頁上。在HTML文檔中表示超鏈接的標記是A,通過屬性HREF指出鏈接的網頁地址URL。

使用格式:A HREF= BEIJING /A。

(2)HTML程序

HTML程序必須以HTML標記開始,以/HTML標記結束。在HTML和/HTML標記之間主要由兩部分組成:文件頭和文件體。文件頭用標記HEAD /HEAD來標識,文件體用標記BODY/BODY來標識。在文件的頭部通常包含整個網頁的一些信息。例如TITLE/TITLE標記是用來說明網頁的名稱;META/META標記是用來說明網頁的其他信息,如設計者姓名和版權信息等。所有在瀏覽器中要顯示的內容稱為網頁的主體,必須放在BODY/BODY標記中。下面給出的是一個空網頁的HTML程序。

HTML

HEAD

TITLE(在此標記中寫網頁的標題)/TITLE

/HEAD

BODY

(在此標記中寫網頁的內容)

/BODY

/HTML

(3)HTML規範

HTML規範又稱為HTML標準,它總在不斷地發展。每一新版本的出現,HTML都會增加新的特性和內容。有關HTML版本的詳細信息請訪問網站。

在不同的瀏覽器中,網頁的顯示效果可能會有所不同。每一個瀏覽器都使用自己獨特的方式解釋HTML文檔中的標記,並且多數瀏覽器不完全支持HTML的所有特性。因為,像Microsoft和Netscape公司在HTML標準上又開發了一些特有的HTML標記和屬性,稱之為HTML的擴展。這些標記和屬性只被他們自己的瀏覽器所識別,不可能被其他公司的瀏覽器識別。如果瀏覽器不能識別HTML文檔中的標記,則會忽略這個標記。

(4)HTML程序的編輯環境與運行環境

HTML文檔是一個普通的文本文件(ASCII),不包含任何與平台、程序有關的信息。因此HTML文檔可以利用任何文本編輯器來方便地生成。要注意的是HTML文檔的擴展名必須是.html或.htm。運行HTML文檔可以在任何瀏覽器下進行,並可在瀏覽器上查看網頁的HTML源代碼。

關於HTML語言中標記的種類與使用方法將會在第5章中更詳細地進行介紹。

2.可擴展標記語言(XML)

HTML是Web上的通用語言,隨着Internet的深入人心,WWW上的Web文件日益複雜化、多樣化,人們開始感到了HTML這種固定格式的標記語言的不足。1996年W3C開始對HTML的後續語言進行研究,並於1998年正式推出了XML(Extensible Markup Language,可擴展標記語言)。在設計網頁時,XML提供了比HTML更靈活的方法。

(1)XML語言的特點

XML是國際組織W3C為適應WWW的應用,將SGML (Standard Generalized Markup Language)標準進行簡化形成的元標記語言。簡單地說,XML是使用標記來描述內容或與內容相關的形式信息的通用語言。一個XML文檔由標記和字符數據組成。

而作為元標記語言,XML不再使標記固定,允許網頁的設計者定義數量不限的標記來描述內容,同時還允許設計者創建自己的使用規則。

(2)XML的DTD

DTD(Document Type Definition,文檔類型定義)是一組應用在XML文檔中的自定義標記語言的技術規範。DTD中定義了標記的含義及關於標記的語法規則。語法規則中確定了在XML文檔中使用哪些標記符,它們應該按什麼次序出現,標記符之間如何 嵌套,哪些標記符有屬性等等。DTD可以包含在它所描述的XML文檔中,但通常它是一份單獨的文檔或者一系列文檔。作為外部文件可通過URL鏈接,被不同的XML文檔 共享。

XML把DTD的定義權開放,不同行業可以根據自己的實際需求定義描述內容的DTD,以適應本行業內部的信息交流和存檔需要。因此,適合於不同行業、不同平台的標記語言大批湧現。

(3)XML的CSS與XSL

強調內容描述與形式描述的分離,一方面可以使XML文件的編寫者更集中精力於數據本身,而不受顯示方式的細節影響;另一方面允許為相同的數據定義不同的顯示方式,從而適合於不同應用、不同媒體,使XML數據得到最大程度的重用。XML文檔數據的顯示形式是通過樣式單定義的。CSS(Cascading Style Sheets)是XML使用的一種標準的級聯樣式單,XSL(Extensible Style Language)則是可擴展的樣式語言。

由於XML允許用戶創建任何所需的標記,而通用瀏覽器卻既無法預期用戶標記的意義,又無法為顯示這些標記而提供規則,因此用戶必須為自己創建的XML文檔編寫樣式單,樣式單可以實現共享。

瀏覽器對一個XML文檔的處理過程是,首先去關聯它所指定的樣式單文件,如果該樣式單是一個XSL文件,則按照規定對XML數據進行轉換然後再顯示,XSL本身也是基於XML語言的,可以將XML轉化為HTML後再顯示。如果該樣式單是一個CSS文件,瀏覽器就會按照樣式單的規定給每個標記賦予一組樣式後再顯示。

1.2 Web數據庫訪問技術

Web數據庫訪問技術通常是通過三層結構來實現的,如圖1-3所示。目前建立與Web數據庫連接訪問的技術方法可歸納為CGI技術,ODBC技術和ASP、JSP、PHP 技術。

Web數據庫訪問的三層結構

1.2.1 CGI技術

CGI(Common Cateway Interface,通用網關界面)是一種Web服務器上運行的基於Web瀏覽器輸入程序的方法,是最早的訪問數據庫的解決方案。CGI程序可以建立網頁與數據庫之間的連接,將用戶的查詢要求轉換成數據庫的查詢命令,然後將查詢結果通過網頁返回給用戶。一個CGI工作的基本原理如圖1-4所示。

CGI程序需要通過一個接口才能訪問數據庫。這種接口多種多樣,數據庫系統對CGI程序提供了各種數據庫接口如Perl、C/C++、VB等。為了使用各種數據庫系統,CGI程序支持ODBC方式,通過ODBC接口訪問數據庫。

CGI工作流程

1.2.2 ODBC技術

ODBC(Open Database Connectivity,開放數據庫互接)是一種使用SQL的應用程序接口(API)。ODBC最顯著的優點就是它生成的程序與數據庫系統無關,為程序員方便地編寫訪問各種DBMS的數據庫應用程序提供了一個統一接口,使應用程序和數據庫源之間完成數據交換。ODBC的內部結構為4層:應用程序層、驅動程序管理器層、驅動程序層、數據源層。它們之間的關係如圖1-5所示。由於ODBC適用於不同的數據庫產品,因此許多服務器擴展程序都使用了包含ODBC層的系統結構。

ODBC的內部結構

Web服務器通過ODBC數據庫驅動程序向數據庫系統發出SQL請求,數據庫系統接收到的是標準SQL查詢語句,並將執行後的查詢結果再通過ODBC傳回Web服務器,Web服務器將結果以HTML網頁傳給Web瀏覽器,工作原理如圖1-6所示。

Web服務器通過ODBC訪問數據庫

由於Java語言所顯示出來的編程優勢贏得了眾多數據庫廠商的支持。在數據庫處理方面,Java提供的JDBC為數據庫開發應用提供了標準的應用程序編程接口。與ODBC類似,JDBC也是一種特殊的API,是用於執行SQL語句的Java應用程序接口。它規定了Java如何與數據庫之間交換數據的方法。採用Java和JDBC編寫的數據庫應用程序具有與平台無關的特性。

1.2.3 ASP、JSP、PHP技術

ASP是Microsoft開發的動態網頁技術,主要應用於Windows NT+IIS或 Windows 9x+PWS平台。確切地說ASP不是一種語言,而是Web服務器端的開發環境。利用ASP可以產生和運行動態的、交互的、高性能的Web服務應用程序。ASP支持多種腳本語言,除了VBScript和Pscript,也支持Perl語言,並且可以在同一ASP文件中使用多種腳本語言以發揮各種腳本語言的最大優勢。但ASP默認只支持VBScript和Pscript,若要使用其他腳本語言,必須安裝相應的腳本引擎。ASP支持在服務器端調用ActiveX組件ADO對象實現對數據庫的操作。在具體的應用中,若腳本語言中有訪問數據庫的請求,可通過ODBC與後台數據庫相連,並通過ADO執行訪問庫的操作。關於ASP的編程技術將會在第7章中詳細介紹。

JSP是Sun公司推出的新一代Web開發技術。作為Java家族的一員,幾乎可以運行在所有的操作系統平台和Web服務器上,因此JSP的運行平台更為廣泛。目前JSP支持的腳本語言只有Java。JSP使用JDBC實現對數據庫的訪問。目標數據庫必須有一個JDBC的驅動程序,即一個從數據庫到Java的接口,該接口提供了標準的方法使Java應用程序能夠連接到數據庫並執行對數據庫的操作。JDBC不需要在服務器上創建數據源,通過JDBC、JSP就可以實現SQL語句的執行。

PHP是Rasmus Lerdorf推出的一種跨平台的嵌入式腳本語言,可以在Windows、UNIX、Linux等流行的操作系統和IIS、Apache、Netscape等Web服務器上運行,用戶更換平台時,無需變換PHP代碼。PHP是通過Internet合作開發的開放源代碼軟件,它借用了C、Java、Perl語言的語法並結合PHP自身的特性,能夠快速寫出動態生成頁面。PHP可以通過ODBC訪問各種數據庫,但主要通過函數直接訪問數據庫。PHP支持目前絕大多數的數據庫,提供許多與各類數據庫直接互連的函數,包括Sybase、Oracle、SQL Server等,其中與SQL Server數據庫互連是最佳組合。

1.3 網絡數據庫應用系統的層次體系

當前,Internet/Intranet技術發展異常迅速,越來越多的數據庫應用軟件運行在Internet/Intranet環境下。在此之前,數據庫應用系統的發展經歷了單機結構、集中式結構、客戶機/服務器(C/S)結構之後,隨着Internet的普及,又出現了瀏覽器/服務器(B/S)結構與多層結構。在構造一個應用系統時,首先考慮的是系統的體系結構,採用哪種結構取決於系統的網絡環境、應用需求等因素。

1.3.1 客戶機/服務器結構

1.二層C/S結構

二層C/S結構是當前非常流行的數據庫系統結構,在這種結構中,客戶機提出請求,服務器對客戶機的服務請求做出回答。它把界面和數據處理操作分開在前端(客戶端)和後端(服務器端),這個主要特點使得C/S系統的工作速度主要取決於進行大量數據操作的服務器,而不是前端的硬件設備;同時也大大降低了對網絡傳輸速度的要求,因為只須客戶端把服務請求發送給數據庫服務器,數據庫服務器只把服務結果傳回前端,如圖1-7所示。

在設計時,對數據可能有如下不同的處理形式。

(1)在處理時,客戶機先向服務器索取數據,然後釋放數據庫,即客戶機發出的是文件請求,在客戶機端處理數據,最後將結果送回服務器。這種處理方式的缺點很明顯:所有的應用處理都在客戶端完成,這就要求客戶端的計算機必須有足夠的能力,以便執行需要的任何程序。更為糟糕的是,由於所有的處理均在客戶端完成,每次運行時都要將文件整體傳送到客戶端,然後才能執行。如:Student表中有30 000條記錄,客戶端發出命令:

Select * From Student Where Sno=’200101′

這條命令將要求服務器將Student表中的所有記錄傳送到客戶端,然後在客戶端執行查詢,結果只用到一條記錄;如果查詢的記錄不存在,網絡傳輸的數據實際上是無 用的。如此大的數據傳輸量是不可想像的。因此,人們提出了在服務器中能夠執行部分代碼的客戶機/服務器結構。

(2)在處理時,客戶機接受用戶要求,並發給服務器;在服務器端處理用戶要求,最後將結果傳回客戶機顯示或打印。這種處理方式網絡通信量較小。客戶機向服務器發出的是處理請求,而不是文件請求,處理請求中的代碼在服務器端執行後向客戶機傳送處理後的結果。

這樣,為了特定任務,客戶機上的程序和服務器上的程序協同工作:客戶機端的代碼用於完成用戶的輸入輸出及數據的檢查,而服務器端的代碼完成對數據庫的操作。

客戶機/服務器結構的另一個主要特點在於軟件、硬件平台的無關性。數據庫服務器上的數據庫管理系統集中負責管理數據,它向客戶端提供一個開放的使用環境,客戶端通過數據庫接口,如ODBC(開放數據庫連接)和SQL語言訪問數據庫,也就是說,不管客戶端採用什麼樣的硬件和軟件,它只要能夠通過網絡和數據庫接口程序連接到服務器,就可對數據庫進行訪問。

在客戶機/服務器結構中,常把客戶機稱為前台,而把服務器端稱為後台。前台應用程序的功能包括用戶界面、接收用戶數據、處理應用邏輯、向後台發出請求、同時接收後台返回的結果,最後再將返回的結果按一定的格式或方式顯示給用戶。而後台服務器則負責共享外部設備、存取共享數據、響應前台客戶端的請求並回送結果等工作。前台的應用程序和數據一般是用戶專用的,而後台的數據和代碼是所有用戶可以共享的。

由於數據庫服務器不僅要管理共享數據,保證數據的完整性,還要執行一部分代碼,完成客戶端的一些處理請求,所以對用於服務器的計算機提出較高的要求。最好要採用一台專用的服務器,有較快的處理速度,有大容量的硬盤和內存,支持磁帶等大容量的存儲設備。

上面講的客戶機/服務器結構將應用分在了客戶機、服務器兩級,稱其為兩層客戶機/ 服務器結構。總之,兩層C/S結構的基本工作方式是客戶程序向數據庫服務器發送SQL請求,服務器返回數據或結果。

這種C/S結構有兩種實現方式,一種是客戶來完成表示部分和應用邏輯部分,而服務器完成數據訪問部分,這種情況是以客戶為中心的,適用於應用相對簡單、數據訪問量不是很大的情況。另一種是以服務器為中心的,把一些重要的應用邏輯部分放到服務器上,這樣可充分利用服務器的計算能力,減少網絡上需要傳送的數據。通常以存儲過程和觸發器的形式出現,但存儲過程都依賴於特定數據庫,不同數據庫之間很難移植,而三層C/S結構可以很好地解決這個問題。

注意:觸發器(trigger)是數據庫系統中,一個在插入、刪除、修改操作之後運行的記錄級事件代碼。不同的事件可以對應不同的動作。通常有3種類型的觸發器:INSERT觸發器、DELETE觸發器和UPDATE觸發器。

2.三層C/S結構

由於兩層結構的客戶機/服務器系統本身固有的缺陷,使得它不能應用於一些大型、結構較為複雜的系統中,故出現了3層結構的客戶機/服務器系統,將兩層結構中服務器部分和客戶端部分的應用單獨劃分出來,即採用「客戶機—應用服務器—數據庫服務器」結構(如圖1-8所示)。典型的數據庫應用可分為三部分:表示部分、應用邏輯(商業邏輯)部分和數據訪問部分,三層結構便是對應於這三部分。

圖1-8 三層C/S結構

其中,應用服務器和數據庫服務器可位於同一主機,也可位於不同主機。客戶機是應用的用戶接口部分,負責用戶與應用程序的交互,運行在客戶機端的軟件也稱為表示層軟件。應用服務器存放業務邏輯層(也稱為功能層)軟件,是應用邏輯處理的核心,實現具體業務。它能響應客戶機請求,完成業務處理或複雜計算。若有數據庫訪問任務時,應用服務器層可根據客戶機的要求向數據庫服務器發送SQL指令。應用邏輯變得複雜或增加新的應用時,可增加新的應用服務器。數據庫服務器便是用來執行功能層送來的SQL指令,完成數據的存儲、訪問和完整性約束等。操作完成後再通過應用服務器向客戶機返回操作結果。

1.3.2 瀏覽器/服務器結構

隨着Internet技術和Web技術的廣泛應用,C/S結構已無法滿足人們的需要。因為在典型C/S體系中,通常為客戶安裝前端應用程序的做法已不再現實,並且限制客戶端工作環境只能基於Windows、Macintosh或UNIX等操作系統也不切實際。於是基於瀏覽器/服務器結構(Browser/Server)的系統應運而生。

採用B/S結構後,在客戶端只需安裝一個通用的瀏覽器即可,不再受具體操作系統和硬件的制約,實現了跨平台的應用。

基於B/S結構的典型應用通常採用三層結構:「瀏覽器—Web服務器—數據庫服務器」,B/S模式的工作原理是:通過瀏覽器以超文本的形式向Web服務器提出訪問數據庫的請求,Web服務器接受客戶請求後,激活對應的CGI程序將超文本HTML語言轉化為SQL語法,將這個請求交給數據庫,數據庫服務器得到請求後,進行數據處理,然後將處理結果集返回給CGI程序。CGI再將結果轉化為HTML,並由Web服務器轉發給請求方的瀏覽器,如圖1-9所示。

圖1-9 B/S工作原理

在B/S模式中,客戶端的標準配置是瀏覽器,如IE;業務功能處理由獨立的應用服務器處理,Web服務器成為應用處理的標準配置;數據處理仍然由數據庫服務器處理。

從本質上講,B/S結構與傳統的C/S結構都是以同一種請求和應答方式來執行應用的,區別主要在於:C/S是一種兩層或三層結構模式,其客戶端集中了大量應用軟件,而B/S是一種基於超鏈接(HyperLink)、HTML、Java的三級或多級C/S結構,客戶端僅需單一的瀏覽器軟件,是一種全新的體系結構,解決了跨平台問題。到目前,這兩種結構在不同方面都有着廣泛的應用。雖然C/S結構在Internet環境下明顯不如B/S結構具有優勢,但它在局域網環境下仍具有優勢。

1.3.3 Internet/Intranet信息系統的多層體系結構

多層結構應用軟件與傳統的兩層結構應用軟件相比,有可伸縮性好、可管理性強、安全性高、軟件重用性好等諸多優點,如何在Internet/Intranet環境下構建應用軟件體系結構就成為一個非常重要的問題,也是現今軟件體系研究的一個新熱點。

目前各種技術層出不窮,如最初的靜態HTML頁面、簡單的CGI網關程序、Java Applet程序,現在的ASP等Web數據庫技術,還有動態的Java在線遊戲及PHP技術等。

實際上,多層的概念是由Sun公司提出來的。Sun公司提出的多層應用體系包括4層:客戶層、頂端Web服務層、應用服務層和數據庫層。其中頂端Web服務層是Sun公司多層體系結構中非常重要的一層,它主要起代理和緩存的作用。頂端Web服務器的作用是緩存本地各客戶機經常使用的Java Applet程序和靜態數據,通常被放置在客戶機所在的局域網內,起到一個Java Applet主機(向Web瀏覽器傳送Java Applet程序的計算機)和訪問其他服務的代理作用。與普通代理服務器的作用相同。構建多層結構應用軟件時,選用Java平台是一個很好的選擇,因為它跨越各應用平台。總之,在Java平台上構建多層應用軟件體系代表着今後Internet/Intranet應用的趨勢。

求:用JSP寫的圖書管理系統的畢業論文

1 前言 4

1.1 目的 4

1.2 範圍 4

1.3 有關本系統中的定義 4

2 資料引用 4

3 設計思路 4

3.1 數據層設計 5

user_book表的觸發器 5

用戶續借圖書的存儲過程 6

到期催還表的視圖 7

3.2 數據鏈接層設計 8

UserBook Entity Bean設計 9

UserConsumer Entity Bean設計 10

UserLogBook Entity Bean設計 11

3.3 數據邏輯層設計 12

TheBook Session Bean設計 13

TheUser Session Bean設計 14

TheLog Session Bean設計 15

3.4 網絡應用層設計 15

CheckValue bean 16

EnCode bean 16

JDBCBean bean 16

Rank bean 16

SetUp bean 16

SplitPage bean 17

UserLogin bean 17

SearchBook bean 17

SearchDeadline bean 17

ValidateIMG servlet 17

GetDelete servlet servlet 17

GetBookSubmit servlet 18

GetUserSubmit servlet 18

GetRenewBook servlet 18

GetBorrowBook servlet 18

GetReturnBook servlet 18

4 程序架構 18

4.1 程序組織結構 18

4.2 功能權限劃分 20

4.3 WEB程序/頁面設計 21

4.4 本系統實現的功能 22

5 任務分工 22

1 前言

1.1 目的

本文檔詳細描述了圖書管理系統的設計,主要是為開發人員提供,使其對本項目的構建和維護有深入的了解。

1.2 範圍

本文檔的描述只針對圖書管理系統的1.0版本。

1.3 有關本系統中的定義

以下是本說明書中用到的專門術語的定義和外文首字母組詞的原詞組:

術語或縮寫 定義與描述

booksManager 本系統的名稱

Reader 系統權限:普通讀者

BookAdmin 系統權限:圖書管理員

UserAdmin 系統權限:用戶管理員

SuperAdmin 系統權限:超級管理員(系統管理員)

Undergraduate 系統用戶角色:本科生

Graduate 系統用戶角色:研究生

Teacher 系統用戶角色:教師

2 資料引用

清華大學《應用軟件平台與核心技術》講義 顧明

清華大學《應用軟件平台與核心技術》助教文檔 張偉業、魏嵐、陳勇、林彩榮

《精通EJB(第二版)》

《J2EE應用與BEA Web Logic Server》,刑國慶等譯,電子工業出版社 2002.4

《設計模式——可復用面向對象軟件的基礎》,Erich Gamma等,機械工業出版社

3 設計思路

本系統嚴格按照4層結構設計,分為數據層(SQL server),數據鏈接層(entity bean),數據邏輯層(session bean),網絡應用層(java bean, java servlet, java serverpage)。

四層之間完全獨立,可以部署在四台服務器上運行,體現了分佈式應用的思想。

數據層的功能嚴格來說是實現基本的數據存儲(邏輯處理功能應該全部交給CMP管理),但因為學習原因,在數據庫中也用到了一些邏輯處理,如使用了存儲過程+系統級臨時表處理讀者續借圖書的功能、使用觸發器防止未還書的用戶和未歸還的圖書被註銷以及使用視圖檢測借書記錄實現到期催還功能。

數據鏈接層實現了和數據庫的連接,作用在於屏蔽數據庫和平台之間的差異,做到底層無關性。本層利用了模糊查找、多表映射、Relationship等技術,通過find,select方法數據的查找功能,拋出聚集對象或遠程接口對象給下一層。

數據邏輯層實現了對數據的邏輯處理,例如將遠程接口對象轉化為值對象、將聚集對象轉化為值對象向量、利用日期類完成查找兩個特定日期之間的記錄等相對複雜的計算。

網絡應用層完成頁面跳轉和頁面顯示等應用功能,還有一些附加功能如:圖片驗證,登錄驗證,等級控制,代碼過濾,分頁控制,輸入值檢測、借書日誌打印、系統運行日誌記錄以及系統設置等。(使用了JDBC實現存儲過程和模糊查找圖書的功能)

3.1 數據層設計

數據庫表

表名 功能描述

user_consumer 記錄了用戶的所有信息

user_book 記錄了圖書的所有信息

user_logBook 記錄了用戶使用本系統的信息,保留了所有的借書記錄,可作為系統日誌和報表資料

user_book表的觸發器

用到的觸發器之一,作用:如果要註銷的圖書被外借沒有歸還,則回滾此刪除操作。

CREATE TRIGGER bookhavelog ON dbo.user_book

FOR DELETE

AS

declare @bookISBN varchar(50)

select @bookISBN=book_ISBN from deleted

if exists(select * from user_logBook where logb_book_ISBN=@bookISBN and

logb_backdate is null)

begin

rollback

return

end

用戶續借圖書的存儲過程

利用存儲過程實現用戶續借圖書的邏輯操作,根據用戶的當前信息判斷其是否有續借的權限,並把處理結果輸出到臨時表中去。

CREATE PROCEDURE user_renew_book @xxxparm int AS

CREATE TABLE ##temp(statement varchar(50))

DECLARE @username varchar(50)

SET @username=(select logb_cons_username from user_logBook where ID=@xxxparm)

IF @username is null

BEGIN

INSERT INTO ##temp VALUES (‘The ID is not EXIST’)

RETURN

END

DECLARE @timelimit int

SET @timelimit=(select logb_timelimit from user_logBook where ID=@xxxparm)

DECLARE @renewday int

SET @renewday=(select cons_maxday from user_consumer where cons_username=@username)

DECLARE @maxrenew int

SET @maxrenew=(select cons_maxrenew from user_consumer where cons_username=@username)

IF (@renewday*@maxrenew)=@timelimit

BEGIN

update user_logBook set logb_timelimit=logb_timelimit+@renewday where ID=@xxxparm

–update user_consumer set cons_maxrenews=cons_maxrenews-1 where cons_username=@username

INSERT INTO ##temp VALUES (‘renew successful’)

RETURN

END

ELSE

BEGIN

INSERT INTO ##temp VALUES (‘You are not allowed to renew the book’)

RETURN

END

GO

到期催還表的視圖

利用DATEDIFF,DATEADD,CAST,GETDATE等函數從借書記錄表中計算出到期的記錄,然後根據此記錄找出相應的讀者信息,在網頁上以email形式催還。

CREATE VIEW dbo.deadline

AS

SELECT TOP 100 PERCENT dbo.user_logBook.logb_cons_username,

dbo.user_logBook.logb_outdate, DATEADD([day], dbo.user_logBook.logb_timelimit,

CAST(dbo.user_logBook.logb_outdate AS datetime)) AS deadline_date, GETDATE()

AS now_date, dbo.user_consumer.cons_name, dbo.user_consumer.cons_kind,

dbo.user_consumer.cons_rank, dbo.user_consumer.cons_email,

dbo.user_consumer.cons_maxrenew, dbo.user_consumer.cons_maxbook,

dbo.user_logBook.logb_book_ISBN, dbo.user_book.book_name,

dbo.user_book.book_kind, dbo.user_book.book_storage, dbo.user_book.book_rank,

dbo.user_logBook.logb_timelimit

FROM dbo.user_logBook INNER JOIN

dbo.user_consumer ON

dbo.user_logBook.logb_cons_username = dbo.user_consumer.cons_username INNER

JOIN

dbo.user_book ON

dbo.user_logBook.logb_book_ISBN = dbo.user_book.book_ISBN

WHERE (DATEDIFF([day], DATEADD([day], dbo.user_logBook.logb_timelimit,

CAST(dbo.user_logBook.logb_outdate AS datetime)), GETDATE()) = 0) AND

(dbo.user_logBook.logb_backdate IS NULL)

ORDER BY dbo.user_logBook.logb_cons_username DESC

3.2 數據鏈接層設計

entity bean

UserBook Entity Bean設計

userbook remotehome接口

方法 描述

findAllBook 得到所有的圖書信息

findByISBN 通過圖書的書號得到圖書的信息

findSearcher 利用關鍵字模糊查找圖書信息

selectUserByBookISBN

(userbook remote) 利用select方法實現多表相關的查找

findSearcher實現模糊查找的代碼:

select object(p) from UserBook as p where p.bookName like concat(concat(‘%’,?1),’%’) or p.bookAuthor like ?1 or p.bookKind like ?1 or p.bookPublish like ?1 or p.bookAbstract like ?1 or p.bookISBN like concat(concat(‘%’,?1),’%’) or p.bookRemark like ?1

UserConsumer Entity Bean設計

UserConsumer remotehome接口

方法 描述

findAllUser 查找所有的用戶信息

findByUsername 通過用戶名查找用戶信息

findSearcher 利用關鍵字模糊查找用戶信息

selectBookByUsername

(userconsumer remote) 利用select方法實現多表相關的查找

findSearcher實現模糊查找的代碼:

select object(p) from UserConsumer as p where p.consUsername like concat(concat(‘%’,?1),’%’) or p.consSerial like ?1 or p.consName like concat(concat(‘%’,?1),’%’) or p.consRemark like ?1 or p.consEmail like ?1

UserLogBook Entity Bean設計

UserLogBook remotehome接口

方法 描述

findallbybookISBN 查找此書所有的借閱記錄

findbybookISBN 查找此書當前的借出記錄

findallbyusername 查找此用戶所有的借閱記錄

findbyusername 查找此用戶當前的借出書記錄

findbacklog 得到所有已經歸還圖書的借書記錄

findoutlog 得到所有尚未歸還圖書的借書記錄

findbyID 通過記錄流水號查找借書記錄

findlogbyday 查找某一日期的借書記錄

(模糊匹配,例如提交「2004-5」可得到最終記錄時間——借閱或歸還在2004年5月份的所有借書記錄)

findallog 得到所有的借書記錄

FindLogByDay通過模糊匹配得到一組最終記錄時間的代碼:

select object(p) from UserLogBook as p where ( p.logbBackdate is null and p.logbOutdate like concat(concat(‘%’,?1),’%’) ) or ( p.logbBackdate is not null and p.logbBackdate like concat(concat(‘%’,?1),’%’) )

3.3 數據邏輯層設計

session bean

TheBook Session Bean設計

TheBook bean

實現圖書的增刪改查以及模糊搜索、通過書查讀者等功能

方法內部實現所有的邏輯處理和轉化,返回到遠程接口值對象或值對象向量

TheUser Session Bean設計

TheUser bean

實現用戶(讀者)的增刪改查以及模糊搜索、通過讀者查書等功能

方法內部實現所有的邏輯處理和轉化,返回到遠程接口值對象或值對象向量

TheLog Session Bean設計

TheLog bean

主要實現對日誌(借書記錄)的各項操作,提供多種獲得日誌的方法(按讀者、按圖書、按日期、按借還狀態等),方法內部實現所有的邏輯處理和轉化,返回到遠程接口值對象或值對象向量,另外還有如下方法:

方法 功能

public boolean userBorrowBook(String username, String bookISBN) 以一個事務封裝讀者借書的所有邏輯操作,借書成功返回真值,無法借書返回假值,調用enCode bean對中文進行轉碼

public boolean userReturnBook(String logbid) 以一個事務封裝讀者還書的所有邏輯操作,即實現使一筆借書記錄銷賬的功能,調用enCode bean對中文進行轉碼

public Vector showLogBetweenDays(String dayBegin, String dayEnd) 返回兩個日期之間的所有日誌,主要利用Calendar類實現

3.4 網絡應用層設計

本層本着面向對象思想的封裝性、數據模糊性、可重用性等原則設計。

本着系統運行錯誤在系統中打印(System.out.println)、用戶輸入和誤操作錯誤導向友好的錯誤處理頁並給出友好的提示的錯誤處理原則。

每次對會話bean的調用寫入系統運行日誌文件,默認路徑是C:\\booksManagerLog.dat。

CheckValue bean

封裝多個靜態方法。

可以用於檢測某表中某個字段是否已經存在某個值(可用於檢測重名用戶、重號圖書)、檢測用戶名合法性、檢測密碼合法性、檢測年齡合法性、檢測電子郵件合法性、檢測數字合法性、檢測日期合法性等。

EnCode bean

封裝編碼轉碼工作:

html顯示轉碼,例如:將轉為,將轉為rt;,將數據庫中的換行轉為html中的換行等等,這樣可以屏蔽用戶提交文本中的可執行代碼。

可重載的中文轉碼。

密碼的加密和解密編碼。

JDBCBean bean

封裝所有的數據庫操作。包括一個帶結果集返回的SQL執行方法和一個不帶結果集返回的SQL執行方法。

Rank bean

封裝4種權限(普通讀者、用戶管理員、圖書管理員、系統管理員)的頁面訪問,相當於頁面加鎖功能。

SetUp bean

public static String title=”SuperLibrary”;//系統名稱

public static String dbS=”booksManagerDS”;//數據庫的JNDI名

public static String errorPage=”dealError.jsp?theError=”;//友好的錯誤處理頁,用get方法傳遞出錯原因

public static String homePage=”default.jsp”;//默認首頁

//權限————————————————————————-

public static String Reader=”Reader”;//讀者

public static String UserAdmin=”UserAdmin”;//用戶管理員

public static String BookAdmin=”BookAdmin”;//圖書管理員

public static String SuperAdmin=”SuperAdmin”;//系統管理員

//等級————————————————————————-

public static String Undergraduate=”Undergraduate”;//本科生

public static int UndergraduateRenew=1;//本科生可續借的次數

public static int UndergraduateMaxday=30;//本科生一次可借的天數

public static String Graduate=”Graduate”;//研究生

public static int GraduateRenew=2;//研究生可續借的次數

public static int GraduateMaxday=45;//研究生一次可借的天數

public static String Teacher=”Teacher”;//教師

public static int TeacherRenew=3;//教師可續借的次數

public static int TeacherMaxday=60;//教師一次可借的天數

//—————————————————————————-

public static int rsPerPage=5;//每頁顯示記錄的數量

public static int minBooks=4;//系統默認的最小借書數

SplitPage bean

將數據記錄分頁的邏輯實現和頁面顯示(最簡,可在外部由樣式表美化)封裝在一個bean中,重用時實際只需要傳遞一個記錄集數量的為參數即可,可重用。一般作為session級java bean在頁面中被調用,在會話中保存用戶對此頁面的訪問狀態,在會話結束之前始終記憶用戶訪問此頁對應的頁碼。

UserLogin bean

將用戶登錄的邏輯實現和頁面顯示(最簡,可在外部由樣式表美化)封裝在一個bean中,包括對用戶各種登錄情況的處理,可重用。

SearchBook bean

利用JDBC實現模糊查找和按指定類別精確查找圖書的功能。

SearchDeadline bean

利用JDBC調用視圖實現到期圖書的催還功能。

ValidateIMG servlet

動態生成含有隨機驗證碼的圖片,在生成圖片的同時將驗證碼寫入session中,與用戶的登錄輸入比較。可有效的防止機械人登錄。

GetDelete servlet servlet

處理圖書、用戶、日誌的註銷操作,根據返回值進行相應頁面的跳轉。

GetBookSubmit servlet

處理圖書的入庫和圖書信息的修改,根據返回值進行相應頁面的跳轉。

GetUserSubmit servlet

處理用戶的註冊和用戶信息的修改,根據返回值進行相應頁面的跳轉。

GetRenewBook servlet

處理用戶續借圖書的請求(JDBC調用存儲過程實現),從系統臨時表中讀取狀態值,根據狀態值進行相應頁面的跳轉。

GetBorrowBook servlet

處理用戶的借書請求,將用戶借書限額已滿、庫存為零等錯誤導向友好的錯誤頁,如果借書成功則跳轉到圖書信息頁面,並給與相應的提示。

GetReturnBook servlet

處理用戶的還書請求,如果還書成功則跳轉到用戶的借書記錄頁面,並給與相應的提示。

4 程序架構

4.1 程序組織結構

說明:圖書搜索和用戶登錄看作系統外部功能,通過JDBC直接調用數據庫,其中用戶登錄模塊封裝在一個java bean中,可重用。另外,用戶續借圖書是通過存儲過程實現,從而繞過了使用CMP技術管理事務的實體bean。

本系統其餘程序的組織結構嚴格按照下圖實現:

程序組織結構圖

4.2 功能權限劃分

站點頁面地圖

權限名稱 系統定義字符 權限 可訪問頁面

普通讀者 Reader 查看自己的信息(還書、續借);

修改自己的信息;

查看圖書(借書); userModify

userView

booklist

圖書管理員 BookAdmin 擁有普通讀者的權限;

圖書的增刪改查;

到期催還; userModify

userView

booklist

bookAdder

bookModify

deadline

用戶管理員 UserAdmin 擁有普通讀者的權限;

用戶的增刪改查; userModify

userView

booklist

userRegister

userModify

userList

系統管理員 SuperAdmin 擁有圖書管理員和用戶管理員的權限;

查看系統日誌;

刪除系統日誌;

系統設置; 包括setupSYS.jsp(系統設置,利用application級java bean控制整個應用程序)在內的所有頁面

4.3 WEB程序/頁面設計

利用input style=”ime-mode:disabled”代碼關閉客戶端的輸入法,實現用戶名、密碼不能出現中文的問題。

利用onfocus=this.select() onmouseover=this.focus()代碼使文本框自動吸附獲得焦點,方便用戶輸入。

利用WMODE=”transparent”參數使flash的背景透明,更好的融入網頁。

在每頁中,利用代碼:

IFRAME frameBorder=0 height=88 marginHeight=0 marginWidth=0 scrolling=no src=”../iframe/top.htm” width=755 BORDERCOLOR=”#000000″/IFRAME

IFRAME frameBorder=0 height=68 marginHeight=0 marginWidth=0 scrolling=no src=”../iframe/below.htm” width=755 BORDERCOLOR=”#000000″/IFRAME

嵌入上下導航條,使網站導航明確,方便用戶瀏覽。

在網頁頭部加入代碼:

meta HTTP-EQUIV=”pragma” CONTENT=”no-cache”

meta HTTP-EQUIV=”expires” CONTENT=”0″

使客戶端不緩存網頁,保證了客戶每次瀏覽該頁都從服務器獲得最新的版本,以求正確顯示。

提供智能搜索(獲得儘可能多的匹配)和精確搜索(獲得儘可能精確的匹配)圖書,服務器端編程都採用模糊查找的方式。

在客戶端用javascript對錶單提交進行第一次驗碼,通過後提交到服務器端,再進行第二次驗碼,驗碼包括:用戶名是否重複、年齡是不是合適的數字,兩次密碼輸入的是否一致、電子郵件是否合法、密碼是否太短、用戶名是否太短、用戶名密碼是否為空等等。

利用隨機生成JPG圖片驗證碼的方法,防止機械人登錄。

在頁面中使用session級java bean實現分頁,在會話中保存用戶對此頁面的訪問狀態,在會話結束之前始終記憶用戶訪問此頁對應的頁碼。

在頁面中使用application級java bean實現安全的系統設置,當服務器啟動後,即可對系統運行參數進行應用程序級的設置,只要服務器不關閉,此設置始終有效且作用於所有用戶,如果設置不慎造成系統錯誤或想恢復系統默認設置,則只需重新啟動服務器即可。

在對會話bean的調用包ejbClient中,創建系統運行日誌,通過包中的writeF類寫入web服務器的C:\\booksManagerLog.dat中,可做查詢用。

4.4 本系統實現的功能

確定圖書的基本信息,有書名、作者、出版日期、當前借閱狀態等屬性

系統的使用者包括讀者、圖書管理員、用戶管理員、系統管理員四種

讀者可以查詢圖書;圖書管理員可以完成圖書管理、借閱管理;讀者管理員可以完成讀者管理的功能;系統管理員可以使用系統的所有功能

圖書管理:新書登記,圖書查詢,圖書註銷;

借閱管理:借書,還書,查詢到期讀者

讀者管理:增加讀者、刪除讀者、查詢讀者、讀者類別管理(設置研究生,本科生,教師的可借冊數,可借天數,可續借次數等)

系統管理:系統管理員使用,包括用戶權限管理(增加用戶,刪除用戶,密碼修改等),系統借書日誌,系統運行日誌,系統設置等功能

頁面輸入有驗碼,密碼存取有加密

圖書到期催還

體現分層設計思想,使用MVC架構

實現了多個Beans,Bean之間實現了對應的關係

使用了EJB QL,事務控制等

使用了jsp-sessionBean-entityBean-數據庫模式

數據庫使用了觸發器和存儲過程等一些高級技術

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/288904.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-24 03:01
下一篇 2024-12-24 03:01

相關推薦

  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • openeuler安裝數據庫方案

    本文將介紹在openeuler操作系統中安裝數據庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟件源 sudo…

    編程 2025-04-29
  • 數據庫第三範式會有刪除插入異常

    如果沒有正確設計數據庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係數據庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

    編程 2025-04-29
  • leveldb和unqlite:兩個高性能的數據庫存儲引擎

    本文將介紹兩款高性能的數據庫存儲引擎:leveldb和unqlite,並從多個方面對它們進行詳細的闡述。 一、leveldb:輕量級的鍵值存儲引擎 1、leveldb概述: lev…

    編程 2025-04-28
  • Python怎麼導入數據庫

    Python是一種高級編程語言。它具有簡單、易讀的語法和廣泛的庫,讓它成為一個靈活和強大的工具。Python的數據庫連接類型可以多種多樣,其中包括MySQL、Oracle、Post…

    編程 2025-04-28
  • Think-ORM數據模型及數據庫核心操作

    本文主要介紹Think-ORM數據模型建立和數據庫核心操作。 一、模型定義 Think-ORM是一個開源的ORM框架,用於簡化在PHP應用中(特別是ThinkPHP)與關係數據庫之…

    編程 2025-04-27
  • 如何使用Python將CSV文件導入到數據庫

    CSV(Comma Separated Values)是一種可讀性高、易於編輯與導入導出的文件格式,常用於存儲表格數據。在數據處理過程中,我們有時需要將CSV文件導入到數據庫中進行…

    編程 2025-04-27
  • Python批量導入數據庫

    本文將介紹Python中如何批量導入數據庫。首先,對於數據分析和挖掘領域,數據庫中批量導入數據是一個必不可少的過程。這種高效的導入方式可以極大地提高數據挖掘、機器學習等任務的效率。…

    編程 2025-04-27
  • Activiti 6自動部署後不生成數據庫act_hi_*的解決方法

    本文將從多個方面詳細闡述Activiti 6自動部署後不生成數據庫act_hi_*的問題,並提供對應的代碼示例。 一、問題分析 在使用Activiti 6部署流程後,我們發現act…

    編程 2025-04-27
  • Python論文參考文獻舉例用法介紹

    Python作為一種強大的編程語言,被廣泛應用於數據分析、機器學習、人工智能等領域。在科學研究和學術論文中,參考文獻舉例是非常重要的一部分,本文將圍繞着Python論文參考文獻舉例…

    編程 2025-04-27

發表回復

登錄後才能評論