JSP實踐要點

來源:互聯網
上載者:User
js 在 Internet眾多網站中,基於Web資料庫的動態網站應用程式相當廣泛。基於Web網路資料庫的動態網站由一個Web瀏覽器作為用戶端介面,一個資料庫伺服器用做資訊儲存和一個串連兩者的 Web應用伺服器組成。原有開發動態網站的CGI技術,隨著Web應用程式的用戶端技術不斷地發展,逐漸被Java Applet、ActiveX控制項、DHTML和JavaScript所取代。這些技術極大地改善了使用者介面,但當它們嘗試做一些深入的工作時,開始遇到用戶端瀏覽器不相容、伺服器負擔過重、訪問速度下降以及安全性等問題。JSP技術就是解決這些問題的一把金鑰匙,本文主要討論在使用JSP技術構建動態網站的過程中的一些技術問題。

JSP技術

JSP是基於Java Servlet以及整個Java體系的Web開發技術,利用這一技術可以建立先進、安全、快速和跨平台的動態網站。在傳統的網頁HTML檔案中加入Java程式片段和JSP標記,就構成了JSP網頁。Web伺服器接收到訪問JSP網頁的請求時,首先執行其中的程式片段,然後將執行結果以HTML格式返回給客戶。程式片段可以操作資料庫、重新定向網頁以及發送 E-mail 等等,這就是建立動態網站所需要的功能。所有程式操作都在伺服器端執行,網路上傳送給用戶端的僅是得到的結果,對客戶瀏覽器的要求很低。如圖1所示,在使用者串連JSP網站時,使用者請求網頁,JSP頁面獨自響應請求,將使用者對網頁的請求轉化為對資料的請求,通過JavaBean處理請求並將返回的資料封裝成HTML頁面返回給使用者。

JSP有許多優勢:

1. 程式寫一次,到處可以運行。JSP在設計時,充分考慮到應用平台的無關性。依賴於Java的可移植性,JSP得到目前許多流行操作平台的支援,可在Apache、NetScape、IIS等伺服器上執行。

2. 執行速度快。JSP頁面只需編譯一次轉化為Java位元組代碼,其後一直駐留於伺服器記憶體中,加快了對JSP頁面的響應速度。若不考慮JSP頁面第一次編譯所花的時間,則JSP的響應速度要比ASP快得多。

3. Java的優勢。JSP技術是用Java語言作為指令碼語言的。跨平台、成熟、健壯、易擴充的Java技術使得開發人員的工作在其他方面也變得容易和簡單。在Windows系統被懷疑可能會崩潰時,Java能有效地防止系統崩潰。Java語言通過提供防止記憶體流失的方法,在記憶體管理方面大顯身手。加之,JSP為應用程式提供了更為健壯的意外事件處理機制,充分發揮了Java的優勢。

JSP技術痛點

1. 串連資料庫

資料庫連接對動態網站來說是最為重要的部分,在與後端資料庫串連時可以採用ODBC或JDBC技術。雖然ODBC作為傳統的串連資料庫的手段是一種選擇,但是ODBC有以下致命缺陷,從而使它無法勝任JSP的請求:

(1) ODBC是C語言實現的API,從Java程式調用本地的C程式會帶來一系列類似安全性、完整性、健壯性方面的問題。

(2) 其次,完全精確地實現從C代碼ODBC到Java API 翻譯的ODBC不會令人滿意,因為在Java中沒有指標,而ODBC中大量地使用了指標,包括極易出錯的null 指標“void *”。

(3) 考慮到平台移植性,在開發JSP程式中使用ODBC會帶來負面影響,使得代碼不適合於移植。

為了使程式在具有安全性、完整性、健壯性的同時, 可以方便地移植,採用JDBC串連資料庫更合適一些。JDBC是一種可用於執行SQL語句的Java API,它由一些Java語言寫的類、介面組成,使開發人員可以用純Java語言編寫完整的資料庫應用程式。通過使用JDBC,可以很方便地將SQL語句傳送到幾乎任何一種資料庫。也就是說,可以不必寫一個程式訪問Sybase,寫另一個程式訪問Oracle,再寫一個程式訪問Microsoft的SQL Server。用JDBC寫的程式能夠自動地將SQL語句傳送給相應的資料庫管理系統。

