教學(xué)課件·JSP程序設(shè)計_第1頁
教學(xué)課件·JSP程序設(shè)計_第2頁
教學(xué)課件·JSP程序設(shè)計_第3頁
教學(xué)課件·JSP程序設(shè)計_第4頁
教學(xué)課件·JSP程序設(shè)計_第5頁
已閱讀5頁,還剩250頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1.1 動態(tài)網(wǎng)頁技術(shù)第1章JSP概述動態(tài)網(wǎng)頁技術(shù)的原理是:將使用不同技術(shù)編寫的動態(tài)頁面保存在Web服務(wù)器中,當(dāng)客戶端用戶向Web服務(wù)器發(fā)出訪問動態(tài)頁面的請求時,Web服務(wù)器將根據(jù)用戶所訪問頁面的類型確定該頁面所使用的網(wǎng)絡(luò)編程技術(shù),然后將該頁面提交給相應(yīng)的解釋引擎,解釋引擎執(zhí)行位于頁面的腳本代碼以實現(xiàn)不同的功能,如訪問數(shù)據(jù)庫、發(fā)送電子郵件和執(zhí)行算術(shù)或邏輯運算等,最后Web服務(wù)器把解釋引擎的執(zhí)行結(jié)果連同頁面上的HTML內(nèi)容以及各種客戶端腳本一同傳送到客戶端。雖然客戶端用戶所接收到的頁面與傳統(tǒng)頁面并沒有任何區(qū)別,但實際上頁面內(nèi)容已經(jīng)經(jīng)過了服務(wù)器端處理。1.2 JSP簡介第1章JSP概述1.2.1 什

2、么是JSPJSP是Java Server Pages的縮寫,是由Sun公司倡導(dǎo),與許多其他公司一起建立的一種應(yīng)用范圍廣泛的動態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn),是Java語言編寫的在服務(wù)器端運行的頁面。JSP就是在HTML語言中嵌入Java腳本,可以被看做是一種腳本語言,然而作為一種腳本語言,在JSP中幾乎可以使用全部的Java類。JSP技術(shù)的基礎(chǔ)是Servlet,包含了Java Servlet的所有優(yōu)點,并且當(dāng)JSP與JavaBeans結(jié)合時,提供了一種使內(nèi)容和顯示邏輯分開的簡單方式。許多大型Web應(yīng)用程序的開發(fā)需要Servlet、JavaBeans與JSP配合才能完成。1.2 JSP簡介第1章JSP概述1.2

3、.2 JSP的特點(1)將內(nèi)容的生成和顯示分離(2)使用可重用的組件(3)采用標(biāo)簽簡化頁面開發(fā)(4)具有Java技術(shù)的所有優(yōu)點及完善的存儲管理和安全性(5)一次編寫各處運行1.2 JSP簡介第1章JSP概述1.2.3 JSP的運行原理(1)當(dāng)用戶訪問一個JSP頁面時,通過客戶端瀏覽器向服務(wù)器發(fā)送請求,這些請求里面有很多信息,包括請求的文件和用戶輸入的內(nèi)容,另外還有本地計算機的一些信息。(2)JSP文件被JSP引擎編譯成Java的class文件,即Servlet。(3)將產(chǎn)生的Servlet加載到內(nèi)存執(zhí)行。(4)Servlet的運行結(jié)果以HTML(或XML)形式通過Web服務(wù)器返回給客戶端的瀏覽

4、器。1.3 JSP運行環(huán)境的構(gòu)建第1章JSP概述1.3.1 JSP運行環(huán)境的組成(1)Web服務(wù)器WebLogic是BEA公司的產(chǎn)品,是目前應(yīng)用最廣泛的Web服務(wù)器,支持J2EE規(guī)范,并不斷地完善以適應(yīng)新的開發(fā)要求。另一個常用的Web服務(wù)器是IBM公司的WebSphere,支持J2EE規(guī)范。在小型的應(yīng)用系統(tǒng)或者有特殊需要的系統(tǒng)中,Tomcat是一個不錯的選擇,該服務(wù)器支持全部JSP以及Servlet規(guī)范,是Sun公司官方推薦的Servlet和JSP容器,但是目前還不支持EJB。由于Tomcat很簡單,常在系統(tǒng)開發(fā)和測試時使用。1.3 JSP運行環(huán)境的構(gòu)建第1章JSP概述1.3.1 JSP運行環(huán)

5、境的組成(2)數(shù)據(jù)庫目前基于JSP的Web項目的開發(fā)離不開數(shù)據(jù)庫的支持。在Java相關(guān)的開發(fā)領(lǐng)域中,常用的是三種數(shù)據(jù)庫是Oracle、DB2和MySQL。有時候也使用微軟公司的SQL Server數(shù)據(jù)庫。Oracle數(shù)據(jù)庫是Oracle公司的產(chǎn)品,是一個真正面向Internet計算環(huán)境的數(shù)據(jù)庫系統(tǒng),可移植性好、使用方便、功能強大,適用于各類大型、中型和小型環(huán)境,是一種高效率、可靠性好和高吞吐量的數(shù)據(jù)庫解決方案。IBM公司的DB2也是一種常用的數(shù)據(jù)庫,和IBM的WebSphere配合構(gòu)成完整的企業(yè)級解決方案。還有一個常用的免費小型數(shù)據(jù)庫MySQL,常與PHP結(jié)合使用。1.3 JSP運行環(huán)境的構(gòu)建

6、第1章JSP概述1.3.1 JSP運行環(huán)境的組成(3) 開發(fā)工具Web服務(wù)器和數(shù)據(jù)庫服務(wù)器構(gòu)成了發(fā)布平臺,需要選擇合適的開發(fā)工具以提高編碼的效率。目前有兩種常用的企業(yè)級集成開發(fā)環(huán)境,即JBuilder和WebSphereStudio。JBuilder是Borland公司的產(chǎn)品,支持幾乎全部的J2EE組件。IBM公司的WebSphereStudio是一套集成開發(fā)環(huán)境,同時集成Web服務(wù)器功能。1.3 JSP運行環(huán)境的構(gòu)建第1章JSP概述1.3.2 安裝JDK安裝JDK是進行JSP開發(fā)的一個重要步驟,也是安裝JSP引擎(如Tomcat、JBoss和Weblogic等)的前提。一般的JSP引擎是由J

