![JavaWeb程序設(shè)計(jì) 課件 郭克華 第1-8章 JavaWeb開發(fā)環(huán)境配置-JSP 內(nèi)置對(duì)象2_第1頁(yè)](http://file4.renrendoc.com/view5/M00/39/04/wKhkGGYb0pKAKk1IAAEV-i8vrow103.jpg)
![JavaWeb程序設(shè)計(jì) 課件 郭克華 第1-8章 JavaWeb開發(fā)環(huán)境配置-JSP 內(nèi)置對(duì)象2_第2頁(yè)](http://file4.renrendoc.com/view5/M00/39/04/wKhkGGYb0pKAKk1IAAEV-i8vrow1032.jpg)
![JavaWeb程序設(shè)計(jì) 課件 郭克華 第1-8章 JavaWeb開發(fā)環(huán)境配置-JSP 內(nèi)置對(duì)象2_第3頁(yè)](http://file4.renrendoc.com/view5/M00/39/04/wKhkGGYb0pKAKk1IAAEV-i8vrow1033.jpg)
![JavaWeb程序設(shè)計(jì) 課件 郭克華 第1-8章 JavaWeb開發(fā)環(huán)境配置-JSP 內(nèi)置對(duì)象2_第4頁(yè)](http://file4.renrendoc.com/view5/M00/39/04/wKhkGGYb0pKAKk1IAAEV-i8vrow1034.jpg)
![JavaWeb程序設(shè)計(jì) 課件 郭克華 第1-8章 JavaWeb開發(fā)環(huán)境配置-JSP 內(nèi)置對(duì)象2_第5頁(yè)](http://file4.renrendoc.com/view5/M00/39/04/wKhkGGYb0pKAKk1IAAEV-i8vrow1035.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第1章JavaWeb開發(fā)環(huán)境配置本課教學(xué)內(nèi)容B/S結(jié)構(gòu)服務(wù)器安裝IDE安裝第一個(gè)Web項(xiàng)目B/S簡(jiǎn)介兩種基本結(jié)構(gòu)C/S(客戶機(jī)/服務(wù)器)B/S(瀏覽器/服務(wù)器)B/S簡(jiǎn)介C/S(客戶機(jī)/服務(wù)器) C/S,分為客戶機(jī)和服務(wù)器兩層,把應(yīng)用軟件安裝在客戶機(jī)端,通過(guò)網(wǎng)絡(luò)與服務(wù)器端相互通信。如果客戶端改動(dòng)了(如界面豐富,功能增加),就必須通知所有的客戶端重新安裝,維護(hù)稍有不便C/S結(jié)構(gòu)模式圖B/S簡(jiǎn)介B/S(瀏覽器/服務(wù)器) B/S結(jié)構(gòu)卻可以不用通知客戶端安裝某個(gè)軟件,內(nèi)容修改了,也不需要通知客戶端升級(jí)。B/S也分為客戶機(jī)和服務(wù)器兩層,但是客戶機(jī)上不用安裝軟件,只需要使用瀏覽器即可B/S結(jié)構(gòu)模式圖Web程序定義:Web原意是"蜘蛛網(wǎng)",或"網(wǎng)"。在互聯(lián)網(wǎng)等技術(shù)領(lǐng)域,特指網(wǎng)絡(luò),在應(yīng)用程序領(lǐng)域,又是"WorldWideWeb(萬(wàn)維網(wǎng))"的簡(jiǎn)稱。在Web程序結(jié)構(gòu)中,瀏覽器端與Web服務(wù)器端采用請(qǐng)求/響應(yīng)模式進(jìn)行交互。Web程序運(yùn)行描述客戶端Web服務(wù)器數(shù)據(jù)庫(kù)服務(wù)器1:用戶輸入2:發(fā)送請(qǐng)求5:返回響應(yīng)3:訪問(wèn)數(shù)據(jù)4:返回結(jié)果6:顯示
瀏覽器端與服務(wù)器端的交互模式Web程序運(yùn)行描述瀏覽器端與服務(wù)器端的交互模式過(guò)程描述:客戶端(通常是瀏覽器,如IE、Firefox等)接受用戶的輸入,如用戶名、密碼、查詢字符串等客戶端向Web服務(wù)器發(fā)送請(qǐng)求:輸入之后,提交,客戶端把請(qǐng)求信息(包含表單中的輸入以及其他請(qǐng)求等信息)發(fā)送到Web服務(wù)器端,客戶端等待服務(wù)器端的響應(yīng)Web程序運(yùn)行描述數(shù)據(jù)處理:Web服務(wù)器端使用某種腳本語(yǔ)言訪問(wèn)數(shù)據(jù)庫(kù),查詢數(shù)據(jù),并獲得查詢結(jié)果數(shù)據(jù)庫(kù)向Web服務(wù)器中的程序返回結(jié)果發(fā)送響應(yīng):Web服務(wù)器端向客戶端發(fā)送響應(yīng)信息(一般是動(dòng)態(tài)生成的HTML頁(yè)面)顯示:由用戶的瀏覽器解釋HTML代碼,呈現(xiàn)用戶界面Web程序應(yīng)用于Web的編程語(yǔ)言:CGIPHPASPJSP服務(wù)器的作用要建立Web網(wǎng)站,最基本的要求是要讓客戶能夠通過(guò)http/https協(xié)議訪問(wèn)網(wǎng)站里面的網(wǎng)頁(yè)。為了能通過(guò)http/https協(xié)議訪問(wèn)網(wǎng)頁(yè),需將網(wǎng)頁(yè)放在服務(wù)器中運(yùn)行。Java系列的服務(wù)器很多,如Tomcat、WebLogic等。服務(wù)器安裝-Tomcat下載。
在瀏覽器地址欄中輸入:,可以看到tomcat的可下載版本在Windows環(huán)境下,選擇"WindowsServiceInstaller",即可下載安裝版本。下載之后,得到一個(gè)可執(zhí)行文件,在本章中為:apache-tomcat-6.0.45.exe。注意,也可以下載壓縮包服務(wù)器安裝-Tomcat雙擊安裝文件即可進(jìn)行安裝,具體安裝過(guò)程見課本圖解如果是默認(rèn)安裝,Tomcat安裝完畢之后,可以在C:\ProgramFiles\ApacheSoftwareFoundation\Tomcat6.0下找到安裝的目錄服務(wù)器安裝-TomcatTomcat安裝目錄中,比較重要的文件夾或文件的內(nèi)容如下表服務(wù)器安裝-TomcatTomcat安裝后完畢后需要測(cè)試其是否安裝成功,步驟為:1.進(jìn)入Tomcat安裝目錄下的bin目錄;2.雙擊bin目錄下的Tomcat6.exe;3.打開瀏覽器,在地址欄輸入“http://localhost:8080/index.jsp”,若能正常訪問(wèn)即安裝成功。服務(wù)器安裝-Tomcat啟動(dòng)Tomcat的過(guò)程中,可能會(huì)遇到端口被占用的情況,這時(shí)可以配置服務(wù)器,將服務(wù)器運(yùn)行的端口號(hào)改為別的端口。找到Tomcat安裝目錄下的文件“/conf/server.xml”;使用記事本或?qū)懽职宕蜷_文件,在文件中找到“Connectorport=8080”;將“8080”改為“8888”,然后保存配置文件;重啟Tomcat服務(wù)器。IDE安裝IDE(IntegratedDevelopmentEnvironment,集成開發(fā)環(huán)境),是幫助用戶進(jìn)行快速開發(fā)的軟件。如JCreator、Eclipse、DreamWeaver,都屬于IDE。Java系列的IDE很多,如JBuilder、JCreator、Eclipse、MyEclipse等。其中,MyEclipse是收費(fèi)軟件,但是對(duì)JavaEE應(yīng)用開發(fā)進(jìn)行了很多支持,功能比較強(qiáng)大。IDE安裝-MyEclipse在瀏覽器地址欄中輸入:,能夠看到MyEclipse的各個(gè)版本??梢愿鶕?jù)提示下載。下載之后,得到一個(gè)可執(zhí)行文件,為:MyEclipse_7.0_win32.exe。雙擊下載后的安裝文件,可以根據(jù)提示進(jìn)行安裝,具體安裝過(guò)程見課本圖解。綁定MyEclipse和服務(wù)器在MyEclipse中使用服務(wù)器,需要首先綁定JDK。雖然MyEclipse下已經(jīng)內(nèi)置了Java環(huán)境,但仍可以使用自行安裝的JDK來(lái)進(jìn)行支持。具體的綁定過(guò)程見課本圖解。綁定好了JDK后,需要在MyEclipse中配置自行安裝的Tomcat。建立Web項(xiàng)目創(chuàng)建Web網(wǎng)站所涉及的幾個(gè)步驟如下:創(chuàng)建Web項(xiàng)目,建立基本結(jié)構(gòu);設(shè)計(jì)Web項(xiàng)目的目錄結(jié)構(gòu),將網(wǎng)站中的各個(gè)文件分門別類;編寫Web項(xiàng)目的代碼,編寫網(wǎng)頁(yè);部署Web項(xiàng)目,在服務(wù)器中運(yùn)行該項(xiàng)目。在MyEclipse中創(chuàng)建Web項(xiàng)目見課本圖解目錄結(jié)構(gòu)Web項(xiàng)目要求按特定的目錄結(jié)構(gòu)組織文件,當(dāng)在MyEclipse中創(chuàng)建完畢新的Web項(xiàng)目,就可以在MyEclipse的"PackageExplorer"中看到該Web項(xiàng)目的目錄結(jié)構(gòu),由MyEclipse自動(dòng)生成。目錄用途src目錄:用來(lái)存放Java源文件。WebRoot目錄:是該Web應(yīng)用的頂層目錄,也稱為文檔根目錄,由以下部分組成:
兩個(gè)重要目錄(不要隨意修改或者刪除):META-INF目錄:系統(tǒng)自動(dòng)生成,存放系統(tǒng)描述信息,一般情況下使用較少目錄用途W(wǎng)EB-INF目錄:該目錄存在于文檔根目錄下。但是該目錄不能被引用,即該目錄下存放的文件無(wú)法對(duì)外發(fā)布,則無(wú)法被用戶訪問(wèn)到。web.xml:Web應(yīng)用的配置文件,不能刪除或隨意修改。lib目錄:其中包含Web應(yīng)用所需的.jar或.zip文件。classes目錄:在MyEclipse中沒(méi)有顯示出來(lái),里面包含的是src目錄下的Java源文件所編譯的class文件。目錄用途其他目錄:主要是網(wǎng)站中的一些用戶文件。靜態(tài)文件:包括所有的HTML網(wǎng)頁(yè)、CSS文件、圖像文件等。JSP文件。部署頁(yè)面編寫完成之后,必須要將整個(gè)項(xiàng)目放到服務(wù)器中去運(yùn)行,這叫做部署Web項(xiàng)目,具體操作步驟分為以下幾步:?jiǎn)螕鬗yEclipse工具欄上的部署圖標(biāo)在新彈出的對(duì)話框中選擇欲部署的項(xiàng)目,接著單擊Add按鈕在下一個(gè)新彈出的對(duì)話框中,選擇server為Tomcat6.x,然后單擊"Finish"按鈕運(yùn)行部署Web項(xiàng)目后,就要開始訪問(wèn)頁(yè)面: 運(yùn)行Tomcat6.x服務(wù)器(前面已經(jīng)敘述過(guò)),開啟IE窗口,輸入U(xiǎn)RL為http://localhost:8080/Prj01/index.jsp,按回車鍵并查看運(yùn)行結(jié)果項(xiàng)目已經(jīng)被放到了服務(wù)器中,路徑是: C:\ProgramFiles\ApacheSoftwareFoundation\Tomcat6.0\webappsURLURL是UniformResourceLocator的縮寫,譯為“統(tǒng)一資源定位符”,就是通常所說(shuō)的網(wǎng)址,URL是惟一能夠識(shí)別Internet上具體的計(jì)算機(jī)、目錄或文件位置的命名約定。URLURL的格式由下列三部分組成。http://localhost:8080/Prj01/index.jsp第一部分是協(xié)議,如http。第二部分是主機(jī)IP地址(有時(shí)也包括端口號(hào)),如localhost:8080,注意,localhost也可以用,或者主機(jī)IP地址代替。第三部分是主機(jī)資源的具體地址,如目錄和文件名等。開發(fā)Web程序的常見錯(cuò)誤未啟動(dòng)Tomcat未部署Web應(yīng)用就訪問(wèn)URL輸入錯(cuò)誤本章結(jié)束本章總結(jié)B/S結(jié)構(gòu)服務(wù)器安裝IDE安裝第一個(gè)Web項(xiàng)目上機(jī)習(xí)題第2章HTML基礎(chǔ)本課教學(xué)內(nèi)容靜態(tài)網(wǎng)頁(yè)制作HTML中的常見標(biāo)簽表格標(biāo)簽鏈接和圖片標(biāo)簽表單標(biāo)簽框架靜態(tài)網(wǎng)頁(yè)制作HTML簡(jiǎn)介HTML(HyperTextMark-upLanguage,超文本標(biāo)記語(yǔ)言),是構(gòu)成網(wǎng)頁(yè)文檔的主要語(yǔ)言。一般情況下,網(wǎng)頁(yè)上看到的文字、圖形、動(dòng)畫、聲音、表格、鏈接等元素大部分都是由HTML語(yǔ)言描述的靜態(tài)網(wǎng)頁(yè)制作HTML簡(jiǎn)介
HTML語(yǔ)言的基本組成部分是各種標(biāo)簽,一張生動(dòng)的網(wǎng)頁(yè)往往含有大量的標(biāo)簽。使用標(biāo)簽,實(shí)際上就是采用一系列指令符號(hào)來(lái)控制輸出的效果,如:<BR>,是最常使用的控制格式的標(biāo)簽,它表示在網(wǎng)頁(yè)上換行靜態(tài)網(wǎng)頁(yè)制作HTML簡(jiǎn)介HTML有兩種類型的標(biāo)簽,一類是單標(biāo)簽,<BR>就是一種單標(biāo)簽,它只需要單獨(dú)一組符號(hào)就可以表示完整的功能。另一種是雙標(biāo)簽,形如<B>內(nèi)容</B>,表示將"內(nèi)容"顯示為粗體,這種標(biāo)簽所圍繞的內(nèi)容就是標(biāo)簽作用的作用域靜態(tài)網(wǎng)頁(yè)制作HTML簡(jiǎn)介標(biāo)簽還有屬性,如:<ahref=page.html/>,其中的“href”就是一個(gè)屬性名稱,“page.html”是屬性值。以HTML編寫成的文本文件的后綴名為.html,另外,版本較老的.htm后綴名也是被支持的,它們的意義相同。靜態(tài)網(wǎng)頁(yè)制作HTML簡(jiǎn)介HTML語(yǔ)言對(duì)于大小寫不敏感,比如馬上將要學(xué)習(xí)的表示HTML文檔的標(biāo)簽:<html></html>,也可寫做<HTML></HTML>,甚至可以寫為<HtmL></htMl>,但是一般推薦,自始至終使用同一種書寫方式HTML文檔的基本結(jié)構(gòu)HTML文檔的基本結(jié)構(gòu)如下:<html> <head>頭部信息 </head> <body> 主體 </body></html>文字布局及字體標(biāo)簽標(biāo)題、換行、段落標(biāo)簽標(biāo)題標(biāo)簽
在HTML中,標(biāo)題的一般形式為:<hn>內(nèi)容</hn>。n可取1~6,n越小,標(biāo)題字號(hào)就越大。換行標(biāo)簽
<br>是換行標(biāo)簽,在需要換行的地方加上此標(biāo)簽即可。段落標(biāo)簽
<p>為段落標(biāo)簽,一個(gè)段落開始由<p>來(lái)標(biāo)記,結(jié)束用</p>表示。<p>有一個(gè)常用屬性align,用來(lái)指明內(nèi)容顯示時(shí)的對(duì)齊方式,常用的有l(wèi)eft、center和right,分別表示左對(duì)齊、居中對(duì)齊和右對(duì)齊。文字布局及字體標(biāo)簽水平線段標(biāo)簽<hr>是水平線段標(biāo)簽,此標(biāo)簽較為常用的屬性有:size:水平線的寬度,單位為像素width:水平線的長(zhǎng),如不設(shè)置則默認(rèn)為頁(yè)面長(zhǎng)度,單位默認(rèn)為像素,但也可以使用百分制,如width=50%表示長(zhǎng)度為頁(yè)面長(zhǎng)度的50%align:水平線的對(duì)齊方式,常用的有l(wèi)eft,center,right。noshade:線段無(wú)陰影屬性,沒(méi)有屬性值,若設(shè)置,則線段為實(shí)心線段color:線段內(nèi)部的顏色文字布局及字體標(biāo)簽文字設(shè)計(jì)標(biāo)簽
<font></font>
<font></font>標(biāo)簽一般用于標(biāo)記字體,此標(biāo)簽有以下幾種常見的屬性:size:用來(lái)設(shè)置字體大小,它的屬性值有兩種寫法:一種為size=X,其中X為從1到7,值越大,字體越大,屬性值為3是客戶端網(wǎng)頁(yè)的默認(rèn)字體大小;另一種方法是size=+X或-X,X同樣為從1到7的值,意思是以基準(zhǔn)字體大小為標(biāo)準(zhǔn)大X號(hào)字體或者小X號(hào)字體face:用來(lái)設(shè)置字體類型,默認(rèn)為宋體。如<fontface="楷體_GB2312">,即設(shè)置該內(nèi)容的輸出的字體為楷體但是需要注意的是,只有電腦中安裝的字體才可以在瀏覽器中出現(xiàn)相應(yīng)風(fēng)格,如果用戶沒(méi)有安裝該字體,則會(huì)顯示默認(rèn)字體的風(fēng)格color:用于設(shè)置字體顏色HTML中的常見標(biāo)簽常見的設(shè)置文字風(fēng)格的標(biāo)簽有:<b>內(nèi)容</b>:將內(nèi)容設(shè)置為粗體。<u>內(nèi)容</u>:將內(nèi)容設(shè)置下劃線。<i>內(nèi)容</i>:將內(nèi)容設(shè)置為斜體。<sup>內(nèi)容</sup>:將內(nèi)容設(shè)置為上標(biāo)。<sub>內(nèi)容</sub>:將內(nèi)容設(shè)置為下標(biāo)<blink>內(nèi)容</blink>:將內(nèi)容設(shè)置為閃爍(非標(biāo)準(zhǔn)元素)。列表標(biāo)簽在網(wǎng)頁(yè)制作過(guò)程中,常常要將某些信息以列表的方式列舉出來(lái),這就需要用到HTML中的列表標(biāo)簽。列表標(biāo)簽分為兩種,一種是有序的,一種是無(wú)序的。<ul>內(nèi)容</ul>,表示它所包圍的內(nèi)容是無(wú)序列表標(biāo)簽,即列表中每一項(xiàng)目前不會(huì)加上序號(hào),而是會(huì)加上●、○、■等符號(hào)。其中列表的每一項(xiàng)用<li>列表項(xiàng)</li>標(biāo)示。<ol>內(nèi)容</ol>表示有序標(biāo)簽,意義與使用方法和無(wú)序列表標(biāo)簽大致相同,不同點(diǎn)為它會(huì)在每個(gè)列表項(xiàng)前加上數(shù)字表格標(biāo)簽表格基本設(shè)計(jì)編寫表格所用到的標(biāo)簽如下:<table></table>:定義表格,表格的所有內(nèi)容都寫在這個(gè)標(biāo)簽之內(nèi)<caption></caption>:定義標(biāo)題,標(biāo)題會(huì)自動(dòng)出現(xiàn)在整張表格的上方<tr></tr>:定義表行<th></th>:定義表頭,包含在<tr></tr>之間,表頭中的文字會(huì)自動(dòng)變成粗體<td></td>:定義表元(表格的具體數(shù)據(jù)),包含在<tr></tr>之間表格標(biāo)簽以下為制作表格的標(biāo)簽中大多擁有的公共屬性:align:水平布局方式,常用屬性值有l(wèi)eft,right,center,表示左對(duì)齊,右對(duì)齊和居中對(duì)齊,<table>的該屬性表示表格在頁(yè)面的布局方式,<tr>、<td>的該屬性表示該行和該表元內(nèi)的內(nèi)容的布局方式。默認(rèn)布局方式為左對(duì)齊bgcolor:設(shè)置背景顏色border:設(shè)置邊框的寬度,屬性值為整數(shù),為0時(shí)表格沒(méi)有邊框,默認(rèn)值為0width:寬度,默認(rèn)單位為像素,也可以使用百分制單位height:高度,默認(rèn)單位為像素;也可以使用百分制單位表格標(biāo)簽對(duì)于整張表格,<table>標(biāo)簽常用的屬性有以下幾個(gè):bordercolor:表格邊框的顏色,默認(rèn)為黑色cellpadding:表元邊框的寬度cellspacing:表元的邊框與表格邊框之間的寬度合并單元格合并單元格必須對(duì)<td>標(biāo)簽中的rowspan、colspan進(jìn)行設(shè)置,屬性值都為整數(shù),默認(rèn)為1,表示沒(méi)有合并。這兩個(gè)屬性的意思分別為:從該表元起,該表元在行或者列上占有的單元格數(shù),比如設(shè)置某個(gè)<td>標(biāo)簽rowspan=2,表示該表元及其下面的表元合并成一個(gè)。鏈接和圖片標(biāo)簽鏈接標(biāo)簽可以使用戶鏈接到另一個(gè)頁(yè)面,它的寫法是<a>內(nèi)容</a>,標(biāo)簽內(nèi)的內(nèi)容為鏈接所顯示的內(nèi)容,可以是文字、空格占位符、圖片等,此標(biāo)簽的一個(gè)重要屬性是:href,它的值表示鏈接所指向的資源地址鏈接和圖片標(biāo)簽圖片標(biāo)簽比較重要和常用的標(biāo)簽有以下幾個(gè):src:表示圖片儲(chǔ)存的位置width,height,border,align:作用與前文所提到屬性相同alt:當(dāng)圖片未載入或者載入失敗時(shí)提供的替代性的文字說(shuō)明表單標(biāo)簽很多網(wǎng)頁(yè)上,可以讓用戶在一些控件中輸入一些內(nèi)容,如文本框、密碼框等,輸入之后,提交,這些控件所在的區(qū)域叫做表單(form)。表單中的控件叫做表單元素。一個(gè)表單是這樣組成的:<formaction="提交地址"> 表單內(nèi)容(包括按鈕、輸入框、選擇框等)</form>表單標(biāo)簽表單最基本的標(biāo)簽是<input>標(biāo)簽,該標(biāo)簽可以用來(lái)顯示輸入框和按鈕等表單元素。它的屬性type決定了表單元素的類型,可以為以下的值:text:文本框,text也為type的默認(rèn)屬性password:密碼框radio:?jiǎn)芜x按鈕,可以將多個(gè)單選按鈕的name屬性設(shè)置相同,使其成為一組。checked屬性可設(shè)置默認(rèn)被選checkbox:復(fù)選框,checked屬性可設(shè)置默認(rèn)被選表單標(biāo)簽
reset:重置按鈕,按下之后,所有的表單元素內(nèi)容變?yōu)槟J(rèn)值button:普通按鈕submit:提交按鈕,按下之后,網(wǎng)頁(yè)會(huì)將表單的內(nèi)容提交給action設(shè)定的網(wǎng)頁(yè),action的值為空時(shí)提交給本頁(yè)image:圖片,但是點(diǎn)擊它的效果與提交按鈕一樣,都會(huì)提交表單表單標(biāo)簽表單中其他類型的表單元素還包括多行文本框和選擇菜單等。<textarea></textarea>表示多行文本框,可用rows屬性表示其行數(shù),cols屬性表示其列數(shù)。<select></select>表示下拉菜單,其中的選項(xiàng)使用<option>選項(xiàng)內(nèi)容</option>表示,multiple屬性可將其設(shè)置為可多選,size屬性的值為下拉菜單的顯示的項(xiàng)目數(shù)??蚣芸蚣艿膶懛ㄈ缦拢?/p>
<framesetcols="30%,70%"> <framesrc="left.html"noresizescrolling="no"name="left"></frame> <framesrc="right.html"noresizescrolling="no"name="right"></frame> </frameset>框架<frameset></frameset>的屬性有:rows:橫向分割網(wǎng)頁(yè)。屬性值決定了分割頁(yè)面之間的寬度的比值。cols:縱向分割網(wǎng)頁(yè)。屬性值決定了分割頁(yè)面之間的長(zhǎng)度的比值。border:框架邊框的寬度。當(dāng)值為0時(shí),表示沒(méi)有邊框。
注:<frameset></frameset>是可以嵌套使用的,所以可以構(gòu)造很多不同類型的頁(yè)面??蚣?lt;frame></frame>的屬性有:src:表示框架內(nèi)容的地址。noresize:表示該框架不可被用戶改變大小。scrolling:表示是否有滾動(dòng)條。本章結(jié)束本章總結(jié)靜態(tài)網(wǎng)頁(yè)制作HTML中的常見標(biāo)簽表格標(biāo)簽鏈接和圖片標(biāo)簽表單標(biāo)簽框架上機(jī)習(xí)題第3章JavaScript基礎(chǔ)本課教學(xué)內(nèi)容JavaScript簡(jiǎn)介JavaScript內(nèi)置對(duì)象JavaScript簡(jiǎn)介JavaScript是一種網(wǎng)頁(yè)腳本語(yǔ)言,雖然名字中含有Java,但它與Java語(yǔ)言是完全兩種不同的語(yǔ)言。不過(guò),JavaScript的語(yǔ)法與Java語(yǔ)言的語(yǔ)法非常類似
JavaScript簡(jiǎn)介JavaScript代碼可以很容易地嵌入到HTML頁(yè)面中。瀏覽器對(duì)JavaScript腳本程序進(jìn)行解釋執(zhí)行。第一個(gè)JavaScript程序JavaScript與Java一樣,對(duì)大小寫是敏感的在JavaScript中,注釋有三種寫法:一種是HTML注釋的寫法:<!—注釋內(nèi)容-->,還有兩種和Java語(yǔ)言相同,分別為:"http://單行注釋"和"/*多行注釋*/"第一個(gè)JavaScript程序除了可以將JavaScript代碼嵌入HTML中之外,還可以專門將JavaScript代碼寫在單獨(dú)的文件中:
window.alert("第一個(gè)JavaScript程序"); 然后在另外的HTML頁(yè)面中插入:
<scriptsrc="code.js"type="text/javascript"></script>
來(lái)導(dǎo)入該文件JavaScript語(yǔ)法變量定義JavaScript中的變量為弱變量類型,即變量的類型根據(jù)它被賦值的類型改變,定義一個(gè)變量使用的格式為:"var變量名",比如定義變量arg,就可以使用"vararg";如果將一個(gè)字符串賦給它,它就是String類型,如果將一個(gè)數(shù)組賦給它,它的類型也就是數(shù)組類型需要注意的是,JavaScript中變量未聲明就使用是不會(huì)報(bào)錯(cuò)的,但很容易出現(xiàn)不可預(yù)知的錯(cuò)誤,所以建議所有變量先聲明后使用。JavaScript語(yǔ)法變量定義JavaScript語(yǔ)法函數(shù)定義JavaScript中定義一個(gè)函數(shù)的基本格式是: function函數(shù)名(參數(shù)列表){ return值; } 也可以在使用中直接匿名定義: vararg1=function(參數(shù)列表){ return值; }JavaScript內(nèi)置對(duì)象除了在代碼里面進(jìn)行簡(jiǎn)單的編程之外,我們還可以通過(guò)JavaScript提供的內(nèi)置對(duì)象來(lái)對(duì)網(wǎng)頁(yè)進(jìn)行操作,內(nèi)置對(duì)象由瀏覽器提供,可以直接使用,不用事先定義。比如,在上例中的window.alert("第一個(gè)JavaScript程序"),其中window就是一個(gè)內(nèi)置對(duì)象JavaScript內(nèi)置對(duì)象使用最多的內(nèi)置對(duì)象有四個(gè),并且之后的學(xué)習(xí)也將主要圍繞著四個(gè)對(duì)象展開: window:負(fù)責(zé)操作瀏覽器窗口,負(fù)責(zé)窗口狀態(tài),開閉等 document:負(fù)責(zé)操作瀏覽器載入的文檔(HTML文件)。它從屬于window history:可以代替后退(前進(jìn))按鈕訪問(wèn)歷史記錄,從屬于windowlocation:訪問(wèn)地址欄,也是從屬于windowwindow對(duì)象window對(duì)象的作用有如下幾個(gè):出現(xiàn)提示框window對(duì)象可以跳出提示框。主要有如下功能:window.alert("內(nèi)容"):出現(xiàn)消息框window.confirm("內(nèi)容"):出現(xiàn)確認(rèn)框mpt("內(nèi)容"):出現(xiàn)輸入框window對(duì)象window對(duì)象的作用有如下幾個(gè):打開、關(guān)閉窗口 window.open()在網(wǎng)頁(yè)制作中使用非常廣泛,參數(shù)有3個(gè),第1個(gè)是新窗口的地址,第2個(gè)是新窗口名稱,第3個(gè)是新窗口狀態(tài),其中新窗口狀態(tài)的屬性可設(shè)置的有: toolbar:是否有工具欄,可選1和0 location:是否有地址欄,可選1和0 status:是否有狀態(tài)欄,可選1和0
window對(duì)象window對(duì)象的作用有如下幾個(gè):打開、關(guān)閉窗口 menubar:是否有菜單條,可選1和0 scrollbars::是否有滾動(dòng)條,可選1和0 resizable::是否有可改變大小,可選1和0 width,height:窗口的寬度和高度,用像素表示 left,top:窗口左上角相對(duì)于桌面左上角的x和y坐標(biāo)。 各屬性值用逗號(hào)隔開。如:
newWindow=window.open("window1.html","new1", "toolbar=0,width=300,height=300,top=500,left=500");
window對(duì)象window對(duì)象的作用有如下幾個(gè):定時(shí)器window對(duì)象負(fù)責(zé)管理和控制頁(yè)面的定時(shí)器,定時(shí)器的作用是讓某個(gè)函數(shù)隔一段時(shí)間之后運(yùn)行一次,格式為:
timer=window.setTimeout("需要運(yùn)行的函數(shù)","時(shí)間(用毫秒計(jì))");如果要清除定時(shí)器,則可以:
clearTimeout(timer);history對(duì)象history對(duì)象包含用戶的瀏覽歷史等信息,用到這個(gè)對(duì)象的原因,是因?yàn)樗梢源婧笸?前進(jìn))按鈕訪問(wèn)歷史記錄,該對(duì)象從屬于window。history對(duì)象history最常用的函數(shù)為:history.back():返回上一頁(yè),相當(dāng)于點(diǎn)了瀏覽器上的后退按鈕history.forward():返回下一頁(yè),相當(dāng)于點(diǎn)了瀏覽器上的前進(jìn)按鈕window.history.go(n):n為整數(shù),正數(shù)表示向前進(jìn)n格頁(yè)面,負(fù)數(shù)表示向后退n格頁(yè)面document對(duì)象document對(duì)象從屬于window,其功能如下:在網(wǎng)頁(yè)上輸出writeln()函數(shù)為輸出一些簡(jiǎn)單卻重復(fù)的代碼提供很大的便利,在下面一個(gè)例子中,將要使用表格顯示出一個(gè)8*8的國(guó)際象棋棋盤,正常的方法需要寫一個(gè)8行8列的表格代碼,那樣會(huì)使源代碼非常的冗長(zhǎng),借助writeln()和循環(huán)方法,省去了很多HTML代碼的編寫。document對(duì)象document對(duì)象document對(duì)象從屬于window,其功能如下:設(shè)置網(wǎng)頁(yè)的屬性document可以進(jìn)行一些簡(jiǎn)單網(wǎng)頁(yè)屬性的設(shè)置,如網(wǎng)頁(yè)標(biāo)題、顏色等,并且可以得到網(wǎng)頁(yè)的某些屬性,如當(dāng)前地址。比較常用的有:通過(guò)document.title來(lái)訪問(wèn)標(biāo)題,通過(guò)document.location來(lái)獲取網(wǎng)頁(yè)當(dāng)前的地址document對(duì)象document對(duì)象從屬于window,其功能如下:訪問(wèn)文檔元素,特別是表單元素document可以訪問(wèn)文檔中的元素(如圖片、表單、表單中的控件等),前提是元素的name屬性是確定的。訪問(wèn)方法為:document.元素名.子元素名。比如,名為form1的表單中有一個(gè)文本框account,其中的內(nèi)容可以用如下代碼獲得:
varaccount=document.form1.account.value;
location對(duì)象location對(duì)象可以訪問(wèn)瀏覽器地址欄,也是從屬于window,最常見功能就是跳轉(zhuǎn)到另一個(gè)網(wǎng)頁(yè)。跳轉(zhuǎn)的方法就是修改location的href屬性。如:window.location.href=”page.html”location對(duì)象location對(duì)象另一個(gè)比較常見的應(yīng)用是定時(shí)跳轉(zhuǎn)。需要結(jié)合window的定時(shí)器使用。具體代碼見課本示例。本章結(jié)束本章總結(jié)JavaScript簡(jiǎn)介JavaScript內(nèi)置對(duì)象上機(jī)習(xí)題第4章JSP基本語(yǔ)法本課教學(xué)內(nèi)容第一個(gè)JSP頁(yè)面注釋jsp表達(dá)式、程序段和聲明URL傳值jsp指令和動(dòng)作第一個(gè)JSP頁(yè)面JSP屬于動(dòng)態(tài)網(wǎng)頁(yè),動(dòng)態(tài)網(wǎng)頁(yè)隨時(shí)都可以遇到。當(dāng)在google上輸入關(guān)鍵詞,如"Java"時(shí),提交搜索,google能夠?qū)⑺信cJava有關(guān)的搜索結(jié)果呈現(xiàn)在頁(yè)面上。此時(shí),google在服務(wù)器端進(jìn)行了一次搜索工作,這次搜索工作顯然不可能是人工完成的,人工不可能在幾秒的時(shí)間之內(nèi),搜索到成千上萬(wàn)的結(jié)果。因此,搜索過(guò)程是程序完成的,程序進(jìn)行了查詢數(shù)據(jù)庫(kù)的操作。HTML不能夠查詢數(shù)據(jù)庫(kù),Java代碼卻訪問(wèn)數(shù)據(jù)庫(kù)。因此,在HTML代碼中間混合Java代碼,就能夠讓網(wǎng)頁(yè)擁有動(dòng)態(tài)的功能。而嵌入了Java代碼的網(wǎng)頁(yè),就是JSP。JSP與HTML區(qū)別JSP和HTML有什么區(qū)別?
HTML頁(yè)面是靜態(tài)頁(yè)面,也就是事先由用戶寫好放在服務(wù)器上,由Web服務(wù)器向客戶端發(fā)送。JSP頁(yè)面是由JSP容器執(zhí)行該頁(yè)面的Java代碼部分,然后,實(shí)時(shí)生成的HTML頁(yè)面,因而說(shuō)其是服務(wù)器端動(dòng)態(tài)頁(yè)面。JSP與JavaScript區(qū)別頁(yè)面效果,用JavaScript也能夠?qū)崿F(xiàn),有何區(qū)別?最大的區(qū)別是:JavaScript源代碼是被服務(wù)器發(fā)送到客戶端,由客戶端執(zhí)行,因此,客戶端可以看到JavaScript源代碼;而Java代碼卻不會(huì)。注釋JSP注釋可以分為兩類:一類是能發(fā)送給客戶端,可以在源代碼文件中顯示出其內(nèi)容。主要是以HTML注釋語(yǔ)法出現(xiàn)。格式為:<!--注釋內(nèi)容-->注釋另一類是不能發(fā)送給客戶端的,也就是說(shuō)不會(huì)在客戶端的源代碼文件中顯示其內(nèi)容,僅提供給程序員閱讀的,分為兩種:
JSP注釋語(yǔ)法:<%--注釋內(nèi)容--%>Java代碼注釋://注釋內(nèi)容 /*注釋內(nèi)容*/表達(dá)式JSP表達(dá)式的作用是定義JSP的一些輸出。表達(dá)式基本語(yǔ)法如下所示: <%=變量/返回值/表達(dá)式%>JSP表達(dá)式的作用是將其里面內(nèi)容所運(yùn)算的結(jié)果輸出到客戶端表達(dá)式例:“<%=msg%>”是JSP表達(dá)式,即將msg內(nèi)容輸出給客戶端。等價(jià)于“<%out.print(msg);%>”。表達(dá)式使用JSP表達(dá)式,需要注意幾個(gè)細(xì)節(jié):JSP表達(dá)式中不能用";"結(jié)束在JSP表達(dá)式中不能出現(xiàn)多條語(yǔ)句JSP表達(dá)式的內(nèi)容一定是字符串類型,或者能通過(guò)toString()函數(shù)轉(zhuǎn)換成字符串的形式
*詳細(xì)代碼示例見課本程序段如果需要在JSP程序中既要輸出數(shù)據(jù),也要實(shí)現(xiàn)定義變量等一系列復(fù)雜的邏輯操作,表達(dá)式是不能滿足要求的,這時(shí)候需要JSP程序段。實(shí)際上,JSP程序段就是插入到JSP程序的Java代碼段。程序段JSP程序段的用法如下:
<%Java代碼%>不能在JSP程序段中定義方法。JSP中可以放入HTML,也可以放入JSP程序段和JSP表達(dá)式,可以靈活地混合使用。JSP聲明JSP中提供了聲明,JSP聲明中可以定義網(wǎng)頁(yè)中的全局變量,這些變量在JSP頁(yè)面中的任何地方都能夠使用。在實(shí)際的應(yīng)用中,方法、頁(yè)面全局變量、甚至類的聲明都可以放在JSP聲明部分。JSP聲明使用方法如下:
<%!代碼%>可以看到其與JSP程序段的用法相似(只是多了一個(gè)感嘆號(hào)),但功能卻有所不同。在JSP程序段中定義的變量只能先聲明后使用。而JSP聲明中定義的變量是網(wǎng)頁(yè)級(jí)別的,系統(tǒng)會(huì)優(yōu)先執(zhí)行,也就是說(shuō)使用JSP聲明可以在JSP的任何地方定義變量。JSP聲明使用JSP聲明時(shí),要注意:在JSP聲明中,只能定義,不能實(shí)現(xiàn)控制邏輯。如:不能在其中使用out.println作輸出操作。URL傳值HTTP是無(wú)狀態(tài)的協(xié)議。Web頁(yè)面本身無(wú)法向下一個(gè)頁(yè)面?zhèn)鬟f信息,如果需要讓下一個(gè)頁(yè)面得知該頁(yè)面中的值,除非通過(guò)服務(wù)器。Web頁(yè)面之間傳遞數(shù)據(jù),是Web程序的重要功能,其流程如圖:URL傳值客戶端頁(yè)面1輸入guokehua客戶端頁(yè)面2顯示guokehuaP2發(fā)送guokehua響應(yīng)服務(wù)器URL傳值URL,通俗地說(shuō),就是網(wǎng)址。如:http://localhost:8080/Prj04/page.jsp,表示訪問(wèn)項(xiàng)目Prj04中的page.jsp,但是還可以在該頁(yè)面后面給出一些參數(shù),格式是,在原url后面添加:
?參數(shù)名1=參數(shù)值1&參數(shù)名2=參數(shù)值2&……如:http://localhost:8080/Prj04/page.jsp?m=3&n=5表示訪問(wèn)http://localhost:8080/Prj04/page.jsp,并給其傳送參數(shù)m,值為3,參數(shù)n,值為5。URL傳值在http://localhost:8080/Prj04/page.jsp中獲得m和n的方法是:<%//獲得參數(shù)m,賦值給strStringstr=request.getParameter("m");%>URL傳值URL傳值的局限性:傳輸?shù)臄?shù)據(jù)只能是字符串,對(duì)數(shù)據(jù)類型具有一定限制傳輸數(shù)據(jù)的值會(huì)在瀏覽器地址欄里面被看到, 秘密性要求很嚴(yán)格的數(shù)據(jù)(如密碼),不應(yīng)該用URL方法來(lái)傳值URL傳值URL傳值的優(yōu)勢(shì): 簡(jiǎn)單性和平臺(tái)支持的多樣性(沒(méi)有瀏覽器不支持URL),很多程序還是用URL傳值比較方便JSP指令和動(dòng)作JSP指令告訴JSP引擎對(duì)JSP頁(yè)面如何編譯,不包含控制邏輯,不會(huì)產(chǎn)生任何可見的輸出。其用法如下:
<%@指令類別屬性1="屬性值1"屬性n="屬性值n"%>*注意,屬性名大小寫是敏感的JSP指令和動(dòng)作JSP包含三個(gè)指令:page、include和taglib。其中,使用最多的是page指令和include指令JSP指令page指令的作用有:導(dǎo)入包:<%@pageimport="包名.類名"%>設(shè)定字符集:
<%@pagepageEncoding="編碼類名"%>JSP指令page指令的作用有:設(shè)定錯(cuò)誤頁(yè)面:
在發(fā)生異常的頁(yè)面上寫:<%@pageerrorPage="anErrorPage.jsp"%>
在anErrorPage.jsp頁(yè)面上寫:<%@pageisErrorPage="true"%>JSP指令page指令的作用有:設(shè)定MIME類型和字符編碼:<%@pagecontentType="MIME類型;charset=字符編碼"%>JSP指令在實(shí)際的應(yīng)用開發(fā)中經(jīng)常會(huì)遇到這樣的情況:在項(xiàng)目的每一個(gè)頁(yè)面底下都需要顯示公司的地址和圖標(biāo)信息。顯然,不可能在每一個(gè)網(wǎng)頁(yè)都編寫一次顯示該信息的代碼。為了保證代碼重用,可以使用include指令解決該需求。JSP指令include指令可以在JSP程序中插入多個(gè)外部文件,這些文件可以是JSP、HTML或者Java程序,甚至是文本。編譯時(shí),include指令就會(huì)把相應(yīng)的文件包含進(jìn)主文件。其語(yǔ)法格式如下:<%@includefile="文件名"%>JSP動(dòng)作JSP動(dòng)作指使用XML語(yǔ)法格式的標(biāo)記來(lái)控制服務(wù)器的行為。其用法如下:<jsp:動(dòng)作名屬性1="屬性值1"屬性n="屬性值n"/><jsp:動(dòng)作名>相關(guān)內(nèi)容</jsp:動(dòng)作名>
JSP動(dòng)作JSP動(dòng)作包括:1.jsp:include:當(dāng)頁(yè)面被請(qǐng)求的時(shí)候引入一個(gè)文件。2.jsp:forward:將請(qǐng)求轉(zhuǎn)到另外一個(gè)頁(yè)面。3.jsp:useBean:獲得JavaBean的一個(gè)實(shí)例。4.jsp:setProperty:設(shè)置JavaBean的屬性。5.jsp:getProperty:獲得JavaBean的屬性。6.jsp:plugin根據(jù)瀏覽器類型為Java插件生成OBJECT或EMBED兩種標(biāo)記。JSP動(dòng)作兩個(gè)常見的JSP動(dòng)作:jsp:include:當(dāng)頁(yè)面被請(qǐng)求時(shí)引入一個(gè)文件 <jsp:includepage="文件名"/>或者<jsp:includepage="文件名">相關(guān)標(biāo)簽</jsp:include>JSP動(dòng)作include動(dòng)作和include指令的區(qū)別?1.include動(dòng)作只會(huì)把文件中的輸出包含進(jìn)來(lái)。因此,前一節(jié)中提及到的被包含頁(yè)面與本頁(yè)面有相同變量的問(wèn)題,在此處不會(huì)出現(xiàn)問(wèn)題。2.include動(dòng)作還會(huì)自動(dòng)檢查被包含文件的變化。也就是說(shuō),當(dāng)被包含資源的內(nèi)容發(fā)生變化的時(shí)候,使用include指令的話,服務(wù)器可能不會(huì)檢測(cè)到。但是,include動(dòng)作則可以在每次客戶端發(fā)出請(qǐng)求時(shí)重新把資源包含進(jìn)來(lái),進(jìn)行實(shí)時(shí)的更新。JSP動(dòng)作jsp:forward:可以實(shí)現(xiàn)跳轉(zhuǎn)。<jsp:forwardpage="文件名"/>顯然,page屬性就是指定要跳轉(zhuǎn)到的目標(biāo)文件。當(dāng)該forward動(dòng)作被執(zhí)行后,當(dāng)前的頁(yè)面將不再被執(zhí)行,而是去執(zhí)行指定的目標(biāo)頁(yè)面。本章結(jié)束本章總結(jié)第一個(gè)JSP頁(yè)面注釋jsp表達(dá)式、程序段和聲明URL傳值jsp指令和動(dòng)作上機(jī)習(xí)題第5章表單開發(fā)本課教學(xué)內(nèi)容認(rèn)識(shí)表單單一表單元素?cái)?shù)據(jù)的獲取捆綁表單元素?cái)?shù)據(jù)的獲取隱藏表單其他問(wèn)題表單開發(fā)表單是用戶和服務(wù)器之間進(jìn)行信息交互的重要手段,有了表單,JSP程序才可以更加豐富多彩。表單是一種可以由用戶輸入,并提交給服務(wù)器端的一個(gè)圖形界面。表單開發(fā)表單有如下性質(zhì):表單中可以輸入一些內(nèi)容,這些輸入功能由控件提供,叫做表單元素表單中一般都有一個(gè)按鈕負(fù)責(zé)提交點(diǎn)擊提交按鈕,表單元素中的內(nèi)容會(huì)提交給服務(wù)器端表單元素放在<form></form>之間表單開發(fā)表單是提交給服務(wù)器的,如何確定到底提交給哪一個(gè)界面?用<form>中的action屬性確定。如:<formaction="page.jsp"> 請(qǐng)您輸入賬號(hào):<inputname="account"type="text"><BR> 請(qǐng)您輸入密碼:<inputname="password"type="password"><BR> <inputtype="submit"value="登錄"> </form>表示該表單中輸入的內(nèi)容,提交給page.jsp去運(yùn)行。表單開發(fā)page.jsp如何獲取提交過(guò)來(lái)的值?用request對(duì)象。如:<%//獲得表單中name=account的表單元素中輸入的值,賦值給strStringstr=request.getParameter("account");%>注意:如果表單中沒(méi)有name=account的表單元素,str為null;如果在表單元素account中沒(méi)有輸入任何內(nèi)容就提交,str為""。表單開發(fā)<inputtype="submit"value="登錄">表示提交按鈕,可以寫普通按鈕嗎?不行,如果將該按鈕改為:<inputtype="button"value="登錄">,顯示效果一樣,但是點(diǎn)擊,沒(méi)有提交功能。不過(guò)可以用JavaScript進(jìn)行提交。單一表單元素?cái)?shù)據(jù)的獲取單一表單元素,是指表單元素的值送給服務(wù)器端時(shí),僅僅是一個(gè)變量。這種情況下的表單元素主要有:文本框、密碼框、多行文本框、單選按鈕、下拉菜單等。單一表單元素?cái)?shù)據(jù)的獲取文本框、密碼框、多行文本框、單選按鈕和下拉菜單,其中的內(nèi)容的獲取方法均相同,利用request.getParameter("表單元素名")方法獲得一個(gè)字符串。*具體代碼示例見課本捆綁表單元素?cái)?shù)據(jù)的獲取捆綁表單元素,是指多個(gè)同名表單元素的值送給服務(wù)器端時(shí),是一個(gè)捆綁的數(shù)組。這種情況下的表單元素主要有:復(fù)選框、多選列表框、其他同名表單元素等。捆綁表單元素?cái)?shù)據(jù)的獲取具體獲得方法和一般表單元素類似,但在獲取數(shù)據(jù)時(shí),利用request.getParameterValues("表單元素名")方法來(lái)獲得字符串?dāng)?shù)組。*具體代碼示例見課本獲取其他同名表單元素中的數(shù)據(jù)
多個(gè)同名文本框是如何存儲(chǔ)在獲取到的數(shù)組里的?以文本框在源代碼中出現(xiàn)的順序,從數(shù)組的第0位開始向后放置。隱藏表單例子:頁(yè)面1中定義了一個(gè)數(shù)值變量,并顯示其平方;要求在頁(yè)面2中顯示其立方。很明顯,頁(yè)面2必須知道頁(yè)面1中定義的那個(gè)變量。可以用URL傳值。但是通過(guò)URL方法,傳遞的數(shù)據(jù)可能被看到。為了避免這個(gè)問(wèn)題,我們可以用表單將頁(yè)面1中的變量傳給頁(yè)面2,這個(gè)表單就可以設(shè)定為頁(yè)面1中的隱藏表單。隱藏表單網(wǎng)頁(yè)制作中,input有一type="hidden"的選項(xiàng),它是隱藏在網(wǎng)頁(yè)中的一個(gè)表單元素,并不在網(wǎng)頁(yè)中顯示出來(lái)。這就是實(shí)現(xiàn)隱藏表單的方法。實(shí)現(xiàn)方法:隱藏表單此時(shí)瀏覽器地址欄上的地址數(shù)據(jù)還是能夠被看到。解決該問(wèn)題的方法是將form的action屬性設(shè)置為post(默認(rèn)為get)解決數(shù)據(jù)傳輸安全問(wèn)題方法:隱藏表單隱藏表單的弊端和URL方法類似,該方法傳輸?shù)臄?shù)據(jù)只能是字符串,對(duì)數(shù)據(jù)類型具有一定限制傳輸數(shù)據(jù)的值雖然在瀏覽器地址欄內(nèi)不被看到,但是在客戶端源代碼里面也會(huì)被看到*具體代碼示例見課本用JavaScript進(jìn)行提交有時(shí)候,可能要對(duì)表單中的輸入進(jìn)行一些驗(yàn)證。如在登錄表單中,需要輸入的賬號(hào)密碼不能為空。因此,當(dāng)點(diǎn)擊提交按鈕時(shí),不能馬上提交,應(yīng)該調(diào)用JavaScript進(jìn)行驗(yàn)證,然后進(jìn)行提交。因此,提交按鈕的類型不能被設(shè)置為submit,而應(yīng)該設(shè)置為button。*具體代碼示例見課本中文亂碼問(wèn)題如果使用的是Tomcat服務(wù)器,在提交過(guò)程中,如果提交的內(nèi)容中含有中文,經(jīng)常會(huì)出現(xiàn)中文亂碼問(wèn)題。
中文亂碼問(wèn)題中文無(wú)法顯示 沒(méi)有把文件頭上的字符集設(shè)置為中文字符集。一定要保證文件頭上寫明:<%@pagelanguage="java"pageEncoding="gb2312"%>或 <%@pagelanguage="java"contentType="text/html;charset=gb2312"%>
中文亂碼問(wèn)題提交過(guò)程中顯示亂碼,有3種方法解決這個(gè)問(wèn)題將其轉(zhuǎn)成gb2312格式直接修改request的編碼利用過(guò)濾器
中文亂碼問(wèn)題將其轉(zhuǎn)成gb2312格式方法如下:變量(字符串)=newString(變量(字符串).getBytes("ISO-8859-1"),"gb2312")中文亂碼問(wèn)題直接修改request的編碼可以將request的編碼修改為支持中文的編碼,這樣,整個(gè)頁(yè)面中的請(qǐng)求,都可以自動(dòng)轉(zhuǎn)為中文request.setCharacterEncoding("gb2312")中文亂碼問(wèn)題利用過(guò)濾器 利用過(guò)濾器,可以對(duì)整個(gè)Web應(yīng)用進(jìn)行統(tǒng)一的編碼過(guò)濾,比較方便。該內(nèi)容在后面的章節(jié)中提到*具體代碼實(shí)例見課本本章結(jié)束本章總結(jié)表單開發(fā)隱藏表單其他問(wèn)題上機(jī)習(xí)題第6章JSP訪問(wèn)數(shù)據(jù)庫(kù)本課教學(xué)內(nèi)容JDBC簡(jiǎn)介建立ODBC數(shù)據(jù)源JDBC操作使用PreparedStatement事務(wù)使用廠商驅(qū)動(dòng)進(jìn)行數(shù)據(jù)庫(kù)連接JDBC簡(jiǎn)介商業(yè)應(yīng)用的后臺(tái)數(shù)據(jù)一般存放在數(shù)據(jù)庫(kù)中,很明顯,可以通過(guò)Java代碼來(lái)訪問(wèn)數(shù)據(jù)庫(kù)。在Java技術(shù)系列中,訪問(wèn)數(shù)據(jù)庫(kù)的技術(shù)叫做JDBC,它提供了一系列的API,讓Java語(yǔ)言編寫的代碼連接數(shù)據(jù)庫(kù),對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行添加、刪除、修改和查詢JDBC簡(jiǎn)介JDBC中以下類或接口java.sql.Connection:負(fù)責(zé)連接數(shù)據(jù)庫(kù)
java.sql.Statement:負(fù)責(zé)執(zhí)行數(shù)據(jù)庫(kù)SQL語(yǔ)句java.sql.ResultSet:負(fù)責(zé)存放查詢結(jié)果JDBC簡(jiǎn)介針對(duì)不同類型的數(shù)據(jù)庫(kù),JDBC機(jī)制中提供了"驅(qū)動(dòng)程序"的的概念。對(duì)于不同的數(shù)據(jù)庫(kù),程序只需要使用不同的驅(qū)動(dòng)廠商驅(qū)動(dòng)連接數(shù)據(jù)庫(kù)JDBC簡(jiǎn)介安裝數(shù)據(jù)庫(kù)廠商驅(qū)動(dòng),需要去各自的數(shù)據(jù)庫(kù)廠商網(wǎng)站下載驅(qū)動(dòng)包,用戶也許覺(jué)得很麻煩。此時(shí),微軟公司提供了一個(gè)解決的方案。在微軟公司的Windows中,預(yù)先設(shè)計(jì)了一個(gè)ODBC(OpenDatabaseConnectivity,開放數(shù)據(jù)庫(kù)互連)功能,由于ODBC是微軟公司的產(chǎn)品,因此它幾乎可以連接到所有在Windows平臺(tái)下運(yùn)行的數(shù)據(jù)庫(kù),由它連接到特定的數(shù)據(jù)庫(kù),不需要具體的驅(qū)動(dòng)。而JDBC就只需要連接到ODBC就可以了
JDBC簡(jiǎn)介ODBC驅(qū)動(dòng)連接數(shù)據(jù)庫(kù)建立ODBC數(shù)據(jù)源在使用ODBC之前,需要配置ODBC的數(shù)據(jù)源,讓ODBC知道連接的具體數(shù)據(jù)庫(kù)ODBC支持連接到各種數(shù)據(jù)庫(kù)。如Oracle、MySQL、MSSQLServer等,具體的設(shè)置詳見課本圖解過(guò)程建立ODBC數(shù)據(jù)源在配置時(shí),要注意:access的數(shù)據(jù)源驅(qū)動(dòng)器都是32位的,64位機(jī)上可能會(huì)找不到access數(shù)據(jù)源驅(qū)動(dòng)器。對(duì)于64位機(jī),可以打開32位版本的ODBC管理工具,其界面和設(shè)置過(guò)程與32位的相同。由于JDK1.8及以上的版本都已經(jīng)不再包含access橋接驅(qū)動(dòng),在使用JDBC-ODBC橋接方式時(shí),需要下載access驅(qū)動(dòng)的jar包,具體操作方法大家可以參見其他詳細(xì)文檔。建立ODBC數(shù)據(jù)源操作如下:首先在控制面板中選擇"管理工具",雙擊"數(shù)據(jù)源(ODBC)圖標(biāo)"建立ODBC數(shù)據(jù)源操作如下:在"ODBC數(shù)據(jù)源管理器"的"系統(tǒng)DSN"選項(xiàng)卡中單擊"添加"按鈕建立ODBC數(shù)據(jù)源操作如下: 從彈出的"創(chuàng)建新數(shù)據(jù)源"窗口的數(shù)據(jù)源名稱列表中選擇"MicrosoftAccesDriver(*.mdb)"并單擊"完成"按鈕建立ODBC數(shù)據(jù)源操作如下:在彈出的"ODBCMicrosoftAccess安裝"窗口的"數(shù)據(jù)源名"文本框輸入自定義的數(shù)據(jù)源名稱,然后點(diǎn)擊"選擇"按鈕,選擇Access數(shù)據(jù)庫(kù)所在的目錄,得到的結(jié)果如圖JDBC操作JDBC的操作分為4個(gè)步驟:通過(guò)JDBC連接到ODBC,并獲取連接對(duì)象Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectionconn=DriverManager.getConnection("jdbc:odbc:DSSchool");JDBC操作
使用Statement接口運(yùn)行SQL語(yǔ)句Statementstat=conn.createStatement();stat.executeQuery(SQL語(yǔ)句);//查詢或者
stat.executeUpdate(SQL語(yǔ)句);//添加、刪除或修改
JDBC操作處理SQL語(yǔ)句運(yùn)行結(jié)果關(guān)閉數(shù)據(jù)庫(kù)連接:stat.close();conn.close();添加數(shù)據(jù)具體添加案例見課本在這里,重點(diǎn)介紹下面一句代碼: inti=stat.executeUpdate(sql);
它返回一個(gè)整型,意思為這條sql語(yǔ)句執(zhí)行受影響的行數(shù),即成功添加的條數(shù)刪除、修改數(shù)據(jù)具體代碼案例見課本兩種操作均調(diào)用stat.executeUpdate(sql),并返回一個(gè)整型量查詢數(shù)據(jù)具體代碼案例見課本查詢格式: ResultSetrs=stat.executeQuery(sql);查詢到的結(jié)果放入ResultSet中,實(shí)際上是一個(gè)小表格查詢數(shù)據(jù)游標(biāo) 是在ResultSet中一個(gè)可以移動(dòng)的指針,它指向一行數(shù)據(jù)。初始時(shí)指向第一行的前一行,實(shí)際上不指向任何數(shù)據(jù)。rs.next()可以將游標(biāo)移到下一行,它的返回值是一個(gè)布爾類型,即如果下一行有數(shù)據(jù)則返回為true,否則為flase。很明顯,可以使用rs.next()配上while循環(huán)來(lái)對(duì)結(jié)果進(jìn)行遍歷查詢數(shù)據(jù)游標(biāo) 當(dāng)游標(biāo)指向某一行,可以通過(guò)ResultSet的getXXX("列名")方法得到這一行的某個(gè)數(shù)據(jù), XXX是該列的數(shù)據(jù)類型,可以是String,也可以是int等,但是所有類型的數(shù)據(jù)都可以用getString()方法獲得。除了通過(guò)列名獲得數(shù)據(jù)外,還可以通過(guò)列的編號(hào)來(lái)獲得查詢數(shù)據(jù)關(guān)于游標(biāo)的注意 游標(biāo)的初始值并不是指向第1行數(shù)據(jù),而是指向第1行的前面那條數(shù)據(jù)。所以必須要運(yùn)行一次next()函數(shù)之后,才能從開始取數(shù)據(jù),如果強(qiáng)行取則會(huì)找不到該列而報(bào)錯(cuò)查詢數(shù)據(jù)關(guān)于游標(biāo)的注意從某一行中通過(guò)getXXX()方法取數(shù)據(jù)每一列只能取一次,超過(guò)一次,程序?qū)?huì)報(bào)錯(cuò),如果需要重復(fù)使用某列數(shù)據(jù),可以先定義一個(gè)變量,將取出的數(shù)據(jù)賦予它,再重復(fù)使用使用PreparedStatement引出 以添加數(shù)據(jù)為例,在很多情況下,具體需要添加的值,是由客戶自己輸入的,因此,應(yīng)該是一個(gè)個(gè)變量。該情況下,SQL語(yǔ)句的寫法就比較麻煩,而且依賴了變量,比較容易出錯(cuò)PreparedStatement解決了這個(gè)問(wèn)題
使用PreparedStatementPreparedStatement是Statement的子接口,功能與Statement類似它在sql語(yǔ)句中使用了?代替了需要插入的參數(shù) 用PreperedStatement的setString(n,參數(shù))方法可以將第n個(gè)?用傳進(jìn)的參數(shù)代替。這樣做增加了程序的可維護(hù)性,也增加了程序的安全性事務(wù)在銀行轉(zhuǎn)賬時(shí),要對(duì)數(shù)據(jù)庫(kù)進(jìn)行兩個(gè)操作,即將一個(gè)賬戶的錢減少,將另一個(gè)賬戶的錢增多。但是由于操作的先后順序,如果在兩個(gè)操作之間發(fā)生故障,則會(huì)導(dǎo)致數(shù)據(jù)不一致。因此,需要設(shè)計(jì)一個(gè)事務(wù),在兩條語(yǔ)句都被執(zhí)行成功后,數(shù)據(jù)修改才被真正提交(Commit)放入數(shù)據(jù)庫(kù),否則數(shù)據(jù)操作回滾(Rollback)事務(wù)在默認(rèn)情況下,executeUpdate函數(shù)會(huì)在數(shù)據(jù)庫(kù)中提交改變的結(jié)果,此時(shí),可以用Connection來(lái)定義該函數(shù)是否自動(dòng)提交改變結(jié)果,并進(jìn)行事務(wù)的提交或者回滾使用廠商驅(qū)動(dòng)進(jìn)行數(shù)據(jù)庫(kù)連接缺點(diǎn):這類驅(qū)動(dòng)程序的彈性較差,由于是數(shù)據(jù)庫(kù)廠商自己提供的專屬驅(qū)動(dòng)程序,往往只適用于自己的數(shù)據(jù)庫(kù)系統(tǒng),甚至只適合某個(gè)版本的數(shù)據(jù)庫(kù)系統(tǒng)。如果后臺(tái)數(shù)據(jù)庫(kù)換了一個(gè)或者版本升級(jí)了,則就有可能需要更換數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序優(yōu)點(diǎn):跨平臺(tái)使用廠商驅(qū)動(dòng)進(jìn)行數(shù)據(jù)庫(kù)連接使用廠商驅(qū)動(dòng),有2個(gè)步驟: 到相應(yīng)的數(shù)據(jù)庫(kù)廠商網(wǎng)站上下載廠商驅(qū)動(dòng),或者從數(shù)據(jù)庫(kù)安裝目錄下找到相應(yīng)的廠商驅(qū)動(dòng)包,拷貝到項(xiàng)目的WEB-INF/lib下。在JDBC代碼中,設(shè)定特定的驅(qū)動(dòng)程序名稱和url,
不同的驅(qū)動(dòng)程序和不同的數(shù)據(jù)庫(kù)可以采用不同的驅(qū)動(dòng)名稱和url。使用廠商驅(qū)動(dòng)進(jìn)行數(shù)據(jù)庫(kù)連接常見數(shù)據(jù)庫(kù)的驅(qū)動(dòng)程序名稱和url如下 MSSQLServer:驅(qū)動(dòng)程序?yàn)椋?com.microsoft.jdbc.sqlserver.SQLServerDriver",url為:"jdbc:microsoft:sqlserver://[IP]:1433;DatabaseName=[DBName];user=[user];password=[password]"使用廠商驅(qū)動(dòng)進(jìn)行數(shù)據(jù)庫(kù)連接 Oracle:驅(qū)動(dòng)程序?yàn)椋?oracle.jdbc.driver.OracleDriver",url為:"jdbc:oracle:thin:@[ip]:1521:[sid]"使用廠商驅(qū)動(dòng)進(jìn)行數(shù)據(jù)庫(kù)連接 MySQL:驅(qū)動(dòng)程序?yàn)椋?com.mysql.jdbc.Driver",url為:"jdbc:mysql://localhost:3306/[DBName]"使用廠商驅(qū)動(dòng)進(jìn)行數(shù)據(jù)庫(kù)連接程序能夠正常工作的前提是:必須將相應(yīng)的包拷貝到Web項(xiàng)目中去,否則會(huì)拋出異常。本章結(jié)束本章總結(jié)ODBC數(shù)據(jù)源的配置 數(shù)據(jù)庫(kù)的增刪改查PreparedStatement和事務(wù)處理使用廠商驅(qū)動(dòng)上機(jī)習(xí)題第7章JSP內(nèi)置對(duì)象1本課教學(xué)內(nèi)容認(rèn)識(shí)JSP內(nèi)置對(duì)象out對(duì)象request對(duì)象response對(duì)象Cookie操作認(rèn)識(shí)JSP內(nèi)置對(duì)象內(nèi)置對(duì)象:指在JSP頁(yè)面中內(nèi)置的不需要定義就可以在網(wǎng)頁(yè)中直接使用的對(duì)象內(nèi)置對(duì)象預(yù)定義的原因:因?yàn)檫@些內(nèi)置對(duì)象有些能夠存儲(chǔ)參數(shù),有些能夠提供輸出,還有些能提供其他的功能,JSP程序員一般情況下使用這些內(nèi)置對(duì)象的頻率比較高認(rèn)識(shí)JSP內(nèi)置對(duì)象內(nèi)置對(duì)象特點(diǎn)內(nèi)置對(duì)象是自動(dòng)載入的,因此它不需要直接實(shí)例化內(nèi)置對(duì)象是通過(guò)Web容器來(lái)實(shí)現(xiàn)和管理的在所有的JSP頁(yè)面中,直接調(diào)用內(nèi)置對(duì)象都是合法的認(rèn)識(shí)JSP內(nèi)置對(duì)象JSP規(guī)范中定義了九種內(nèi)置對(duì)象,本章主要介紹前五種out對(duì)象:負(fù)責(zé)管理對(duì)客戶端的輸出request對(duì)象:負(fù)責(zé)得到客戶端的請(qǐng)求信息response對(duì)象:負(fù)責(zé)向客戶端發(fā)出響應(yīng)session對(duì)象:負(fù)責(zé)保存同一客戶端一次會(huì)話過(guò)程中的一些信息application對(duì)象:表示整個(gè)應(yīng)用的環(huán)境的信息認(rèn)識(shí)JSP內(nèi)置對(duì)象exception對(duì)象:表示頁(yè)面上發(fā)生的異常,可以通過(guò)它獲得頁(yè)面異常信息page對(duì)象:表示的是當(dāng)前JSP頁(yè)面本身,就像Java類定義中的this一樣pageContext對(duì)象:表示的是此JSP的上下文config對(duì)象:表示此JSP的ServletConfigout對(duì)象out對(duì)象,對(duì)應(yīng)的類型是javax.servlet.jsp.JspWriterout對(duì)象的作用用來(lái)向客戶端輸出各種數(shù)據(jù)類型的內(nèi)容對(duì)應(yīng)用服務(wù)器上的輸出緩沖區(qū)進(jìn)行管理out對(duì)象out輸出的主要有2個(gè)方法:voidprint()voidprintln()out對(duì)象out對(duì)象一些常用的與管理緩沖區(qū)有關(guān)的函數(shù):voidclose():關(guān)閉輸出流,從而可以強(qiáng)制終止當(dāng)前頁(yè)面的剩余部分向?yàn)g覽器輸出voidclearBuffer():清除緩沖區(qū)里的數(shù)據(jù),并且把數(shù)據(jù)寫到客戶端去voidclear():清除緩沖區(qū)里的數(shù)據(jù),但不把數(shù)據(jù)寫到客戶端去out對(duì)象out對(duì)象一些常用的與管理緩沖區(qū)有關(guān)的函數(shù):intgetRemaining():獲取緩沖區(qū)中沒(méi)有被占用的空間的大小voidflush():輸出緩沖區(qū)的數(shù)據(jù)。out.flush()函數(shù)也會(huì)清除緩沖區(qū)中的數(shù)據(jù),但是此函數(shù)先將之前緩沖區(qū)的數(shù)據(jù)輸出至客戶端,然后再清除緩沖區(qū)的數(shù)據(jù)intgetBufferSize():獲得緩沖區(qū)的大小request對(duì)象request對(duì)應(yīng)類型是javax.servlet.http.HttpServletRequestrequest包含的方法StringgetMethod():得到提交方式StringgetRequestURI():得到請(qǐng)求的URL地址StringgetProtocol():得到協(xié)議名稱request對(duì)象request包含的方法StringgetServletPath():獲得客戶端請(qǐng)求服務(wù)器文件的路徑StringgetQueryString():得到URL的查詢部分,對(duì)post請(qǐng)求來(lái)說(shuō),該方法得不到任何信息request對(duì)象request包含的方法StringgetServerName():得到服務(wù)器的名稱StringgetServerPort():得到服務(wù)器口號(hào)StringgetRemoteAddr():得到客戶端的IP地址
*具體代碼示例見課本request對(duì)象request對(duì)象獲取客戶端得參數(shù)常用的是通過(guò)2個(gè)方法:StringgetParameter(Stringname):獲得客戶端傳送給服務(wù)器的name參數(shù)的值。當(dāng)傳遞給此函數(shù)的參數(shù)名沒(méi)有實(shí)際參數(shù)與之對(duì)應(yīng)時(shí),則返回nullString[]getParameterValues(Stringname):以字符串?dāng)?shù)組的形式返回指定參數(shù)所有值response對(duì)象response與reuqest是一對(duì)相對(duì)應(yīng)的內(nèi)置對(duì)象,response可以理解為客戶端的響應(yīng),request可以理解為客戶端的請(qǐng)求,二者所表示范圍是相對(duì)應(yīng)的2個(gè)部分,具有很好的對(duì)稱性。response對(duì)應(yīng)的類(接口)是:javax.servlet.http.HttpServletResponse??梢酝ㄟ^(guò)查找文檔中javax.servlet.http.HttpServletResponse來(lái)了解response的API利用response對(duì)象進(jìn)行重定向重定向:就是跳轉(zhuǎn)到另一個(gè)頁(yè)面重定向方法為:
response.sendRedirect(目標(biāo)頁(yè)面路徑); <jsp:forwardpage=""></jsp:forward>
兩種重定向方法的不同從瀏覽器的地址顯示上來(lái)看forward方法屬于服務(wù)器端去請(qǐng)求資源,服務(wù)器直接訪問(wèn)目標(biāo)地址,并對(duì)該目標(biāo)地址的響應(yīng)內(nèi)容進(jìn)行讀取,再把讀取的內(nèi)容發(fā)給瀏覽器,因此客戶端瀏覽器的地址不變兩種重定向方法的不同從瀏覽器的地址顯示上來(lái)看redirect是告訴客戶端,使瀏覽器知道去請(qǐng)求哪一個(gè)地址,相當(dāng)于客戶端重新請(qǐng)求一遍。所以地址顯示欄會(huì)變兩種重定向方法的不同從數(shù)據(jù)共享來(lái)看forward轉(zhuǎn)發(fā)的頁(yè),以及轉(zhuǎn)發(fā)到的目標(biāo)頁(yè)面能夠共享request里面的數(shù)據(jù)redirect轉(zhuǎn)發(fā)的頁(yè)以及轉(zhuǎn)發(fā)到的目標(biāo)頁(yè)面不能共享request里面的數(shù)據(jù)兩種重定向方法的不同從功能來(lái)看redirect能夠重定向到當(dāng)前應(yīng)用程序的其他源,而且還能夠重定向到同一個(gè)站點(diǎn)上的其他應(yīng)用程序中的資源,甚至是使用絕對(duì)URL重定向到其他站點(diǎn)的資源兩種重定向方法的不同從功能來(lái)看forward方法只能在同一個(gè)Web應(yīng)用程序內(nèi)的資源之間轉(zhuǎn)發(fā)請(qǐng)求,可以理解為服務(wù)器內(nèi)部的一種操作兩種重定向方法的不同從效率來(lái)看forward效率較高,因?yàn)樘D(zhuǎn)僅發(fā)生在服務(wù)器端redirect相對(duì)較低,因?yàn)轭愃朴谠龠M(jìn)行了一次請(qǐng)求使用頻率不是很高的一種重定向sendError():向客戶端發(fā)送HTTP狀態(tài)碼的出錯(cuò)信息使用頻率不是很高的一種重定向常見的錯(cuò)誤代碼有:400:BadRequest,請(qǐng)求出現(xiàn)語(yǔ)法錯(cuò)誤401:Unauthorized,客戶試圖未經(jīng)授權(quán)訪問(wèn)受密碼保護(hù)的頁(yè)面403:Forbidden,資源不可用404:NotFound,無(wú)法找到指定位置的資源500:InternalServerError,服務(wù)器遇到了無(wú)法預(yù)料的情況,不能完成客戶的請(qǐng)求利用response設(shè)置HTTP頭HTTP頭一般用來(lái)設(shè)置網(wǎng)頁(yè)的基本屬性response的setHeader()方法來(lái)進(jìn)行設(shè)置 response.setHeader("Pragma","No-cache"); response.setHeader("Cache-Control","no-cache"); response.setDateHeader("Expires",0);以上都是表示在客戶端緩存中不保存頁(yè)面的拷貝Cookie操作Cookie是一個(gè)小的文本數(shù)據(jù),由服務(wù)器端生成,發(fā)送給客戶端瀏覽器,客戶端瀏覽器如果設(shè)置為啟用Cookie,則會(huì)將這個(gè)小文本數(shù)據(jù)保存到某個(gè)目錄下的文本文件內(nèi)。下次登錄同一網(wǎng)站,客戶端瀏覽器則會(huì)自動(dòng)將Cookie讀入之后,傳給服務(wù)器端。一般情下,Cookie中的值是以key-value的形式進(jìn)行表達(dá)的Cookie操作Cookie操作主要用到以下幾個(gè)方法:response.addCookie(Cookiec):通過(guò)該方法,將Cookie寫入客戶端Cookie.setMaxAge(intsecond):通過(guò)該方法,設(shè)置Cookie的存活時(shí)間。參數(shù)表示存活Cookie操作從客戶端獲取Cookie內(nèi)容,主要通過(guò)以下方法:Cookie[]request.getCookies():讀取客戶端傳過(guò)來(lái)的Cookie,以數(shù)組形式返回Cookie的盜取盜取的方法:利用跨站腳本技術(shù),將信息發(fā)給目標(biāo)服務(wù)器;為了隱藏URL,甚至可以結(jié)合Ajax(異步Javascript和XML技術(shù))在后臺(tái)竊取CookieCookie的盜取通過(guò)某些軟件,竊取硬盤下的Cookie。一般說(shuō)來(lái),當(dāng)用戶訪問(wèn)完某站點(diǎn)后,Cookie文件會(huì)存在機(jī)器的某個(gè)文件夾下,因此可以通過(guò)某些盜取和分析軟件來(lái)盜取CookieCookieCookie在Web編程中應(yīng)用很廣的原因:Cookie的值能夠持久化,即使客戶端機(jī)器關(guān)閉,下次打開還是可以得到里面的值Cookie可以幫助服務(wù)器端保存多個(gè)狀態(tài)信息,但是不用服務(wù)器端專門分配存儲(chǔ)資源Cookie可以持久保持一些和客戶相關(guān)的信息解決Cookie安全的方法方法有以下幾種替代Cookie。將數(shù)據(jù)保存在服務(wù)器端,可選的是session方案及時(shí)刪除Cookie解決Cookie安全的方法要?jiǎng)h除一個(gè)已經(jīng)存在的Cookie,有以下幾種方法:給一個(gè)Cookie賦以空置設(shè)置Cookie的失效時(shí)間為當(dāng)前時(shí)間,讓該Cookie在當(dāng)前頁(yè)面的瀏覽完之后就被刪除了解決Cookie安全的方法通過(guò)瀏覽器刪除Cookie。如在IE中,可以選擇"工具"——"Internet選項(xiàng)"——"常規(guī)",在里面點(diǎn)擊"刪除Cookies",就可以刪除文件夾中的Cookie禁用Cookie。很多瀏覽器中都設(shè)置了禁用Cookie的方法,如IE中,可以在"工具"——"Internet選項(xiàng)"——"隱私"中,將隱私級(jí)別設(shè)置為禁用Cookie本章結(jié)束本章總結(jié)JSP中的內(nèi)置對(duì)象Cookie的使用方法上機(jī)習(xí)題第8章JSP內(nèi)置對(duì)象2本課教學(xué)內(nèi)容利用session開發(fā)購(gòu)物車session其他APIapplication對(duì)象其他對(duì)象利用session開發(fā)購(gòu)物車購(gòu)物車需求例子 想象用戶去購(gòu)物超市買東西時(shí),都會(huì)推一個(gè)購(gòu)物車,購(gòu)物車中包含了用戶所需要購(gòu)買的商品,用戶可以將商品添加到購(gòu)物車,也可將商品從購(gòu)物車中取出或刪除。用戶可以推著購(gòu)物車從這個(gè)專柜走到那個(gè)專柜,用戶也不用擔(dān)心別人的購(gòu)物車?yán)锩娴臇|西算到自己賬上,這在生活中已經(jīng)成為常識(shí)利用session開發(fā)購(gòu)物車購(gòu)物車的特點(diǎn)同一個(gè)用戶使用的是同一個(gè)購(gòu)物車不同的用戶使用的是不同的購(gòu)物車。否則,別人買的東西就會(huì)算到自己的賬上在不同貨架(頁(yè)面)之間進(jìn)行訪問(wèn)時(shí),購(gòu)物車中的內(nèi)容可以保持以上3點(diǎn)中,最關(guān)鍵的是“跨頁(yè)面保持”。利用session開發(fā)購(gòu)物車實(shí)際上,JSP中的內(nèi)置對(duì)象session,就是跨頁(yè)面保持的,當(dāng)訪問(wèn)網(wǎng)站時(shí),服務(wù)器端已經(jīng)分配了一個(gè)session對(duì)象給用戶使用,對(duì)于同一個(gè)用戶,不管在哪個(gè)頁(yè)面,他使用的都是同一個(gè)session。利用session開發(fā)購(gòu)物車session,是JSP九大內(nèi)置對(duì)象之一,它對(duì)應(yīng)的類(接口)是:javax.servlet.http.HttpSession??梢酝ㄟ^(guò)查找文檔中javax.servlet.http.HttpS
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中圖版(北京)八年級(jí)地理上冊(cè)2.2《主要的氣候類型》聽課評(píng)課記錄
- 人教版七年級(jí)地理上冊(cè):1.1《地球和地球儀》聽課評(píng)課記錄3
- 2025年高性能鐵氧體一次料合作協(xié)議書
- 星球版地理八年級(jí)上冊(cè)《第一節(jié) 合理利用土地資源》聽課評(píng)課記錄3
- 人教版歷史八年級(jí)下冊(cè)第13課《香港和澳門的回歸》聽課評(píng)課記錄
- 魯教版地理七年級(jí)下冊(cè)9.1《自然特征與農(nóng)業(yè)》聽課評(píng)課記錄1
- 五年級(jí)數(shù)學(xué)下冊(cè)聽評(píng)課記錄《第4單元 3分?jǐn)?shù)的基本性質(zhì)》人教版
- 粵人版地理八年級(jí)上冊(cè)《第三節(jié) 水資源》聽課評(píng)課記錄1
- 湘教版數(shù)學(xué)七年級(jí)下冊(cè)1.3《二元一次方程組的應(yīng)用》聽評(píng)課記錄1
- 蘇科版九年級(jí)數(shù)學(xué)聽評(píng)課記錄:第80講期中期末串講
- 《人事管理》課件
- 【非正式組織對(duì)企業(yè)人力資源管理的影響8700字(論文)】
- 醫(yī)療器械經(jīng)營(yíng)規(guī)范培訓(xùn)
- 2024拳擊比賽計(jì)劃書
- 管道直飲水系統(tǒng)技術(shù)和方案
- 婦產(chǎn)科國(guó)家臨床重點(diǎn)??乞?yàn)收匯報(bào)
- 社區(qū)干部培訓(xùn)班交流發(fā)言(通用6篇)
- 行政處罰-行政處罰種類和設(shè)定(行政法課件)
- 柔性機(jī)械臂的振動(dòng)控制
- 小學(xué)語(yǔ)文-5 對(duì)韻歌教學(xué)設(shè)計(jì)學(xué)情分析教材分析課后反思
- DB34T 4510-2023 靜脈用藥調(diào)配中心潔凈區(qū)管理規(guī)范
評(píng)論
0/150
提交評(píng)論