在本機資料庫程式使用Microsoft的Access等資料庫時,可以使用Sun公司開發的JDBC-ODBC橋,借用此技術JSP程式就可以訪問帶有ODBC驅動程式的資料庫。這樣既保留JDBC的優點,又可以使用Microsoft提供的ODBC資料來源與Access串連。不管對方是何種資料庫,只要有ODBC介面就可以直接使用JDBC-ODBC橋與資料庫連接,而無需因為後端資料庫的改變而改動相應的程式碼,實現了應用程式層與資料庫層的完美分離。如果需要變後端資料庫為MySQL,只需在ODBC資料來源中安裝MySQL的驅動程式之後,就可以直接使用MySQL資料庫了。

2. 內建的組件

在實現網站的時候,由於客觀需要,為了方便區分本地區域網路使用者與遠端連上來的使用者,並提供相應的許可權,可以採用內建的組件Request來捕獲每一個連到伺服器上的使用者的IP地址,通過比較之後給出相應的許可權。這樣做到本區域網路內使用者可以使用網站內所有公開的和不對外公開的資源。還可以將現有的方法加以改進,將各種IP地址輸入到資料庫中並且賦予不同的IP地址不同的許可權,以完整地控制使用者使用網站資源。

工作階段狀態維持是Web應用開發人員必須面對的問題。為了瞭解使用者是否還線上,使用內建的Session組件,通過給每個登入使用者一個Session變數,可以在使用者非正常離開網站之後,關閉該使用者使用的資源,達到節省記憶體,提高伺服器效能的目的。

在JSP中還提供了Cookie類,其構造器有兩個參數,分別代表Cookie的名稱和值。Cookie類中提供了各種方法設定Cookie的屬性,如通過setMaxAge方法可以設定Cookie的存留時間。若存留時間為負值,代表瀏覽器關閉Cookie,即消失; 存留時間為0,代表刪除Cookie; 存留時間為正數,代表Cookie存在多少秒。可以用Cookie臨時儲存使用者的帳號和口令,JSP可隨時讀取,驗證使用者的合法性。可以將使用者的瀏覽狀態儲存在Cookie中,下次使用者再訪問網頁時,由JSP向瀏覽器顯示個人化頁面。

3. 轉換Unicode編碼

在許多JSP頁面的調試過程中都碰到過由於漢字編碼與Unicode編碼轉換引起的問題,如在瀏覽器中看到的JSP頁面中的漢字都是亂碼、JSP頁面無法正常顯示漢字、JSP不能接收表單提交的漢字、JSP資料庫讀寫無法獲得正確的內容等等,這是因為現在大部分具有國際化特徵的軟體核心字元處理都是以Unicode為基礎的,在軟體運行時根據當時“Locale/Lang/Codepage”設定確定相應的本地字元編碼設定,並依此處理本地字元,所以應該在處理過程中實現Unicode和本地字元集的相互轉換,甚至以Unicode為中介的兩個不同本地字元集的相互轉換。這種方式在網路環境下被進一步延伸,任何網路兩端的字元資訊也需要根據字元集的設定轉換成可接受的內容。

由於IE預設字元集為GB2312,然而Windows預設為GBK,Java則預設為Unicode,所以如果不通過一定的轉換,直接在GB2312字元集上顯示從GBK或Unicode得到的頁面將是一片亂碼。Java 語言採用Unicode處理字元,但從另一個角度來說,在Java程式中也可以採用非Unicode,重要的是保證程式入口和出口的漢字資訊不失真。如完全採用ISO-8859-1來處理漢字也能達到正確的結果,經過轉換之後並將網頁字元集強制設為GB2312字元集顯示,就能夠正常顯示漢字了。



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.