7、ava語言編寫的。1.3 JSP運行環(huán)境的構(gòu)建第1章JSP概述1.3 JSP運行環(huán)境的構(gòu)建第1章JSP概述在Windows平臺上安裝JDK比較簡便,步驟如下:1.3 JSP運行環(huán)境的構(gòu)建第1章JSP概述1.3 JSP運行環(huán)境的構(gòu)建第1章JSP概述1.3 JSP運行環(huán)境的構(gòu)建第1章JSP概述1.3 JSP運行環(huán)境的構(gòu)建第1章JSP概述1.3 JSP運行環(huán)境的構(gòu)建第1章JSP概述1.3 JSP運行環(huán)境的構(gòu)建第1章JSP概述1.3.3 安裝Tomcat在眾多的Web應(yīng)用服務(wù)器中,Apache開源社區(qū)的Tomcat是最常用的Web服務(wù)器之一。Tomcat是Apache軟件基金會(Apache Soft

8、ware Foundation)的Jakarta項目中的一個核心項目,由Apache、Sun和其他一些公司及個人共同開發(fā)而成。由于有了Sun的參與和支持,最新的Servlet和JSP規(guī)范總是能在Tomcat中得到體現(xiàn)。Tomcat技術(shù)先進,性能穩(wěn)定,而且免費,因而深受Java愛好者的喜愛,并得到了部分軟件開發(fā)商的認可,成為目前比較流行的Web應(yīng)用服務(wù)器。用戶可以在“”找到各個版本的Tomcat服務(wù)器。本書以Tomcat 6.0.35為例,支持最新的Servlet 2.5和JSP 2.1規(guī)范。1.3 JSP運行環(huán)境的構(gòu)建第1章JSP概述在Windows平臺上安裝Tomcat有兩種方式,即安裝版和

9、解壓版。首先要到“”網(wǎng)站下載這兩個版本。 進入Tomcat主頁面后,如圖1-12所示,在頁面左面的下載鏈接中選擇要下載的Tomcat版本,此處選擇“Tomcat 6.0”,單擊進入Tomcat 6.0的下載頁面,如圖1-13所示。1.3 JSP運行環(huán)境的構(gòu)建第1章JSP概述1.Tomcat6.0安裝版的安裝步驟()運行安裝文件“apache-tomcat-6.0.35.exe”,單擊【Next】按鈕,出現(xiàn)如圖1-14所示界面。1.3 JSP運行環(huán)境的構(gòu)建第1章JSP概述1.Tomcat6.0安裝版的安裝步驟1.3 JSP運行環(huán)境的構(gòu)建第1章JSP概述1.Tomcat6.0安裝版的安裝步驟1.3

10、 JSP運行環(huán)境的構(gòu)建第1章JSP概述1.Tomcat6.0安裝版的安裝步驟1.3 JSP運行環(huán)境的構(gòu)建第1章JSP概述1.Tomcat6.0安裝版的安裝步驟1.3 JSP運行環(huán)境的構(gòu)建第1章JSP概述1.Tomcat6.0安裝版的安裝步驟1.3 JSP運行環(huán)境的構(gòu)建第1章JSP概述1.Tomcat6.0安裝版的安裝步驟1.3 JSP運行環(huán)境的構(gòu)建第1章JSP概述1.3.4 Tomcat 6 的目錄結(jié)構(gòu)Tomcat 6 安裝后的目錄層次結(jié)構(gòu)如圖1-23所示:1.3 JSP運行環(huán)境的構(gòu)建第1章JSP概述1.3.4 Tomcat 6 的目錄結(jié)構(gòu)1.3 JSP運行環(huán)境的構(gòu)建第1章JSP概述1.3.5

11、 建立第一個JSP應(yīng)用 利用搭建好了Apache的Tomcat可建立一個JSP應(yīng)用。Tomcat是一個免費的Web服務(wù)器,能處理HTML、JSP和Servlet的請求。步驟如下: ()啟動Tomcat服務(wù)器 安裝版的用戶可以單擊windows的“開始”菜單,選擇【所有程序】【Apache Tomcat 6.0 Tomcat6】【Configure Tomcat】,彈出如圖1-24所示對話框,單擊【Start】按鈕,啟動Tomcat;或單擊【Monitor Tomcat】,任務(wù)欄會出現(xiàn)服務(wù)器圖標(biāo)(紅色)后,選中圖標(biāo)后右擊,選擇“Start service”,啟動Tomcat,圖標(biāo)變?yōu)榫G色。 解壓

12、版的用戶在Tomcat已解壓的安裝目錄下的bin子目錄中,運行處理文件“startup.bat”,啟動Tomcat。 ()在文本編輯器中編寫JSP代碼,保存時注意擴展名為“.jsp”,文件名為“HelloJsp.jsp”。1.3 JSP運行環(huán)境的構(gòu)建第1章JSP概述1.3.5 建立第一個JSP應(yīng)用 2.1 HTTP協(xié)議第2章JSP基礎(chǔ)知識2.1.1 HTTP協(xié)議概述HTTP協(xié)議(Hyper Text Transfer Protocol)是超文本傳輸協(xié)議的縮寫,是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議,所有的WWW(World Wide Web,萬維網(wǎng))文件都必須遵守這個標(biāo)準(zhǔn)。設(shè)計HTTP最初目的是

13、為了提供一種發(fā)布和接收HTML頁面的方法。簡單來說,HTTP協(xié)議就是一個基于應(yīng)用層的通信規(guī)范。雙方要進行通信,都要遵守一個規(guī)范,即HTTP協(xié)議。Internet的基本協(xié)議是TCP/IP協(xié)議,然而在TCP/IP模型最上層的是應(yīng)用層(Application layer),包含所有高層的協(xié)議。高層協(xié)議有文件傳輸協(xié)議FTP、電子郵件傳輸協(xié)議SMTP、域名系統(tǒng)服務(wù)DNS、網(wǎng)絡(luò)新聞傳輸協(xié)議NNTP和HTTP協(xié)議等。2.1 HTTP協(xié)議第2章JSP基礎(chǔ)知識2.1.2 HTTP工作過程HTTP協(xié)議定義Web客戶端如何從Web服務(wù)器請求Web頁面,以及服務(wù)器如何把Web頁面?zhèn)魉徒o客戶端。HTTP協(xié)議采用了請求/

14、響應(yīng)模型??蛻舳讼蚍?wù)器發(fā)送一個請求報文,包含請求的方法、URL、協(xié)議版本、請求頭部和請求數(shù)據(jù)。服務(wù)器以一個狀態(tài)行作為響應(yīng),響應(yīng)的內(nèi)容包括協(xié)議的版本、成功或者錯誤代碼、服務(wù)器信息、響應(yīng)頭部和響應(yīng)數(shù)據(jù)。圖2-1所示為這種請求/響應(yīng)模型。2.1 HTTP協(xié)議第2章JSP基礎(chǔ)知識HTTP請求/響應(yīng)的步驟如下:()客戶端連接到Web服務(wù)器()發(fā)送HTTP請求()服務(wù)器接受請求并返回HTTP響應(yīng)()釋放TCP連接()客戶端瀏覽器解析HTML內(nèi)容2.1 HTTP協(xié)議第2章JSP基礎(chǔ)知識2.1.3 利用Telnet觀察HTTP協(xié)議的通訊過程Telnet是Internet遠程登錄服務(wù)的標(biāo)準(zhǔn)協(xié)議和主要方式,為用

