版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2.1HTML語言語言2.22.3JSP基礎(chǔ)基礎(chǔ)Servlet技術(shù)技術(shù)2.4Java Web綜合開發(fā)實(shí)戰(zhàn):網(wǎng)絡(luò)留言系統(tǒng)綜合開發(fā)實(shí)戰(zhàn):網(wǎng)絡(luò)留言系統(tǒng)2.1.1 HTML文件的基本結(jié)構(gòu)文件的基本結(jié)構(gòu)HTML文件的基本結(jié)構(gòu)如圖2.1所示。下面的例子,文檔頭部分有網(wǎng)頁標(biāo)題標(biāo)記,文檔主體部分有圖片標(biāo)記、超鏈接標(biāo)記及一些文字。把這段代碼命名為a.html,保存在想要保存的路徑。雙擊該文件就可以運(yùn)行了。只要該路徑下有b.html文件,單擊超鏈接就可以跳轉(zhuǎn)到b.html?!纠?.1】第一個(gè)網(wǎng)頁。第一個(gè)html網(wǎng)頁超鏈接這是我的第一個(gè)網(wǎng)頁1HTML標(biāo)記標(biāo)記HTML標(biāo)記表示文檔內(nèi)容的開始和結(jié)束。是開始標(biāo)記,是結(jié)束標(biāo)
2、記,其他所有的HTML代碼都位于這兩個(gè)標(biāo)記之間。瀏覽器將該標(biāo)記中的內(nèi)容視為一個(gè)Web文檔,按照HTML語言規(guī)則對(duì)文檔內(nèi)的標(biāo)記進(jìn)行解釋。2首部標(biāo)記首部標(biāo)記首部標(biāo)記中提供與網(wǎng)頁有關(guān)的各種信息。在首部標(biāo)記中,一般使用下列標(biāo)記。.:制定網(wǎng)頁的標(biāo)題。.:定義文檔內(nèi)容樣式表。. :插入腳本語言程序。:描述網(wǎng)頁信息。3標(biāo)題欄標(biāo)記標(biāo)題欄標(biāo)記標(biāo)題欄標(biāo)記的內(nèi)容是在瀏覽器標(biāo)題欄中顯示的文本。通常,Web搜索工具用它作為索引。4描述標(biāo)記描述標(biāo)記描述文檔屬性參數(shù)。5正文標(biāo)記正文標(biāo)記正文標(biāo)記的格式如下:正文標(biāo)記中包含文檔的內(nèi)容。其常用屬性如下。 background:文檔背景圖像的URL 地址。 bgcolor:文檔的背
3、景顏色。 text:文檔中文本的顏色。 link:文檔中鏈接的顏色。 vlink:文檔中已被訪問過的鏈接的顏色。 alink:文檔中正被選中的鏈接的顏色。6分段標(biāo)記分段標(biāo)記 段落是文檔的基本信息單位。利用分段標(biāo)記,可以忽略文檔中原有的回車和換行。單獨(dú)使用標(biāo)記時(shí)會(huì)空一行,使后續(xù)內(nèi)容隔一行顯示。同時(shí)使用,則將段落包圍起來,表示一個(gè)分段的塊。其最常用的屬性為align,其值如下。left:左對(duì)齊(默認(rèn)值)center:居中對(duì)齊right:右對(duì)齊justify:兩邊對(duì)齊7換行標(biāo)記換行標(biāo)記該標(biāo)記強(qiáng)行中斷當(dāng)前行,使后續(xù)內(nèi)容在下一行顯示,這個(gè)標(biāo)記很簡(jiǎn)單,也很常用。8標(biāo)題標(biāo)記標(biāo)題標(biāo)記標(biāo)題標(biāo)記的格式如下:其常用
4、屬性也是align。9對(duì)中標(biāo)記對(duì)中標(biāo)記該標(biāo)記中間的內(nèi)容全部居中。10塊標(biāo)記塊標(biāo)記塊標(biāo)記的作用是定義文檔塊。其常用屬性也是align。11水平線標(biāo)記水平線標(biāo)記在標(biāo)記位置畫一條線。常用屬性如下。 align:段落的水平對(duì)齊方式。 color:線的顏色。 size:線的寬度(以像素為單位)。 width:線的長(zhǎng)度(像素或占頁面寬度的百分?jǐn)?shù))。 noshade:顯示一條無陰影的實(shí)線。12字體標(biāo)記字體標(biāo)記字體標(biāo)記用來設(shè)置文本的字符格式,主要包括字體、字號(hào)和顏色等。常用屬性如下。 face:字體名表。 size:字號(hào)值。 color:顏色值。設(shè)置字體的顏色。13圖像標(biāo)記圖像標(biāo)記圖像標(biāo)記的常用屬性如下。 s
5、rc:圖像文件的URL 地址。 alt:圖像的簡(jiǎn)單文本說明,在瀏覽器下不能顯示圖像或圖像加載時(shí)間過長(zhǎng)時(shí)顯示該文本。 height:顯示圖像的高度(像素或百分比)。 width:顯示圖像的寬度(像素或百分比)。 align:圖像大小小于顯示區(qū)域大小時(shí)的對(duì)齊方式。14超鏈接標(biāo)記超鏈接標(biāo)記超鏈接內(nèi)容超鏈接的常用屬性如下。 href:目標(biāo)端點(diǎn)的URL 地址(可以包含一個(gè)或多個(gè)參數(shù))。 target:窗口或框架的名稱。1顏色顏色 使用顏色名稱來表示。例如,紅色、綠色和藍(lán)色分別用red、green和blue表示。 使用十六進(jìn)制格式數(shù)值#RRGGBB來表示,RR、GG和BB分別表示顏色中的紅、綠、藍(lán)三原色的
6、兩位十六進(jìn)制數(shù)據(jù)。例如,紅色、綠色和藍(lán)色分別用#FF0000、#00FF00和#0000FF表示。表2.1列出了16種標(biāo)準(zhǔn)顏色及其十六進(jìn)制數(shù)值。2字符實(shí)體字符實(shí)體一個(gè)字符實(shí)體以&符號(hào)打頭后跟實(shí)體名字或者是#加上實(shí)體編號(hào),最后是一個(gè)分號(hào)。最常用的字符實(shí)體如表2.2所示。3常用屬性常用屬性有些屬性在HTML許多標(biāo)記中出現(xiàn)。 類名:class。 唯一標(biāo)識(shí):id。 內(nèi)樣式: style。 提示信息:title。4常用事件常用事件事件處理描述是一個(gè)或一系列以分號(hào)隔開的 JavaScript 表達(dá)式、方法和函數(shù)調(diào)用,并用引號(hào)引起來。當(dāng)事件發(fā)生時(shí),瀏覽器會(huì)執(zhí)行這些代碼。事件包括窗口事件、表單及其元素
7、事件、鍵盤事件、鼠標(biāo)事件。1表單表單表單用來從用戶(站點(diǎn)訪問者)處收集信息,然后將這些信息提交給服務(wù)器進(jìn)行處理。表單中可以包含允許用戶進(jìn)行交互的各種控件,例如,文本框、列表框、復(fù)選框和單選按鈕等。用戶在表單中輸入或選擇數(shù)據(jù)后提交,該數(shù)據(jù)就會(huì)提交到相應(yīng)的表單處理程序,以各種不同的方式進(jìn)行處理。表單結(jié)構(gòu)如下: form標(biāo)記的屬性如下。標(biāo)記的屬性如下。 name:表單的名稱。 method:表單數(shù)據(jù)傳輸?shù)椒?wù)器的方法。 action:接收表單數(shù)據(jù)的服務(wù)器端程序或動(dòng)態(tài)網(wǎng)頁的URL地址。 target:目標(biāo)窗口。form標(biāo)記有以下事件。標(biāo)記有以下事件。 onsubmit:提交表單時(shí)調(diào)用的時(shí)間處理程序。
8、onreset:重置表單時(shí)調(diào)用的處理程序。2表單:輸入控件表單:輸入控件(1)單行文本框。)單行文本框。創(chuàng)建單行文本框方法如下:?jiǎn)涡形谋究虻膶傩匀缦隆?name:?jiǎn)涡形谋究虻拿Q,通過它可以在腳本中引用該文本框控件。 value:文本框的值。 default value:文本框的初始值。 size:文本框的寬度(字符數(shù))。 maxlength:允許在文本框內(nèi)輸入的最大字符數(shù)。 form:所屬的表單(只讀)。單行文本框的方法如下。 click():?jiǎn)螕粼撐谋究颉?focus():得到焦點(diǎn)。 blur():失去焦點(diǎn)。 select():選擇文本框的內(nèi)容。單行文本框的事件如下。 onclick:?jiǎn)螕?/p>
9、該文本框時(shí)執(zhí)行的代碼。 onblur:失去焦點(diǎn)時(shí)執(zhí)行的代碼。 onchange:內(nèi)容變化時(shí)執(zhí)行的代碼。 onfocus:得到焦點(diǎn)時(shí)執(zhí)行的代碼。 onselect:選擇內(nèi)容時(shí)執(zhí)行的代碼。(2)密碼文本框。)密碼文本框。創(chuàng)建密碼文本框方法如下:密碼文本框的屬性、方法和事件與單行文本框的設(shè)置基本相同,只是密碼文本框沒有onclick事件。(3)隱藏域。)隱藏域。創(chuàng)建隱藏域方法如下:隱藏域的屬性、方法和事件與單行文本框的設(shè)置基本相同,只是沒有default value屬性。(4)復(fù)選框。)復(fù)選框。創(chuàng)建復(fù)選框方法如下:選項(xiàng)文本復(fù)選框的屬性如下。 name:復(fù)選框的名稱。 value:選中時(shí)提交的值。 c
10、hecked:當(dāng)?shù)谝淮未蜷_表時(shí)該復(fù)選框處于選中狀態(tài)。 defaultchecked:判斷復(fù)選框是否定義了checked屬性。復(fù)選框的方法如下。 focus():得到焦點(diǎn)。 blur():失去焦點(diǎn)。 click():?jiǎn)螕粼搹?fù)選框。復(fù)選框的事件如下。 onfocus:得到焦點(diǎn)時(shí)執(zhí)行的代碼。 onblur:失去焦點(diǎn)時(shí)執(zhí)行的代碼。 onclick:?jiǎn)螕粼撐谋究驎r(shí)執(zhí)行的代碼。(5)單選按鈕。)單選按鈕。創(chuàng)建單選按鈕方法如下:選項(xiàng)文本單選按鈕的屬性如下。 name:?jiǎn)芜x按鈕的名稱,若干個(gè)名稱相同的單選按鈕構(gòu)成一個(gè)控件組,在該組中只能選中一個(gè)選項(xiàng)。 value:提交時(shí)的值。 checked:當(dāng)?shù)谝淮未蜷_表單
11、時(shí)該單選按鈕處于選中狀態(tài)。該屬性是可選的。(6)按鈕。)按鈕。使用input標(biāo)記可以在表單中添加3種類型的按鈕:提交按鈕、重置按鈕和自定義按鈕。創(chuàng)建按鈕的方法如下:按鈕的屬性如下。 type:按鈕種類,具體如下。 name:按鈕的名稱。 value:顯示在按鈕上的標(biāo)題文本。按鈕的事件如下。 onclick:?jiǎn)螕舭粹o執(zhí)行的腳本代碼。(7)文件域。)文件域。創(chuàng)建文件域的方法如下:其中,“屬性=值”部分可以進(jìn)行如下設(shè)置。 name:文件域的名稱。 value:初始文件名。 size:文件名輸入框的寬度。3表單:滾動(dòng)文本框表單:滾動(dòng)文本框初始值其屬性如下。 name:滾動(dòng)文本框控件的名稱。 rows:
12、控件的高度。 cols:控件的寬度。 readonly:表示文本框中的內(nèi)容是只讀的,不能被修改。4表單:選項(xiàng)選單表單:選項(xiàng)選單創(chuàng)建選項(xiàng)選單方法如下:選項(xiàng)1選項(xiàng)2其屬性如下。 name:選項(xiàng)選單控件的名稱。 size:在列表中一次可以看到的選項(xiàng)數(shù)目,默認(rèn)值為1。 multiple:允許做多項(xiàng)選擇。 selected:該選項(xiàng)的初始狀態(tài)為選中。【例2.2】表單控件的使用。將下面的文件命名為all.html,保存到磁盤上。雙擊all.html文件,在頁面上就會(huì)出現(xiàn)如圖2.2所示的界面。5表格表格表格由表頭、行和單元格組成,常用于組織和顯示信息,還可以用于安排頁面布局。表格的表頭、行和單元格分別用不同的
13、標(biāo)記來定義??梢杂胻able標(biāo)記定義表格;表格中的每一行用tr標(biāo)記來表示;行中的單元格用td或th標(biāo)記定義。其中th標(biāo)記定義表格的列標(biāo)題單元格,表格的標(biāo)題說明則用caption標(biāo)記來定義。定義表格的格式圖解,如圖2.3所示?!纠?.3】表格的使用。把這段代碼保存,命名為table.html,雙擊該文件會(huì)看到如圖2.4所示的界面。(1)設(shè)置表格的屬性)設(shè)置表格的屬性用table標(biāo)記創(chuàng)建表格時(shí),可以設(shè)置以下屬性。 align:表格的對(duì)齊方式,其屬性值如下。 background:表格背景圖片的URL地址。 bgcolor:表格的背景顏色。 border:表格邊框的寬度(像素),默認(rèn)值為0。 bor
14、dercolor:表格邊框的顏色,border0時(shí)起作用。 bordercolordark:三維邊框的陰影顏色,border0時(shí)起作用。 bordercolorlight:三維邊框的高亮顯示顏色,border0時(shí)起作用。 cellpandding:?jiǎn)卧駜?nèi)數(shù)據(jù)與單元格邊框之間的間距(像素)。 width:表格的寬度(像素或百分比)。(2)設(shè)置行的屬性)設(shè)置行的屬性表格中的每一行是用tr標(biāo)記來定義的,可以設(shè)置下列屬性。 align:行中單元格的水平對(duì)齊方式,其屬性值如下。 background:行的背景圖片的URL地址。 bgcolor:行的背景顏色。 bordercolor:行的邊框顏色,只有
15、當(dāng)table標(biāo)記的border0時(shí)起作用。 bordercolordark:行的三維邊框的陰影顏色,只有當(dāng)table標(biāo)記的border0時(shí)起作用。 bordercolorlight:行的三維邊框的高亮顯示顏色,只有當(dāng)table標(biāo)記的border0時(shí)起作用。 valign:行中單元格內(nèi)容的垂直對(duì)齊方式,其屬性值如下。(3)設(shè)置單元格的屬性)設(shè)置單元格的屬性td標(biāo)記和th標(biāo)記的屬性如下。 align:行中單元格的水平對(duì)齊方式,其屬性值如下。 background:?jiǎn)卧竦谋尘皥D片的URL 地址。 bgcolor:?jiǎn)卧竦谋尘邦伾?bordercolor:?jiǎn)卧竦倪吙蝾伾?,只有?dāng)table標(biāo)記的b
16、order0時(shí)起作用。 bordercolordark:?jiǎn)卧竦娜S邊框的陰影顏色,只有當(dāng)table標(biāo)記的border0時(shí)起作用。 bordercolorlight:?jiǎn)卧竦娜S邊框的高亮顯示顏色,只有當(dāng)table標(biāo)記的border0時(shí)起作用。 colspan:合并單元格時(shí)一個(gè)單元格跨越的表格列數(shù)。 rowspan:合并單元格時(shí)一個(gè)單元格跨越的表格行數(shù)。 valign:?jiǎn)卧裰形谋镜拇怪睂?duì)齊方式,其屬性值如下。 nowrap:若指定該屬性,則要避免Web瀏覽器將單元格里的文本換行。下面再來看看【例2.2】中all.html文件使用表格后的情況,布局后的界面,如圖2.5所示。【例2.4】用表格呈
17、現(xiàn)表單。將下面的文件命名為form_table.html,保存到磁盤上:框架網(wǎng)頁通過一個(gè)frameset(框架集)標(biāo)記和多個(gè)frame(框架)標(biāo)記來定義。在框架網(wǎng)頁中,將frameset標(biāo)記置于head之后,以取代body的位置,還可以使用noframes標(biāo)記生成不能被瀏覽器顯示時(shí)的替換內(nèi)容??蚣芫W(wǎng)頁的基本結(jié)構(gòu)如下:框架網(wǎng)頁的基本結(jié)構(gòu)1框架集框架集可以使用frameset標(biāo)記的下列屬性對(duì)框架的結(jié)構(gòu)進(jìn)行設(shè)置。 cols:創(chuàng)建縱向分隔框架時(shí)指定各個(gè)框架的列寬。取值有3種形式,即像素、百分比(%)和相對(duì)尺寸(*)。 rows:橫向分隔框架時(shí)各個(gè)框架的行高。 frameborder:框架周圍是否顯示三
18、維邊框。 framespacing:框架之間的間隔(以像素為單位,默認(rèn)值為0)。例如,創(chuàng)建一個(gè)嵌套框架集。創(chuàng)建框架網(wǎng)頁 /把框架分為3個(gè)部分(行分),分別是20%、400及剩余部分 /將第一行部分分為2列,300及剩余部分此網(wǎng)頁使用了框架,但您的瀏覽器不支持框架。2框架框架frame標(biāo)記具有下列屬性。 name:框架的名稱。 frameboder:框架周圍是否顯示三維邊框。 marginheight:框架的高度(以像素為單位)。 marginwidth:框架的寬度(以像素為單位)。 noresize:不能調(diào)整框架的大小。 scrolling:指定框架是否可以滾動(dòng),其屬性值如下。 src:在框架
19、中顯示的HTML文件。【例2.5】學(xué)生信息管理系統(tǒng)。首先看實(shí)現(xiàn)主界面,如圖2.6所示。單擊【學(xué)生成績(jī)查詢】超鏈接,出現(xiàn)如圖2.7所示的界面。單擊【學(xué)生信息顯示】超鏈接,出現(xiàn)如圖2.8所示的界面。代碼實(shí)現(xiàn)如下。(1)head.html學(xué)生信息管理系統(tǒng)(2)left.html 學(xué)生成績(jī)查詢學(xué)生信息顯示返回開始頁面(3)right.html這里是首頁。(4)frame.html在框架中顯示網(wǎng)頁此網(wǎng)頁使用了框架,但您的瀏覽器不支持框架2.2.1 JSP語法語法1JSP數(shù)據(jù)定義數(shù)據(jù)定義在JSP中可以用定義一個(gè)或多個(gè)變量。在其中定義的變量為該頁面級(jí)別的共享變量,可以被訪問此頁面的所有用戶訪問。其語法格式如
20、下:如下面的代碼片段:此外,這種聲明方式還可以定義一個(gè)方法或類,定義方法的格式如下:定義一個(gè)類,如下面的代碼片段:2JSP程序塊程序塊來看下面這段JSP代碼,命名為circle.jsp:(頁面有中文用UTM-8) 3JSP表達(dá)式表達(dá)式從上面的例子中可以發(fā)現(xiàn),要輸出面積s的值,先計(jì)算s的值,然后輸出結(jié)果。JSP中提供了一種表達(dá)式,可以很方便地輸出運(yùn)算結(jié)果,其格式如下:于是,circle.jsp文件的代碼可以修改如下:4JSP指令指令JSP指令主要用來提供整個(gè)JSP頁面的相關(guān)信息和設(shè)定JSP頁面的相關(guān)屬性,如設(shè)定網(wǎng)頁的編碼方式、腳本語言及導(dǎo)入需要用到的包等。其語法格式如下:常用的有3條指令:pag
21、e、include和taglib。(1)page指令指令page指令主要用來設(shè)定整個(gè)JSP文件的屬性和相關(guān)功能,如:一般用到的page指令還有導(dǎo)入需要的包,用法如下:(2)include指令指令include指令用來解決這個(gè)問題,其用來導(dǎo)入包含靜態(tài)的文件,如JSP網(wǎng)頁文件、HTML網(wǎng)頁文件,但不能包含用表示的代表表達(dá)式的文件。其語法格式如下:如有head.jsp文件,其內(nèi)容如下:現(xiàn)在在另一個(gè)文件中調(diào)用它:輸出頁面這句話是我想輸出的(3)taglib指令指令taglib指令語法格式如下:其中uri=tagLibraryURI指明標(biāo)簽庫文件的存放位置。而prefix=tagPrefix則表示該標(biāo)簽
22、使用時(shí)的前綴。例如,在Struts 2中用到標(biāo)簽:5JSP動(dòng)作動(dòng)作(1)的語法規(guī)則如下:例如:通常與、或等一起使用。(2)的語法規(guī)則如下: jsp:include page= relativeurl | flush=true /或者為:jsp:include page= relativeurl | flush=true jsp:param name=paramName value= paramValue | /可以向一個(gè)對(duì)象提出請(qǐng)求,并可以將結(jié)果包含在一個(gè)JSP文件中。(3)的語法規(guī)則如下: 語法參數(shù)說明如下。 id:設(shè)置JavaBean的名稱,利用此id,可以識(shí)別在同一個(gè)JSP程序中使用不同
23、的JavaBean組件實(shí)例。 class:指定JavaBean對(duì)應(yīng)的Java類名查找該JavaBean的路徑。 scope:指定JavaBean對(duì)象的作用域。scope的值可能是page、request、session和application。 typeSpec:可能是如下的4種形式之一。class=className /僅指明應(yīng)用的類名class=className type=typeName /指明應(yīng)用的類名及類型beanName=beanName type=typeName /指明應(yīng)用的其他Bean的名稱及類型type=typeName /僅指明類型【例2.6】useBean動(dòng)作元素的應(yīng)
24、用。在項(xiàng)目Practice的WebRoot文件夾下創(chuàng)建JSP文件,命名為bean.jsp,其代碼如下:useBean動(dòng)作元素的應(yīng)用(包下面的類)在src文件夾下創(chuàng)建包test,在包test下創(chuàng)建TestBean.java,其代碼如下:package test;public class TestBeanprivate String str=null;public TestBean() public void setString(String value)str=value;public String getStringValue()return str;(4)的語法規(guī)則如下:語法參數(shù)說明如下。
25、name:指定目標(biāo)Bean對(duì)象。 property:指定要設(shè)置Bean的屬性名。 value:指定Bean屬性的值。 param:指定從request對(duì)象的某一參數(shù)取值以設(shè)置Bean的同名屬性,即要將其值賦給一個(gè)Bean屬性的HTTP請(qǐng)求的參數(shù)名稱。(5)的語法規(guī)則如下:其中屬性name是JavaBean實(shí)例的名稱,property是要顯示的屬性的名稱。根據(jù)語法規(guī)則,如下代碼是合法的。Get of string :可以獲取Bean的屬性值。(6)的語法規(guī)則如下:jsp:forward page= relativeurl | /或者為:jsp:forward page= relativeurl
26、| jsp:param name=paramName value= paramValue | /標(biāo)記只有一個(gè)屬性page。page屬性指定要轉(zhuǎn)發(fā)資源的相對(duì)URL。page的值既可以直接給出,也可以在請(qǐng)求時(shí)動(dòng)態(tài)計(jì)算。例如:jsp:forward page= /(7)的語法規(guī)則如下: jsp:params name=paramName value= parameterValue | /+ text message for user 語法參數(shù)說明如下。 type:指定被執(zhí)行的Java程序的類型是JavaBean還是Java Applet。 code:指定會(huì)被JVM執(zhí)行的Java Class的名字,必
27、須以.class結(jié)尾命名。 codebase:指定會(huì)被執(zhí)行的Java Class文件所在的目錄或路徑,默認(rèn)值為調(diào)用指令的JSP文件的目錄。 name:確定這個(gè)JavaBean或者Java Applet程序的名字,它可以在JSP程序的其他地方被調(diào)用。 archive:表示包含對(duì)象Java類的.jar文件。 align:對(duì)圖形、對(duì)象、Applet等進(jìn)行定位,可以選擇的值為bottom、top、middle、left和right五種。 height:JavaBean或者Java Applet將要顯示出來的高度、寬度的值,此值為數(shù)字,單位為像素。 hspace和vspace:JavaBean或者Jav
28、a Applet顯示時(shí)在瀏覽器顯示區(qū)左、右、上、下所需留下的空間,單位為像素。 jreversion:JavaBean或者Java Applet被正確運(yùn)行所需要的Java運(yùn)行時(shí)環(huán)境的版本,默認(rèn)值是1.2。 nspluginurl:可以為Netscape Navigator用戶下載JRE插件的地址。 iepluginurl:IE用戶下載JRE的地址。 和:使用操作指令,可以向JavaBean或者Java Applet傳送參數(shù)和參數(shù)值。 和:該指令中間的一段文字用于Java插件不能啟動(dòng)時(shí)顯示給用戶;如果插件能夠正確啟動(dòng),而JavaBean或者Java Applet的程序代碼不能找到并被執(zhí)行,那么瀏
29、覽器將會(huì)顯示這個(gè)出錯(cuò)信息。6JSP注釋注釋(1)輸出注釋)輸出注釋輸出注釋的語法規(guī)則如下:!- 注釋內(nèi)容-這種注釋和HTML文件中的注釋很相似,唯一不同的是,前者可以在這個(gè)注釋中用表達(dá)式,以便動(dòng)態(tài)生成不同內(nèi)容的注釋。這些注釋的內(nèi)容在客戶端是可見的,也就是可以在HTML文件的源代碼中看到。如下面一段注釋:!- 現(xiàn)在時(shí)間是: -把上面代碼放在一個(gè)JSP文件的body體中運(yùn)行后,可以在其源代碼中看到:(2)隱藏注釋)隱藏注釋隱藏注釋的語法規(guī)則如下:隱藏注釋與輸出注釋不同的是,這個(gè)注釋雖然寫在JSP程序中,但是不會(huì)發(fā)送給用戶。1page對(duì)象對(duì)象page對(duì)象代表JSP頁面本身,是this引用的一個(gè)代名詞
30、。對(duì)JSP頁面創(chuàng)建者通常不可訪問,所以一般很少用到該對(duì)象。2config對(duì)象對(duì)象config對(duì)象是ServletConfig類的一個(gè)對(duì)象,存放著一些Servlet初始化信息,且只有在JSP頁面范圍內(nèi)才有效。其常用方法如下。 getInitParameter(name):取得指定名字的Servlet初始化參數(shù)值。 getInitParameterNames():取得Servlet初始化參數(shù)列表,返回一個(gè)枚舉實(shí)例。 getServletContext():取得Servlet上下文(ServletContext)。 getServletName():取得生成的Servlet的名字。3out對(duì)象對(duì)象J
31、SP頁面的主要目的是動(dòng)態(tài)產(chǎn)生客戶端需要的HTML結(jié)果,前面已經(jīng)用過out.print()和out.println()來輸出結(jié)果。此外,out對(duì)象還提供了一些其他方法來控制管理輸出緩沖區(qū)和輸出流。例如,要獲得當(dāng)前緩存區(qū)大小,可以用下面的語句:out.getBufferSize();要獲得剩余緩存區(qū)大小應(yīng)為:out.getRemaining();4response對(duì)象對(duì)象以下是response對(duì)象的主要方法。 addHeader(String name,String value):添加HTTP頭文件,該頭文件將會(huì)傳到客戶端去,如果有同名的頭文件存在,那么原來的頭文件會(huì)被覆蓋。 setHeader(
32、String name,String value):設(shè)定指定名字的HTTP文件頭的值,如果該值存在,那么它將會(huì)被新的值覆蓋。 containsHeader(String name):判斷指定名字的HTTP文件頭是否存在,并返回布爾值。 flushBuffer():強(qiáng)制將當(dāng)前緩沖區(qū)的內(nèi)容發(fā)送到客戶端。 addCookie(Cookie cookie):添加一個(gè)Cookie對(duì)象,用來保存客戶端的用戶信息,可以用request對(duì)象的getCookies()方法獲得這個(gè)Cookie。 sendError(int sc):向客戶端發(fā)送錯(cuò)誤信息。例如,“505”指示服務(wù)器內(nèi)部錯(cuò)誤,“404”指示網(wǎng)頁找不到
33、的錯(cuò)誤。 setRedirect(url ):把響應(yīng)發(fā)送到另一個(gè)指定的頁面(URL)進(jìn)行處理。5request對(duì)象對(duì)象request對(duì)象包括很多方法,下面介紹其主要的方法。 getParameter(String name):以字符串的形式返回客戶端傳來的某一個(gè)請(qǐng)求參數(shù)的值,該參數(shù)由name指定。 getParameterValue(String name):以字符串?dāng)?shù)組的形式返回指定參數(shù)所有值。 getParameterNames():返回客戶端傳送給服務(wù)器端所有的參數(shù)名,結(jié)果集是一個(gè)Enumeration(枚舉)類的實(shí)例。 getAttribute(String name):返回name指
34、定的屬性值,若不存在指定的屬性,則返回null。 setAttribute(String name,java.lang.Object obj):設(shè)置名字為name的request參數(shù)的值為obj。 getCookies():返回客戶端的Cookie對(duì)象,結(jié)果是一個(gè)Cookie數(shù)組。 getHeader(String name):獲得HTTP協(xié)議定義的傳送文件頭信息,例如,request.getHeader (User-Agent)含義為返回客戶端瀏覽器的版本號(hào)、類型。 getDateHeader():返回一個(gè)Long類型的數(shù)據(jù),表示客戶端發(fā)送到服務(wù)器的頭信息中的時(shí)間信息。 getHeaderN
35、ame():返回所有request Header的名字,結(jié)果集是一個(gè)Enumeration(枚舉)類的實(shí)例。 getServerPort():獲得服務(wù)器的端口號(hào)。 getServerName():獲得服務(wù)器的名稱。 getRemoteAddr():獲得客戶端的IP地址。 getRemoteHost():獲得客戶端的主機(jī)名,如果該方法失敗,則返回客戶端的IP地址。 getProtocol():獲得客戶端向服務(wù)器端傳送數(shù)據(jù)所依據(jù)的協(xié)議名稱。 getMethod():獲得客戶端向服務(wù)器端傳送數(shù)據(jù)的方法。 getServletPath():獲得客戶端所請(qǐng)求的腳本文件的文件路徑。 getCharacte
36、rEncoding ():獲得請(qǐng)求中的字符編碼方式。 getSession(Boolean create):返回和當(dāng)前客戶端請(qǐng)求相關(guān)聯(lián)的HttpSession對(duì)象。 getQuertString():返回查詢字符串,該字符串由客戶端以get方法向服務(wù)器端傳送。 getRequestURI():獲得發(fā)出請(qǐng)求字符串的客戶端地址。 getContentType():獲取客戶端請(qǐng)求的MIME類型。6session對(duì)象對(duì)象session對(duì)象的主要方法如下。 getAttribute(String name):獲得指定名字的屬性,如果該屬性不存在,將會(huì)返回null。 getAttributeNames()
37、:返回session對(duì)象存儲(chǔ)的每一個(gè)屬性對(duì)象,結(jié)果集是一個(gè)Enumeration類的實(shí)例。 getCreationTime():返回session對(duì)象被創(chuàng)建的時(shí)間,單位為毫秒。 getId():返回session對(duì)象在服務(wù)器端的編號(hào)。 getLastAccessedTime():返回當(dāng)前session對(duì)象最后一次被操作的時(shí)間,單位為毫秒。 getMaxInactiveInterval ():獲取sessionn對(duì)象的生存時(shí)間,單位為秒。 setMaxInactiveInterval (int interval):設(shè)置session對(duì)象的有效時(shí)間(超時(shí)時(shí)間),單位為秒。 removeAttrib
38、ute(String name):刪除指定屬性的屬性名和屬性值。 setAttribute(String name,Java.lang.Object value):設(shè)定指定名字的屬性,并且把它存儲(chǔ)在session對(duì)象中。 invalidate():注銷當(dāng)前的session對(duì)象。7application對(duì)象對(duì)象application對(duì)象的主要方法如下。 getAttribute(String name):返回由name指定名字的application對(duì)象的屬性值。 getAttributeNames():返回所有application對(duì)象屬性的名字,結(jié)果集是一個(gè)Enumeration類型的實(shí)例。
39、 getInitParameter(String name):返回由name指定名字的application對(duì)象的某個(gè)屬性的初始值,如果沒有參數(shù),就返回null。 getServerInfo():返回Servlet編譯器當(dāng)前版本信息。 setAttribute(String name, Object obj):將參數(shù)Object指定的對(duì)象obj添加到application對(duì)象中,并為添加的對(duì)象指定一個(gè)屬性。 removeAttribute(String name):刪除一個(gè)指定的屬性?!纠?.7】request對(duì)象、session對(duì)象與application對(duì)象區(qū)別與聯(lián)系。首先,建立一個(gè)JSP
40、頁面first.jsp,用于這三個(gè)對(duì)象保存數(shù)據(jù)。 然后,再建立另一個(gè)JSP頁面second.jsp,用于獲取這三個(gè)對(duì)象保存的值。 % out.println(request:+(String)request.getAttribute(request)+); out.println(session:+(String)session.getAttribute(session)+); out.print(application:+(String)application.getAttribute(application)+); %部署運(yùn)行,打開IE,輸入“http:/localhost:9080/Pr
41、actice/first.jsp”,會(huì)發(fā)現(xiàn)這三個(gè)對(duì)象保存的內(nèi)容都能取出,如圖2.9所示。由于在first.jsp中運(yùn)用了,頁面跳轉(zhuǎn)到second.jsp,但是在瀏覽器中的地址也就是請(qǐng)求并沒有改變,屬于同一請(qǐng)求。這時(shí)這三個(gè)對(duì)象保存的內(nèi)容都可以取到,也就是說在同一請(qǐng)求范圍內(nèi),該三個(gè)對(duì)象都有效,在該IE瀏覽器中輸入“http:/localhost:9080/Practice/ second.jsp”,結(jié)果如圖2.10所示。在不同請(qǐng)求中,request對(duì)象就失效了,但是由于用的是同一個(gè)IE,也就是同一會(huì)話,session對(duì)象和application對(duì)象仍然有效。如果再重新打開一個(gè)IE,然后直接輸入“h
42、ttp:/localhost:9080/Practice/second.jsp”,結(jié)果如圖2.11所示。8pageContext對(duì)象對(duì)象pageContext對(duì)象的主要方法如下。 getAttribute():返回與指定范圍內(nèi)名稱有關(guān)的變量或null。 forward(String relativeurl Path):把頁面重定向到另一個(gè)頁面或Servlet組件上。 findAttribute():按照頁面請(qǐng)求、會(huì)話及應(yīng)用程序范圍的順序?qū)崿F(xiàn)對(duì)某個(gè)已經(jīng)命名屬性的搜索。 getException():返回當(dāng)前的exception對(duì)象。 setAttribute():設(shè)置默認(rèn)頁面的范圍或指定范圍中的
43、已命名對(duì)象。 removeAttribute():刪除默認(rèn)頁面范圍或指定范圍中已命名的對(duì)象。9exception對(duì)象對(duì)象exception對(duì)象的主要方法如下。 getMessage():返回錯(cuò)誤信息。 printStackTrace():以標(biāo)準(zhǔn)錯(cuò)誤的形式輸出一個(gè)錯(cuò)誤和錯(cuò)誤堆棧。 toString():以字符串的形式返回一個(gè)對(duì)異常的描述。1JavaBean形式和要素形式和要素 如果類的成員變量的名字是XXX,那么為了更改或獲取成員變量的值,即更改或獲取屬性,在類中可以使用兩種方法。 getXXX():用來獲取屬性XXX。 setXXX():用來修改屬性XXX。 對(duì)于boolean類型的成員變量,
44、即布爾邏輯類型的屬性,允許使用is代替上面的get和set。 類中方法的訪問屬性都必須是public的。 類中如果有構(gòu)造方法,那么這個(gè)構(gòu)造方法也是public的并且無參數(shù)。下面通過一個(gè)簡(jiǎn)單的實(shí)例來說明JavaBean的形式與要素。【例2.8】一個(gè)典型的JavaBean類。2JavaBean屬性屬性(1)Simple屬性屬性一個(gè)Simple屬性表示一個(gè)伴隨有一對(duì)get/set方法的變量。屬性名與該屬性相關(guān)的get/set方法名對(duì)應(yīng)。例如,如果有setX()和getX()方法,則暗指有一個(gè)名為“X”的屬性。如果有一個(gè)方法名為isX,則通常暗指“X”是一個(gè)布爾屬性(即X的值為true或false)。
45、(2)Indexed屬性屬性Indexed屬性表示一個(gè)數(shù)組值,使用與該屬性對(duì)應(yīng)的set/get方法可以取得數(shù)組中的數(shù)值。該屬性也可一次設(shè)置或取得整個(gè)數(shù)組的值。對(duì)于Indexed屬性,必須提供兩對(duì)相匹配的getXXX()與setXXX()方法,一對(duì)用來設(shè)置整個(gè)數(shù)組,另一對(duì)用來獲得或設(shè)定數(shù)組中的某個(gè)元素。使用Indexed屬性除了表示數(shù)組之外,還可以表示集合類。(3)Bound屬性屬性Bound屬性是指當(dāng)該屬性的值發(fā)生變化時(shí),要通知其他的對(duì)象。每次屬性值改變時(shí),這種屬性就觸發(fā)一個(gè)PropertyChange事件(在Java程序中,事件也是一個(gè)對(duì)象)。事件中封裝了屬性名、屬性的原值、屬性變化后的新值
46、。這種事件傳遞到其他的Bean,至于接收事件的Bean應(yīng)該做什么動(dòng)作由自己定義。(4)Constrained屬性屬性Constrained屬性是指當(dāng)這個(gè)屬性的值要發(fā)生變化時(shí),與這個(gè)屬性已建立了某種連接的其他Java對(duì)象可否決屬性值的改變。監(jiān)聽器實(shí)現(xiàn)了VectorChangeListener接口,并接受由JavaBean組件產(chǎn)生的PropertyChangeEvent對(duì)象,JavaBean組件可以使用VetoableChangeSupport輔助程序類激發(fā)由監(jiān)聽器接受的實(shí)際事件。使用JavaBean組件實(shí)例的引用來構(gòu)造VetoableChangeSupport對(duì)象,JavaBean實(shí)現(xiàn)了用add
47、VetoableChangeListener()方法和removeVetoableChangeListener()方法來加入或刪除監(jiān)聽器。VetoableChangeSupport.fireVetoableChange()方法可以用來傳遞屬性的名字、舊屬性值和新屬性值等信息。3JavaBean方法和事件方法和事件(1)JavaBean的方法的方法JavaBean處理數(shù)據(jù)的方法提供了改變Bean狀態(tài)并由此采取行動(dòng)的方式。如同普通的Java類一樣,Bean能夠擁有不同訪問類型的方法。例如,私有方法只有在Bean內(nèi)部才可以訪問,而保護(hù)方法在Bean的內(nèi)部和由它派生的Bean中都可以訪問。最具訪問能力
48、的方法是公共方法,它在Bean的內(nèi)部從派生的Bean或者從諸如應(yīng)用程序和其他組件等外界部分都可以訪問。(2)JavaBean的事件的事件JavaBean通過事件進(jìn)行信息的傳遞,事件從源聽眾注冊(cè)或發(fā)表,并通過方法調(diào)用傳遞到一個(gè)或幾個(gè)目標(biāo)聽眾。事件有許多不同的用途,如在Windows系統(tǒng)中常要處理的鼠標(biāo)事件、窗口邊界改變事件、鍵盤事件等。在JavaBean中定義了一個(gè)一般的、可擴(kuò)充的事件機(jī)制,這種機(jī)制能夠?qū)崿F(xiàn)以下功能。 對(duì)事件類型和傳遞模型的定義和擴(kuò)充提供一個(gè)公共框架,并適于廣泛的應(yīng)用;能完成JavaBean事件模型與相關(guān)的其他組件體系結(jié)構(gòu)事件模型的中立映射。 事件能被掃描環(huán)境捕獲和激活;能夠發(fā)現(xiàn)
49、指定的對(duì)象類可以觀察監(jiān)聽到的事件。 能使其他構(gòu)造工具采用某種技術(shù)在設(shè)計(jì)時(shí)直接控制事件,以及事件源和事件監(jiān)聽者之間的聯(lián)系;提供一個(gè)常規(guī)的注冊(cè)機(jī)制,允許動(dòng)態(tài)操縱事件源與事件監(jiān)聽之間的關(guān)系;事件源與監(jiān)聽者之間可以進(jìn)行高效的事件傳遞。 與Java語言和環(huán)境有較高的集成度;事件機(jī)制本身不依賴于復(fù)雜的開發(fā)工具;不需要其他的虛擬機(jī)和語言即可實(shí)現(xiàn)。JavaBean事件是用對(duì)象進(jìn)行傳遞的,用戶應(yīng)弄清楚以下事件的內(nèi)容。 事件狀態(tài)對(duì)象。 事件監(jiān)聽者接口。 事件監(jiān)聽者的注冊(cè)與注銷。4JavaBean作用域作用域(1)page作用域作用域當(dāng)scope為page時(shí),它的作用域在四種類型中范圍最小,客戶端每次請(qǐng)求訪問時(shí)都會(huì)
50、創(chuàng)建一個(gè)JavaBean對(duì)象。JavaBean對(duì)象的有效范圍是客戶端請(qǐng)求訪問的當(dāng)前頁面文件,當(dāng)客戶端執(zhí)行完當(dāng)前的頁面文件后,JavaBean對(duì)象結(jié)束生命。在page范圍內(nèi),每次訪問頁面文件時(shí)都會(huì)生成新的JavaBean對(duì)象,原有的JavaBean對(duì)象已經(jīng)結(jié)束了生命周期。(2)request作用域作用域當(dāng)scope為request時(shí),JavaBean對(duì)象被創(chuàng)建后,它將存在于整個(gè)request的生命周期內(nèi),request對(duì)象是一個(gè)內(nèi)建對(duì)象,使用它的getParameter方法可以獲取表單中的數(shù)據(jù)信息。request范圍的JavaBean與request對(duì)象有著很大的關(guān)系,它的存取范圍除了page外
51、,還包括使用動(dòng)作元素和包含的網(wǎng)頁,所有通過這兩個(gè)操作指令連接在一起的JSP程序都可以共享同一個(gè)JavaBean對(duì)象。(3)session作用域作用域當(dāng)scope為session時(shí),JavaBean對(duì)象被創(chuàng)建后,它將存在于整個(gè)session的生命周期內(nèi),session對(duì)象是一個(gè)內(nèi)建對(duì)象,當(dāng)用戶使用瀏覽器訪問某個(gè)網(wǎng)頁時(shí),就創(chuàng)建了一個(gè)代表該鏈接的session對(duì)象,同一個(gè)session中的文件共享這個(gè)JavaBean對(duì)象??蛻舳藢?duì)應(yīng)的session生命周期結(jié)束時(shí),JavaBean對(duì)象的生命也結(jié)束了。在同一個(gè)瀏覽器內(nèi),JavaBean對(duì)象就存在于一個(gè)session中。當(dāng)重新打開新的瀏覽器時(shí),就會(huì)開始一
52、個(gè)新的session,每個(gè)session中擁有各自的JavaBean對(duì)象。(4)application作用域作用域當(dāng)scope為application時(shí),JavaBean對(duì)象被創(chuàng)建后,它將存在于整個(gè)主機(jī)或虛擬主機(jī)的生命周期內(nèi),application范圍是JavaBean的生命周期中最長(zhǎng)的。同一個(gè)主機(jī)或虛擬主機(jī)中的所有文件共享這個(gè)JavaBean對(duì)象。如果服務(wù)器不重新啟動(dòng),scope為application的JavaBean對(duì)象會(huì)一直存放在內(nèi)存中,隨時(shí)處理客戶端的請(qǐng)求,直到服務(wù)器關(guān)閉,它在內(nèi)存中占用的資源才會(huì)被釋放。在此期間,服務(wù)器并不會(huì)創(chuàng)建新的JavaBean組件,而是創(chuàng)建源對(duì)象的一個(gè)同步復(fù)制
53、,任何復(fù)制對(duì)象發(fā)生改變都會(huì)使源對(duì)象隨之改變,不過這個(gè)改變不會(huì)影響其他已經(jīng)存在的復(fù)制對(duì)象。1Model1開發(fā)模式開發(fā)模式遵循Model1模式開發(fā)出的Java EE項(xiàng)目,其系統(tǒng)結(jié)構(gòu)如圖2.12所示?;贛odel1架構(gòu)的Java EE程序,其工作流程都是按如下4步進(jìn)行的。 瀏覽器發(fā)出請(qǐng)求,該請(qǐng)求由JSP頁面接收。 JavaBean用于實(shí)現(xiàn)業(yè)務(wù)邏輯,JSP根據(jù)請(qǐng)求的需要與不同的JavaBean進(jìn)行交互。 JavaBean執(zhí)行業(yè)務(wù)處理,通過JDBC操作數(shù)據(jù)庫。 JSP將程序運(yùn)行的結(jié)果信息生成動(dòng)態(tài)Web網(wǎng)頁發(fā)回瀏覽器。2舉例舉例【實(shí)例二】采用JSP+JavaBean+JDBC方式開發(fā)一個(gè)Web登錄程序。
54、要求:在【實(shí)例一】(1.3.2節(jié))基礎(chǔ)上修改而成,建立userTable表對(duì)應(yīng)的JavaBean,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的面向?qū)ο蟛僮?。?)創(chuàng)建)創(chuàng)建Java EE項(xiàng)目項(xiàng)目新建Java EE項(xiàng)目,項(xiàng)目命名為jsp_javabean_jdbc,具體操作方法見【實(shí)例一】。(2)構(gòu)造)構(gòu)造JavaBean在項(xiàng)目src文件夾下建立包org.easybooks.test.model.vo,其中創(chuàng)建名為UserTable的Java類,嚴(yán)格按照2.2.3節(jié)所講的一個(gè)JavaBean的通行結(jié)構(gòu)、形式和要素,為數(shù)據(jù)庫userTable表構(gòu)造一個(gè)JavaBean,代碼所示。(3)創(chuàng)建)創(chuàng)建JDBC在項(xiàng)目src文件夾下建立
55、包org.easybooks.test.jdbc,在包下創(chuàng)建SqlSrvDBConn類,其代碼同【實(shí)例一】,完成后也要往項(xiàng)目中添加JDBC驅(qū)動(dòng)包,操作方法一樣。(4)編寫)編寫JSP同【實(shí)例一】一樣,本例也要編寫login.jsp(登錄頁)、validate.jsp(驗(yàn)證頁)、main.jsp(主頁)和error.jsp(出錯(cuò)頁)這4個(gè)JSP文件,其中l(wèi)ogin.jsp和error.jsp的代碼與【實(shí)例一】的完全相同,另外兩個(gè)文件的源碼修改如下。validate.jsp代碼。main.jsp代碼:留言板信息,您好!歡迎登錄留言板。(5)運(yùn)行程序)運(yùn)行程序部署項(xiàng)目、啟動(dòng)Tomcat 8.x,打開
56、IE輸入“http:/localhost:9080/jsp_javabean_jdbc/”并運(yùn)行程序。在不輸入用戶名密碼的情況下,直接單擊【登錄】按鈕,會(huì)發(fā)現(xiàn)頁面又一次成功轉(zhuǎn)到歡迎主頁了,如圖2.13所示。2.3.1 Servlet的概念的概念Servlet是位于Web 服務(wù)器內(nèi)部的服務(wù)器端的Java應(yīng)用程序,它擔(dān)當(dāng)客戶(Web瀏覽器)請(qǐng)求與服務(wù)器(Web服務(wù)器上的應(yīng)用程序)響應(yīng)的中間層,基于這種“請(qǐng)求/響應(yīng)”模型,Servlet模塊的運(yùn)行模式如圖2.14所示。Servlet模塊是用Servlet API編寫的,Servlet API包含兩個(gè)包:javax.servlet和javax.serv
57、let.http。圖2.15清晰地描繪了這兩個(gè)包中主要類、接口之間的關(guān)系。1實(shí)現(xiàn)實(shí)現(xiàn)Servlet接口接口這種情況Servlet不是獨(dú)立的應(yīng)用程序,沒有main()方法,而是生存在容器中,由容器來管理。編程時(shí)需要實(shí)現(xiàn)javax.servlet.Servlet接口(見圖2.15中的)的5個(gè)方法。2繼承繼承GenericServlet類類由javax.servlet包提供一個(gè)抽象類GenericServlet(見圖2.15中的)。它給出了Servlet接口中除service()方法外的其他4個(gè)方法的簡(jiǎn)單實(shí)現(xiàn),并且還實(shí)現(xiàn)了ServletConfig接口,編程時(shí)直接繼承這個(gè)類,代碼會(huì)簡(jiǎn)化很多。3繼承繼
58、承HttpServlet、覆蓋、覆蓋doXXX()方法方法在大部分網(wǎng)絡(luò)中,都是客戶端通過HTTP協(xié)議來訪問服務(wù)器端的資源。為了快速開發(fā)應(yīng)用于HTTP協(xié)議的Servlet類,在javax.servlet.http包中提供了一個(gè)抽象類HttpServlet(見圖2.15中的),它繼承了GenericServlet類。編寫一個(gè)Servlet類繼承HttpServlet,只需要覆蓋相應(yīng)的doXXX()方法即可。4繼承繼承HttpServlet、重寫、重寫service()方法方法其本質(zhì)就是擴(kuò)展HttpServlet類,用戶只需重寫service()方法,Servlet模塊執(zhí)行service()方法時(shí),
59、會(huì)自動(dòng)調(diào)用doPost()和doGet()這兩個(gè)方法,實(shí)現(xiàn)Servlet的邏輯處理功能?!纠?.9】用繼承HttpServlet、覆蓋doGet()和doPost()方法的方式編寫一個(gè)Servlet程序,實(shí)現(xiàn)在頁面上輸出“Hello World!”的功能。(1)創(chuàng)建包)創(chuàng)建包在項(xiàng)目Practice的src目錄下創(chuàng)建名為servlet的包。(2)編寫自己的)編寫自己的Servlet類類在servlet包下創(chuàng)建一個(gè)Servlet類(類名_2_3hello),編寫代碼如下:package servlet;import java.io.*;import javax.servlet.*;import j
60、avax.servlet.http.*;public class _2_3hello extends HttpServletprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException PrintWriter out=response.getWriter();out.println();out.println(Hello World!);out.println();protected void doPost(HttpServletReq
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度綠色住宅租賃及環(huán)保維護(hù)服務(wù)合同范本3篇
- 2025年度城市軌道交通建設(shè)項(xiàng)目投資合作協(xié)議4篇
- 2024陶瓷廠勞務(wù)外派合同管理規(guī)范范本3篇
- 2025年度跨境電商平臺(tái)總代理權(quán)授權(quán)合同4篇
- 2024版門店租賃承包合同模板
- 2025年度電子信息廠區(qū)租賃合同協(xié)議4篇
- 2025年度煤礦股權(quán)轉(zhuǎn)讓與礦區(qū)水資源保護(hù)及利用合同4篇
- 二零二五年度清潔能源項(xiàng)目履約擔(dān)保協(xié)議4篇
- 二零二五年度原料藥質(zhì)量管理體系認(rèn)證服務(wù)合同3篇
- 2025年度廠房?jī)?nèi)墻抹灰勞務(wù)分包合同(含工程量清單及變更管理)4篇
- 臺(tái)資企業(yè)A股上市相關(guān)資料
- 電 梯 工 程 預(yù) 算 書
- 羅盤超高清圖
- 參會(huì)嘉賓簽到表
- 機(jī)械車間員工績(jī)效考核表
- 形式發(fā)票格式2 INVOICE
- 2.48低危胸痛患者后繼治療評(píng)估流程圖
- 人力資源管理之績(jī)效考核 一、什么是績(jī)效 所謂績(jī)效簡(jiǎn)單的講就是對(duì)
- 山東省醫(yī)院目錄
- 云南地方本科高校部分基礎(chǔ)研究
- 廢品管理流程圖
評(píng)論
0/150
提交評(píng)論