15、戶提供了在本地計算機上登錄遠程主機工作的能力。利用MS的Telnet工具,通過手動輸入HTTP請求信息,向服務(wù)器發(fā)出請求,服務(wù)器接收、解釋和接受請求后會返回一個響應(yīng)并在Telnet窗口上顯示出來,從而從感性上加深對HTTP協(xié)議通訊過程的認識。步驟如下:2.1 HTTP協(xié)議第2章JSP基礎(chǔ)知識2.1.3 利用Telnet觀察HTTP協(xié)議的通訊過程2.1 HTTP協(xié)議第2章JSP基礎(chǔ)知識2.1.3 利用Telnet觀察HTTP協(xié)議的通訊過程2.1 HTTP協(xié)議第2章JSP基礎(chǔ)知識2.1.3 利用Telnet觀察HTTP協(xié)議的通訊過程2.2 Eclipse工具的使用第2章JSP基礎(chǔ)知識2.2.1 安

16、裝EclipseEclipse是著名的跨平臺的自由集成開發(fā)環(huán)境(IDE)。最初主要用來作為Java語言開發(fā)工具,但是目前亦有人通過插件使其作為其他計算機語言如C+和Python的開發(fā)工具。Eclipse最初是由IBM公司開發(fā)用于替代商業(yè)軟件Visual Age for Java的下一代IDE開發(fā)環(huán)境,2001年11月貢獻給開源社區(qū),現(xiàn)在由非營利軟件供應(yīng)商聯(lián)盟Eclipse基金會(Eclipse Foundation)管理。2001年11月7日,Eclipse 1.0發(fā)布。目前已知的Eclipse各版本代號如下:2.2 Eclipse工具的使用第2章JSP基礎(chǔ)知識2.2.2 使用Eclipse開

17、發(fā)Web項目Eclipse開發(fā)Web項目的步驟如下:()在Eclipse中整合Tomcat 6容器在Eclipse IDE 中,選擇Eclipse菜單的【W(wǎng)indows】【Preferences】【Server】【Runtime Environment】命令,單擊【Add】按鈕添加應(yīng)用程序服務(wù)器。如圖2-9所示。2.2 Eclipse工具的使用第2章JSP基礎(chǔ)知識在下一步中,選擇【Apache】Apache Tomcat v6.0選項,單擊【Next】按鈕,如圖2-10所示。2.2 Eclipse工具的使用第2章JSP基礎(chǔ)知識設(shè)置Tomcat的安裝路徑,單擊【Browse】按鈕,選擇Tomca

18、t所在的位置,同時配置所要使用的JRE路徑,單擊【Finish】按鈕完成配置,如圖2-11所示。2.2 Eclipse工具的使用第2章JSP基礎(chǔ)知識(2)創(chuàng)建Web工程2.2 Eclipse工具的使用第2章JSP基礎(chǔ)知識(2)創(chuàng)建Web工程2.2 Eclipse工具的使用第2章JSP基礎(chǔ)知識(2)創(chuàng)建Web工程2.2 Eclipse工具的使用第2章JSP基礎(chǔ)知識(2)創(chuàng)建Web工程2.2 Eclipse工具的使用第2章JSP基礎(chǔ)知識(3)部署Web工程2.2 Eclipse工具的使用第2章JSP基礎(chǔ)知識2.2.3 Eclipse的調(diào)試功能在編寫程序過程中,調(diào)試是一個非常重要的環(huán)節(jié)。有人這樣說:

19、“程序是調(diào)試出來的,而不是寫出來的?!币灿腥苏f:“調(diào)試是一門藝術(shù)”。程序員常常遇到一個bug,調(diào)試了半天都沒結(jié)果,于是只好請“高手”過來幫忙,迅速搞定之后不免會問,怎么調(diào)試得這么快?其實調(diào)試是需要技巧的,當(dāng)然經(jīng)驗可以幫助程序員快速定位問題。下面以一個Java程序為例介紹Eclipse的調(diào)試步驟。在調(diào)試項目之前,要保證項目能夠正常編譯和運行。調(diào)試代碼“debugtest.java”如下:2.2 Eclipse工具的使用第2章JSP基礎(chǔ)知識2.2 Eclipse工具的使用第2章JSP基礎(chǔ)知識(1)設(shè)置斷點2.2 Eclipse工具的使用第2章JSP基礎(chǔ)知識(2)運行已設(shè)置斷點的程序,不過運行方式要

20、改為啟動調(diào)試狀態(tài)方式。2.2 Eclipse工具的使用第2章JSP基礎(chǔ)知識(3)準(zhǔn)備調(diào)試。2.2 Eclipse工具的使用第2章JSP基礎(chǔ)知識(4)Debug視圖顯示在調(diào)試視圖(Debug Perspective)的左上側(cè)。2.2 Eclipse工具的使用第2章JSP基礎(chǔ)知識(5)單擊快捷按鈕或使用快捷鍵(主要使用F6和F5)即可進行調(diào)試工作。2.2 Eclipse工具的使用第2章JSP基礎(chǔ)知識(6)調(diào)試完畢后,一定要使用Terminate(F12)關(guān)閉虛擬機。同時在Breakpoints視圖選擇“Remove All Breakpoints”,移除所有斷點。3.1 JSP語法與對象第3章JS

21、P語法與對象3.1.1 聲明3.1 JSP語法與對象第3章JSP語法與對象3.1.2 表達式【語法】expression【功能】表達式( expression )是指一個在腳本語言中定義的表達式在運行后被自動轉(zhuǎn)化為字符串,然后插入到這個表達式在JSP文件中的位置上顯示。JSP中的表達式可以被看做是一種簡單的輸出形式,表達式的值將直接輸出到頁面。需要注意的是表達式一定要是Java的合法表達式。3.1 JSP語法與對象第3章JSP語法與對象3.1.3 JSP腳本(Scriptlet)【語法】code fragment【功能】所謂腳本代碼,即Scriptlet,是JSP中的代碼部分。腳本代碼被插入到

22、JSP所生成的目標(biāo)Servlet的Service方法中,可包含多個JSP語句、變量和表達式。在該部分中可以使用幾乎任何有效的程序片段,只要符合Java本身的標(biāo)準(zhǔn)語法即可。通常主要的程序也是寫在腳本代碼中。Scriptlet主要用于:()聲明將要用到的變量。()顯示表達式。()使用內(nèi)部對象或jsp:useBean聲明過的對象編寫JSP程序。3.1 JSP語法與對象第3章JSP語法與對象3.1.4 注釋為了便于程序的閱讀,需要在編寫代碼時寫注釋。JSP中的注釋可分為兩種:一種是在客戶端顯示的注釋,被稱為HTML注釋;另外一種就是客戶端看不到,只給開發(fā)人員專用的注釋,被稱為隱藏注釋。1.HTML注釋

23、【語法】!-注釋-【功能】發(fā)送到客戶端的HTML文本中,可以通過查看源代碼看到,并且所有嵌入其中的JSP腳本將被編譯執(zhí)行。3.1 JSP語法與對象第3章JSP語法與對象3.1.4 注釋2.隱藏注釋【語法】-注釋-【功能】隱藏注釋為JSP的標(biāo)準(zhǔn)注釋,寫在JSP程序中,包含在其中的所有內(nèi)容將被JSP編譯器忽略,返回的HTML源代碼中也看不到,隱藏注釋主要供編程人員使用。3.1 JSP語法與對象第3章JSP語法與對象3.1.5 JSP指令JSP指令是為JSP引擎設(shè)計的,不直接產(chǎn)生輸出,主要用來提供與整個JSP 網(wǎng)頁相關(guān)的信息,并且用來設(shè)定JSP網(wǎng)頁的相關(guān)屬性page指令【語法】page屬性列表【功能

24、】設(shè)定整個JSP頁面的屬性和相關(guān)功能。在一個JSP頁面中,page指令可以出現(xiàn)多次,但是每一種屬性卻只能出現(xiàn)一次(import屬性除外),重復(fù)的屬性設(shè)置將覆蓋先前的設(shè)置。在page指令中定義的屬性適用于該JSP頁面以及所有通過include指令或者jsp:include動作包含的靜態(tài)文件,但是不能用于動態(tài)文件。3.1 JSP語法與對象第3章JSP語法與對象3.1.5 JSP指令include指令【語法】include fileURL【功能】JSP文件編譯時將URL所指文件靜態(tài)包含進來并且展開。這個包含的過程是靜態(tài)的,而包含的文件可以是JSP網(wǎng)頁、HTML網(wǎng)頁、文本文件或一段Java程序,被包含

25、文件與包含它的JSP文件一起參加編譯。3.1 JSP語法與對象第3章JSP語法與對象3.1.6 動作指令jsp:xxx表示動作,可以用來控制JSP引擎的動作。.jsp:include指令【語法】jsp:includerelativeURLflushtrue【功能】請求時,將指定文件的內(nèi)容插入到服務(wù)器的響應(yīng)輸出中。 jsp:include 元素允許包含動態(tài)和靜態(tài)文件,產(chǎn)生的結(jié)果是不盡相同的。如果包含進來的是靜態(tài)文件,則只是把靜態(tài)文件的內(nèi)容加到JSP頁面中;如果包含進來的是動態(tài)文件,則這個被包含的文件也會被JSP容器編譯執(zhí)行。jsp:include能夠同時處理動態(tài)和靜態(tài)兩種文件,因此使用時不需要判

26、斷此文件是動態(tài)還是靜態(tài)的,從而方便了編程。3.1 JSP語法與對象第3章JSP語法與對象3.1.6 動作指令jsp:forward指令【語法】 jsp:forward pagerelativeURL【功能】用于引導(dǎo)客戶端的請求到另一個頁面或另一個Servlet中去。【舉例】3.1 JSP語法與對象第3章JSP語法與對象3.1 JSP語法與對象第3章JSP語法與對象3.2 JSP內(nèi)部對象第3章JSP語法與對象3.2.1 request對象【說明】request對象代表請求對象,包含所有客戶端傳送給服務(wù)器端的數(shù)據(jù),如請求的來源、Cookies和與請求相關(guān)的參數(shù)值等,其作用域就是一次request請

27、求?!境S梅椒ā縭equest對象的常用方法如表3-1所示。3.2 JSP內(nèi)部對象第3章JSP語法與對象3.2.2 response對象【說明】response對象封裝了JSP的響應(yīng),主要功能是將服務(wù)器處理后的結(jié)果傳回到客戶端輸出,由于JSP中有out對象可以方便地向客戶端輸出內(nèi)容,response對象常用于與Cookie有關(guān)的操作及網(wǎng)頁的重定向。【常用方法】response對象的常用方法如表3-2所示。3.2 JSP內(nèi)部對象第3章JSP語法與對象3.2.3 session對象【說明】session對象用來保存每個用戶信息,以便追蹤每個用戶的狀態(tài)。 session對象和客戶端的會話緊密聯(lián)系在一

28、起,由服務(wù)器自動創(chuàng)建。用此項機制可以識別每一個用戶,然后針對每一個用戶的要求,給予正確的響應(yīng)。 session對象的生命周期在客戶端向該頁面發(fā)出請求時建立,在session對象到期或者被終止時撤銷。【常用方法】session對象的常用方法如表3-3所示。3.2 JSP內(nèi)部對象第3章JSP語法與對象3.2 JSP內(nèi)部對象第3章JSP語法與對象3.2.4 application對象【說明】application對象為多個應(yīng)用程序保存信息,每個用戶都使用同一個application對象。 application對象擁有application的使用范圍,即其生命周期是由服務(wù)器啟動開始至服務(wù)器關(guān)閉為止。

29、【常用方法】application對象常用方法如表3-4所示。3.2 JSP內(nèi)部對象第3章JSP語法與對象3.2.5 out對象【說明】out對象是JSP使用最頻繁的對象,能把結(jié)果輸出到網(wǎng)頁上。最常使用的方法是out.println()和out.println() ,兩者最大的差別在于println()在輸出的數(shù)據(jù)后面會自動加上換行符。但這個空行只是在輸出的html代碼的空行,在瀏覽器解析時這個空行將被忽略,要想在頁面中實現(xiàn)換行,需要通過“out.println() (br)”來實現(xiàn)?!境S梅椒ā縪ut對象的常用方法如表3-5所示。3.2 JSP內(nèi)部對象第3章JSP語法與對象3.2.5 out

30、對象3.2 JSP內(nèi)部對象第3章JSP語法與對象3.2.6 exception對象【說明】JSP文件執(zhí)行過程中發(fā)生錯誤時會產(chǎn)生異常,exception對象可以對異常進行處理。exception對象并不是在每一個JSP頁中都能夠使用。若要使用exception對象,必須在page指令中設(shè)定“page isErrorPagetrue”才能使用,否則編譯時會產(chǎn)生錯誤?!境S梅椒ā縠xception對象的常用方法如表3-6所示。3.2 JSP內(nèi)部對象第3章JSP語法與對象3.2.7 其他內(nèi)部對象1.config對象【說明】config對象表示Servlet的配置,提供對初始化JSP的配置數(shù)據(jù)的訪問。【

31、常用方法】 config對象的常用方法如表3-7所示。3.2 JSP內(nèi)部對象第3章JSP語法與對象3.2.7 其他內(nèi)部對象2.pageContext對象【功能】pageContext對象能夠存取其他隱含對象。當(dāng)隱含對象本身支持屬性時, pageContext對象提供存取那些屬性的方法。【常用方法】 pageContext對象的常用方法如表3-8所示。3.2 JSP內(nèi)部對象第3章JSP語法與對象3.2.7 其他內(nèi)部對象3.page對象【說明】page對象是JSP文件產(chǎn)生的類對象,更準(zhǔn)確地說代表JSP被編譯后的Servlet。因此,page對象可以調(diào)用Servlet類所定義的方法。3.3 Cook

32、ie第3章JSP語法與對象3.3.1 CookieCookie是在HTTP協(xié)議下,服務(wù)器維護客戶端信息的一種方式。瀏覽器與Web服務(wù)器之間是使用HTTP協(xié)議進行通信的,當(dāng)用戶發(fā)出頁面請求時,Web服務(wù)器只是簡單地進行響應(yīng),然后就關(guān)閉這個連接,并不記錄這次連接的狀態(tài)。因此當(dāng)一個頁面請求發(fā)送到Web服務(wù)器時,無論該用戶是否是第一次來訪,服務(wù)器都會把它當(dāng)做是第一次來對待,這種實現(xiàn)方法簡單而有效,但在需要保存連接狀態(tài)的情況下有著明顯的缺陷,Cookie可以有效地解決這個問題。 Cookie實際上是一段純文本信息,由服務(wù)器隨網(wǎng)頁一起發(fā)送到瀏覽器端,并保存在瀏覽器端硬盤中的指定目錄下。當(dāng)用戶訪問某個Web

33、服務(wù)器時, Web服務(wù)器將要求瀏覽器查找并返回先前發(fā)送給瀏覽器的Cookie信息來識別上次連接的狀態(tài)。Cookie對象通常用來在瀏覽器端保存連接過程中的一些參數(shù),如用戶名和密碼等。3.3 Cookie第3章JSP語法與對象3.3.1 Cookie使用Cookie時應(yīng)注意以下問題:()大多數(shù)瀏覽器允許用戶禁止Cookie的使用,如果在程序中必須使用Cookie ,一定要事先通知用戶。() Cookie對象在創(chuàng)建時需要指定名稱和值。其中,名稱不能包含逗號、分號和空格,也不能以“”符號開頭。()當(dāng)Cookie對象被保存在瀏覽器端時,可以指定Cookie的有效時間,當(dāng)保存時間超過有效時間時,Cooki

34、e對象會被瀏覽器刪除。()某些重要的信息不要使用Cookie來存儲,因為Cookie在瀏覽器端是以不加密的文件形式存放在硬盤上的。3.3 Cookie第3章JSP語法與對象Cookie對象常用方法3.4 JSP程序的調(diào)試第3章JSP語法與對象3.4.1 常見錯誤常見錯誤有以下幾種:()運行環(huán)境相關(guān)錯誤找不到服務(wù)器:Tomcat安裝和啟動問題等。不能解析JSP代碼:JDK環(huán)境變量路徑設(shè)置問題。不能執(zhí)行Servlet代碼:servlet.jar沒有加到路徑中。文件修改后不起作用:靜態(tài)包含的文件被修改等。3.4 JSP程序的調(diào)試第3章JSP語法與對象3.4.1 常見錯誤()語法錯誤關(guān)鍵字、類名和內(nèi)置

35、對象名寫錯(嚴格區(qū)分大小寫)。變量沒有定義、重復(fù)定義、沒有初始化和名字寫錯。方法名字錯誤、參數(shù)錯誤和沒有定義返回值。類型不匹配,多數(shù)是因為沒有進行類型轉(zhuǎn)換。需要的類沒有導(dǎo)入,文件名和類名不一致。結(jié)構(gòu)性錯誤,如缺少“”、缺少“)”、缺少“”、缺少“;”、標(biāo)簽或指令錯誤以及異常沒有處理等。出現(xiàn)中文標(biāo)點符號,字符串常量格式不對。3.4 JSP程序的調(diào)試第3章JSP語法與對象3.4.1 常見錯誤()運行期間錯誤請求的資源不可用,如資源(文件、數(shù)據(jù)庫、驅(qū)動程序或包)本身不存在、沒有導(dǎo)入需要的資源、書寫不正確以及路徑不正確等。,對沒有實例化的對象進行操作。無法獲取表單的值,如變量名字不正確、范圍不正確等。

36、單擊提交按鈕不起作用。按鈕是而不是或?qū)傩詻]有定義值等。提交失敗。屬性值本身有問題。3.4 JSP程序的調(diào)試第3章JSP語法與對象3.4.2 調(diào)試方法()設(shè)置alert彈出窗口判斷代碼運行到哪里停止了,或者觀察某句代碼是否執(zhí)行。()JSP中使用打印“out.println(anyString)”或者對Java語句設(shè)置斷點觀察執(zhí)行情況。()用debug單步執(zhí)行來查找問題所在。()查看后臺的錯誤信息,查找一下JSP編譯成的Servlet文件,根據(jù)錯誤信息里提示的錯誤所在行數(shù)找到JSP出錯位置。4.1 簡易計算器第4章JSP基本語法綜合實例4.1.1 簡易計算器程序分析進入Calculator目錄,執(zhí)

37、行index.jsp顯示簡易計算器的主頁,頁面上有“登錄”和“小計算器”兩個鏈接,如果在沒登錄時單擊計算器鏈接,則進入登錄頁面(login.htm)。登錄頁面要求輸入用戶名和密碼,輸入后調(diào)用login.jsp進行處理。 login.jsp判斷用戶名和密碼,如果正確則調(diào)用Calculator.jsp,否則返回login.jsp。 Calculator.jsp要求用戶輸入兩個操作數(shù),單擊【加法】、【減法】、【乘法】和【除法】按鈕,調(diào)用action.jsp進行計算。顯示結(jié)果。4.1 簡易計算器第4章JSP基本語法綜合實例4.1.2 簡易計算器的文件目錄結(jié)構(gòu)簡易計算器的文件目錄結(jié)構(gòu)如表4-1所示。4.

38、1 簡易計算器第4章JSP基本語法綜合實例4.1.3 簡易計算器界面1.計算器主界面4.1 簡易計算器第4章JSP基本語法綜合實例4.1.3 簡易計算器界面2.登錄界面4.1 簡易計算器第4章JSP基本語法綜合實例4.1.3 簡易計算器界面3.計算器界面4.1 簡易計算器第4章JSP基本語法綜合實例4.1.3 簡易計算器界面4.計算結(jié)果界面4.2 猜數(shù)游戲第4章JSP基本語法綜合實例4.2.1 猜數(shù)游戲程序分析進入guessNumber目錄,執(zhí)行index.jsp顯示猜數(shù)游戲的主頁,系統(tǒng)隨機生成一個1100之間的數(shù),要求在文本框中輸入猜的數(shù),調(diào)用處理頁面(process.jsp)。處理頁面進行

39、判斷,如果猜的數(shù)等于生成的數(shù),則調(diào)用ok.jsp;如果猜的數(shù)小于生成的數(shù),則調(diào)用smaller.jsp;如果猜的數(shù)大于生成的數(shù),則調(diào)用larger.jsp。在smaller.jsp中,提示猜的數(shù)小于生成的數(shù),并要求重新輸入,將重新猜的數(shù)提交給處理頁面(process.jsp)重新判斷。在larger.jsp中,提示猜的數(shù)大于生成的數(shù),并要求重新輸入,將重新猜的數(shù)提交給處理頁面(process.jsp)重新判斷。在ok.jsp中提示已經(jīng)猜中。4.2 猜數(shù)游戲第4章JSP基本語法綜合實例4.2.2 猜數(shù)游戲程序的目錄結(jié)構(gòu)4.2 猜數(shù)游戲第4章JSP基本語法綜合實例4.2.3 猜數(shù)游戲界面猜數(shù)游戲的

40、主頁4.2 猜數(shù)游戲第4章JSP基本語法綜合實例4.2.3 猜數(shù)游戲界面 2smaller.jsp的界面4.2 猜數(shù)游戲第4章JSP基本語法綜合實例4.2.3 猜數(shù)游戲界面 3larger.jsp的界面4.2 猜數(shù)游戲第4章JSP基本語法綜合實例4.2.3 猜數(shù)游戲界面 4ok.jsp的界面5.1 JavaBean介紹第5章JSP與javaBean什么是JavaBean?JSP和JavaBean結(jié)合使用是目前比較流行的Web開發(fā)技術(shù)。JavaBean是一個可以重復(fù)使用的、跨平臺的組件。我們可以把JavaBean想象為一個黑盒子,如電視,不必了解其內(nèi)部的構(gòu)造和運行原理,只需要利用面板上的按鈕即可

41、實現(xiàn)調(diào)臺和調(diào)音量等功能,這體現(xiàn)了組件最主要的特征,即信息封裝,外界不必了解其內(nèi)部實現(xiàn),只需通過接口對組件進行訪問。電視的面板就相當(dāng)于接口。JavaBean組件是Java類,這些類遵循一定的標(biāo)準(zhǔn),通常封裝成為具有特定功能或者處理某個業(yè)務(wù)的對象,這樣在JSP頁面內(nèi)即可訪問JavaBean以及其方法。5.2 在JSP中使用JavaBean第5章JSP與javaBean關(guān)于如何在JSP中使用JavaBean,我們來看一個例子(例程5-1)。本例的源代碼在本書配套光盤的“源代碼ch5-1”目錄下,讀者只需把整個ch5-1目錄拷貝到Tomcat的Webapps目錄下即可發(fā)布這個應(yīng)用了。例程5-1是一個用戶

42、注冊的例子,游客首先填寫注冊信息,然后提交,出現(xiàn)確認注冊信息頁面。由于尚未學(xué)習(xí)如何連接數(shù)據(jù)庫,本例暫不將用戶的注冊信息存入數(shù)據(jù)庫。5.2.1 使用JavaBean的實例5.2 在JSP中使用JavaBean第5章JSP與javaBean1.創(chuàng)建應(yīng)用程序目錄,配置用程序5.2 在JSP中使用JavaBean第5章JSP與javaBean1.創(chuàng)建應(yīng)用程序目錄,配置用程序5.2 在JSP中使用JavaBean第5章JSP與javaBean5.2.2 5.2 在JSP中使用JavaBean第5章JSP與javaBean5.2.3 5.2 在JSP中使用JavaBean第5章JSP與javaBean5.

43、2.3 5.2 在JSP中使用JavaBean第5章JSP與javaBean5.2.4 5.3 JavaBean的范圍第5章JSP與javaBean當(dāng)JavaBean的范圍設(shè)為page時,表示這個JavaBean的生命周期只在一個頁面內(nèi),當(dāng)頁面執(zhí)行完畢向客戶端發(fā)回響應(yīng)或轉(zhuǎn)到另一個文件,則JSP容器會自動釋放該JavaBean ,結(jié)束其生命周期,該JavaBean存在于當(dāng)前頁的PageContext對象中。我們看一個頁面訪問計數(shù)的例子,包含一個JavaBean和一個JSP頁面。5.3.1 page范圍5.3 JavaBean的范圍第5章JSP與javaBean當(dāng)JavaBean的范圍設(shè)為requ

44、est時,這個JavaBean在整個請求的范圍內(nèi)都有效,而不僅僅在一個頁面內(nèi)有效。當(dāng)一個JSP程序使用jsp:forward操作指令定向到另外一個JSP程序或者是使用jsp:include操作指令導(dǎo)入另外的JSP程序時,第一個JSP程序會把request對象傳送到下一個JSP程序,由于request范圍的JavaBean存在于request對象中,JavaBean對象也隨著request對象送出,被第二個JSP程序接收。5.3.2 request范圍5.3 JavaBean的范圍第5章JSP與javaBean當(dāng)JavaBean的范圍設(shè)為session時,表示JavaBean可以在當(dāng)前HTTP會

45、話的生命周期內(nèi)被所有頁面訪問,該JavaBean存在于session對象中。也許有的讀者對會話過程還不太了解,實際上,會話過程是對于單個用戶而言的,會話過程的開始以用戶開始訪問某個網(wǎng)站為標(biāo)志,會話過程的結(jié)束以用戶結(jié)束對該網(wǎng)站的訪問為標(biāo)志。不同的用戶對應(yīng)著不同的會話過程,不同的會話過程之間互不干涉、互不影響。5.3.3 session范圍5.3.4 application范圍設(shè)為application范圍的Bean生命周期是最長的,從創(chuàng)建了這個Bean開始,即可在任何使用相同application的JSP文件中使用這個Bean ,該Bean存在于application對象中, applicati

46、on對象從Web應(yīng)用程序啟動時就被創(chuàng)建了。6.1 數(shù)據(jù)庫概述第6章連接數(shù)據(jù)庫我們可以把數(shù)據(jù)庫看做是一種存儲數(shù)據(jù)的方法,數(shù)據(jù)庫模型包括層次模型、網(wǎng)狀模型、關(guān)系模型和對象模型。目前最常見的數(shù)據(jù)庫是關(guān)系數(shù)據(jù)庫,市場上使用較多的關(guān)系數(shù)據(jù)庫產(chǎn)品有Oracle、DB2、SQL Server、Sybase和MySQL等。由于關(guān)系數(shù)據(jù)庫在市場上占據(jù)了絕對主導(dǎo)地位,所以本章將重點介紹涉及關(guān)系數(shù)據(jù)庫的解決方案。因為我們可以免費地得到MySQL作為數(shù)據(jù)庫平臺,而且在開發(fā)群體中MySQL的支持率也很高,掌握起來也比較容易,所以本書使用MySQL來測試所有的代碼。6.2 SQL介紹第6章連接數(shù)據(jù)庫SQL全名為Struc

47、turedQueryLanguage。ANSI(美國國家標(biāo)準(zhǔn)學(xué)會)聲稱,SQL是關(guān)系數(shù)據(jù)庫管理系統(tǒng)的標(biāo)準(zhǔn)語言。SQL通常用于完成一些數(shù)據(jù)庫的操作任務(wù),如為數(shù)據(jù)庫更新數(shù)據(jù)或者從數(shù)據(jù)庫中檢索數(shù)據(jù)等。下面重點介紹幾個常用的SQL語句。6.2 SQL介紹第6章連接數(shù)據(jù)庫6.2 SQL介紹第6章連接數(shù)據(jù)庫6.2 SQL介紹第6章連接數(shù)據(jù)庫6.3 JDBC介紹第6章連接數(shù)據(jù)庫前面介紹了數(shù)據(jù)庫知識和SQL語言,在設(shè)計數(shù)據(jù)庫應(yīng)用程序的時候,首先需要連接到要訪問的數(shù)據(jù)庫,解決此問題的方法是采用數(shù)據(jù)庫接口技術(shù)。目前在市面上最常用的兩種數(shù)據(jù)庫接口是ODBC(OpenDatabaseConnectivity,開放數(shù)據(jù)

48、庫連接)和JDBC(JavaDatabaseConnectivity,java數(shù)據(jù)庫連接)。ODBC是Microsoft公司推出的數(shù)據(jù)庫接口,而JDBC是Sun公司推出的。JDBC是一種可用于執(zhí)行SQL語句的JavaAPI,由一些Java語言編寫的類和接口組成。JDBC為開發(fā)數(shù)據(jù)庫應(yīng)用和數(shù)據(jù)庫前臺工具提供了一種標(biāo)準(zhǔn)的應(yīng)用程序設(shè)計接口,使程序開發(fā)人員可以用純Java語言編寫完整的數(shù)據(jù)庫應(yīng)用程序。6.3.1 JDBC介紹6.3 JDBC介紹第6章連接數(shù)據(jù)庫JDBC的總體結(jié)構(gòu)有四個組件,即應(yīng)用程序、JDBC API、JDBC驅(qū)動程序管理器(JDBCDriverManager)和數(shù)據(jù)源(DataSou

49、rce)。JDBCAPI通過一個JDBC驅(qū)動程序管理器和為各種數(shù)據(jù)庫定制的JDBC驅(qū)動程序,提供與不同數(shù)據(jù)庫的透明連接。JDBC的結(jié)構(gòu)參見圖6-5。6.3.2 JDBC的結(jié)構(gòu)6.3 JDBC介紹第6章連接數(shù)據(jù)庫1.JDBC-ODBC橋6.3.3 JDBC驅(qū)動程序6.3 JDBC介紹第6章連接數(shù)據(jù)庫2.部分Java、部分本機驅(qū)動程序6.3.3 JDBC驅(qū)動程序6.3 JDBC介紹第6章連接數(shù)據(jù)庫3.中間數(shù)據(jù)訪問服務(wù)器6.3.3 JDBC驅(qū)動程序6.3 JDBC介紹第6章連接數(shù)據(jù)庫4.純Java驅(qū)動程序6.3.3 JDBC驅(qū)動程序6.3 JDBC介紹第6章連接數(shù)據(jù)庫6.3.4 JDBC常用接口6.

50、3 JDBC介紹第6章連接數(shù)據(jù)庫6.3 JDBC介紹第6章連接數(shù)據(jù)庫6.3 JDBC介紹第6章連接數(shù)據(jù)庫6.4 連接MySQL數(shù)據(jù)庫第6章連接數(shù)據(jù)庫在編寫數(shù)據(jù)庫應(yīng)用程序之前,首先需要找到所要連接的數(shù)據(jù)庫的驅(qū)動程序,MySQL的驅(qū)動程序稱為“ConnectorJ”,讀者可以在MySQL的官方網(wǎng)站上免費取得,網(wǎng)址為“/products/connectorj/index.html”,或者直接使用光盤內(nèi)附的驅(qū)動程序。這里使用“Connector/J3.1.10”作為本書范例的JDBC驅(qū)動程序,文件名為“mysqlconnector java 3.1.10 bin.jar”,將JDBC驅(qū)動程序部署到To

51、mcat的“commonlib”目錄下,注意,部署完后一定要重新啟動Tomcat服務(wù)器。6.4.1 在JSP中使用JDBC連接數(shù)據(jù)庫6.4 連接MySQL數(shù)據(jù)庫第6章連接數(shù)據(jù)庫在編寫數(shù)據(jù)庫應(yīng)用程序時,往往會遇到中文亂碼問題。例如上一節(jié)我們舉了在數(shù)據(jù)庫表中插入記錄的例子,如果讀者修改程序,將插入的數(shù)據(jù)改為中文,就會發(fā)現(xiàn)插入到表中的數(shù)據(jù)變成了亂碼。有時候,即使表中的數(shù)據(jù)都是正常的中文,但從表中查詢出來顯示到頁面上的卻是亂碼。6.4.2 中文亂碼問題的處理6.4 連接MySQL數(shù)據(jù)庫第6章連接數(shù)據(jù)庫前面筆者介紹了如何在JSP頁面中訪問數(shù)據(jù)庫,我們把所有的數(shù)據(jù)訪問代碼都寫入了JSP頁面,這樣雖然看起來

52、編程簡單,但是可維護性和代碼的重用性卻得不到滿足。在真正的JSP開發(fā)中,很少直接在JSP頁面中寫入大量的邏輯代碼,而是把訪問數(shù)據(jù)庫的代碼封裝到JavaBean中,實現(xiàn)系統(tǒng)的邏輯分層,這樣不僅頁面容易維護,而且代碼也能得到很好的重用。6.4.3 在JavaBean中使用JDBC連接數(shù)據(jù)庫6.4 連接MySQL數(shù)據(jù)庫第6章連接數(shù)據(jù)庫6.4.3 在JavaBean中使用JDBC連接數(shù)據(jù)庫6.4 連接MySQL數(shù)據(jù)庫第6章連接數(shù)據(jù)庫6.4 連接MySQL數(shù)據(jù)庫第6章連接數(shù)據(jù)庫6.4 連接MySQL數(shù)據(jù)庫第6章連接數(shù)據(jù)庫6.4 連接MySQL數(shù)據(jù)庫第6章連接數(shù)據(jù)庫6.4 連接MySQL數(shù)據(jù)庫第6章連接數(shù)

53、據(jù)庫6.4 連接MySQL數(shù)據(jù)庫第6章連接數(shù)據(jù)庫數(shù)據(jù)庫訪問往往比較消耗系統(tǒng)資源,如前面所介紹的數(shù)據(jù)庫連接方式,每次JSP接收到一個請求,就向數(shù)據(jù)庫要求一個連接,當(dāng)執(zhí)行完就通知數(shù)據(jù)庫中斷連接。這樣,每次操作都建立一個物理連接,使用完都關(guān)閉連接,造成系統(tǒng)性能低下。本節(jié)我們將利用連接池(Connection Pool)的方式來解決這個問題。連接池技術(shù)的原理是在Web服務(wù)器啟動的時候就與數(shù)據(jù)庫建立很多的Connection連接對象并存儲起來,就像一個池子,需要的時候就從連接池中取出一個連接,使用完畢后再釋放回連接池。簡單地說,就是做一個緩沖區(qū),使JSP與數(shù)據(jù)庫之間能夠獲得最大的執(zhí)行效率。6.4.4 連

54、接池技術(shù)7.1 Servlet介紹第7章JSP與ServletServlet是用Java編寫的服務(wù)器端小程序,與協(xié)議和平臺無關(guān),運行于支持Java的Web服務(wù)器中。JavaServlet具有動態(tài)擴展Server的能力,并采用請求響應(yīng)模式提供Web服務(wù)。Servlet看起來像是普通的Java程序。 Servlet需要導(dǎo)入特定的屬于Java Servlet API的包。由于Servlet運行于服務(wù)器中,并不需要一個圖形用戶界面,從這個角度講Servlet也被稱為FacelessObject(無界面對象)。Servlet有以下優(yōu)點: 可移植性 功能 性能 安全性7.2 Servlet的生命周期第7章

55、JSP與ServletServlet有良好的生命周期的定義,包括加載、實例化、初始化、處理客戶端請求以及被移除。這個生存期由javax.servlet.Servlet接口的init( )、service()和destroy()方法來實現(xiàn)。Servlet從產(chǎn)生到結(jié)束的流程如圖7-1所示。7.3 JSP本質(zhì)上就是Servlet第7章JSP與Servlet其實,JSP本質(zhì)上就是Servlet。Tomcat服務(wù)器總是把每個JSP文件翻譯為Servlet,然后再編譯執(zhí)行。7.4 開發(fā)和部署一個簡單的Servlet第7章JSP與Servlet本節(jié)使用Servlet輸出當(dāng)前時間。該例程的源代碼在本書配套光盤

56、的“源代碼ch7”目錄下。7.5 JSP與Servlet聯(lián)合應(yīng)用實例第7章JSP與Servlet本節(jié)舉例說明Servlet和網(wǎng)頁是如何溝通的。該例程的源代碼在本書配套光盤的“源代碼ch7”目錄下。7.6 JSP開發(fā)的兩種模型第7章JSP與Servlet Java的Web框架雖然各不相同,但基本也都是遵循特定的路數(shù),如使用Servlet或Filter攔截請求;使用MVC的思想設(shè)計架構(gòu),使用約定XML或Annotation實現(xiàn)配置,運用Java面向?qū)ο蟮奶攸c,面向抽象實現(xiàn)請求和響應(yīng)的流程,支持JSP、Freemarker和Velocity等視圖。早期的JSP規(guī)范提出了兩種用JSP技術(shù)建立應(yīng)用程序的

57、方式。這兩種方式在術(shù)語中分別稱作JSPModell和JSPModel12(模型2),其本質(zhì)區(qū)別在于處理批量請求的位置不同。7.6.1 Java Web框架7.6 JSP開發(fā)的兩種模型第7章JSP與Servlet 1.傳統(tǒng)的JSPModel1模型 JSP是獨立的,自主完成所有的任務(wù),中心是JSP頁面。 JSP頁面中結(jié)合業(yè)務(wù)邏輯、服務(wù)端處理過程和HTML等,這樣就在JSP頁面中同時實現(xiàn)了業(yè)務(wù)邏輯和流程控制,從而實現(xiàn)快速開發(fā)。如圖7-7所示。7.6.2 模型17.6 JSP開發(fā)的兩種模型第7章JSP與Servlet 2.改進的JSPModel1模型 Jsp頁面與JavaBeans技術(shù)共同協(xié)作完成任務(wù)

58、,將頁面顯示和業(yè)務(wù)邏輯處理分開。JSP實現(xiàn)頁面的顯示,JavaBean對象用來承載數(shù)據(jù)和實現(xiàn)業(yè)務(wù)邏輯。改進的JSPModel1模型的結(jié)構(gòu)如圖7-10所示。在模型中,JSP頁面獨自響應(yīng)請求并將處理結(jié)果返回給客戶,所有的數(shù)據(jù)通過JavaBean來處理,JSP實現(xiàn)頁面的顯示。7.6.2 模型17.6 JSP開發(fā)的兩種模型第7章JSP與Servlet ()JSPModel2中使用了三種技術(shù),即JSP、Servlet和JavaBeans。JSP負責(zé)生成動態(tài)網(wǎng)頁,只用來顯示頁面;Servlet負責(zé)流程控制,用來處理各種請求的分派;JavaBeans負責(zé)業(yè)務(wù)邏輯,如對數(shù)據(jù)庫的操作。 ()使用JSPModel

59、2的交互過程如下: 用戶通過瀏覽器向Web應(yīng)用中的Servlet發(fā)送請求,Servlet接收到請求后實例化JavaBeans對象,調(diào)用該對象的方法,并返回從數(shù)據(jù)庫中讀取的數(shù)據(jù)。Servlet選擇合適JSP,并且把從數(shù)據(jù)庫中讀取的數(shù)據(jù)通過這個JSP進行顯示,最后JSP頁面把最終的結(jié)果返回給瀏覽器。結(jié)構(gòu)如圖7-13所示。7.6.3 模型27.7 中文亂碼問題第7章JSP與Servlet Java的內(nèi)核和class文件是基于Unicode(統(tǒng)一字符編碼標(biāo)準(zhǔn)集)的,這使得Java程序具有良好的跨平臺性,但在JavaWeb應(yīng)用開發(fā)中,經(jīng)常會出現(xiàn)頁面顯示中文亂碼的情況。究其原因,主要是由于在Web組件之間

60、和Web組件與瀏覽器之間、Web組件與數(shù)據(jù)庫之間所使用的字符集標(biāo)準(zhǔn)不統(tǒng)一,Web應(yīng)用程序運行過程中,中文字符往往需要在不同的字符集之間來回轉(zhuǎn)換,因此導(dǎo)致了中文亂碼問題的頻繁出現(xiàn)。 什么是字符集?在計算機中,無論數(shù)據(jù)是在內(nèi)存中還是在外部存儲設(shè)備上,只有二進制的數(shù)據(jù)。我們所看到的字符也是以二進制數(shù)據(jù)的形式存在的。不同字符對應(yīng)二進制數(shù)的規(guī)則,就是字符的編碼。字符編碼的集合稱為字符集。7.7.1 Java中文問題的由來7.7 中文亂碼問題第7章JSP與Servlet Web頁面常見的亂碼主要有三種,即JSP頁面顯示亂碼、表單提交中出現(xiàn)亂碼和數(shù)據(jù)庫連接亂碼。 1.JSP頁面顯示亂碼 這種亂碼問題比較簡單

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論