《Java程序設(shè)計(jì)》課件第10章_第1頁(yè)
《Java程序設(shè)計(jì)》課件第10章_第2頁(yè)
《Java程序設(shè)計(jì)》課件第10章_第3頁(yè)
《Java程序設(shè)計(jì)》課件第10章_第4頁(yè)
《Java程序設(shè)計(jì)》課件第10章_第5頁(yè)
已閱讀5頁(yè),還剩56頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第10章Web應(yīng)用入門10.1Web服務(wù)器與Web應(yīng)用10.2TomcatWeb服務(wù)器10.3JSP簡(jiǎn)介10.4案例:網(wǎng)上書店查詢頁(yè)面

10.1Web服務(wù)器與Web應(yīng)用

隨著Internet技術(shù)的發(fā)展,基于Web的應(yīng)用得到越來(lái)越廣泛的應(yīng)用,例如網(wǎng)上書店、博客、論壇等等。與普通應(yīng)用程序不同,用戶無(wú)需安裝應(yīng)用程序,只需要在Web瀏覽器(如IE、Firefox等)中輸入U(xiǎn)RL即可訪問(wèn)Web應(yīng)用。Web應(yīng)用系統(tǒng)具有極強(qiáng)的可維護(hù)性和易用性,當(dāng)新版本發(fā)布的時(shí)候,只需要更新Web服務(wù)器上的代碼即可。前面介紹的JavaApplet雖然也可用于Web應(yīng)用,但JavaApplet是下載到本地運(yùn)行的,不適合大型的應(yīng)用。

Web服務(wù)器是在網(wǎng)絡(luò)中為實(shí)現(xiàn)信息發(fā)布、資料查詢、數(shù)據(jù)處理等諸多應(yīng)用搭建基本平臺(tái)的服務(wù)器。Web服務(wù)器與瀏覽器之間通過(guò)HTTP協(xié)議進(jìn)行通信,用于傳輸采用HTML

(HyperTextMarkupLanguage,超文本標(biāo)記語(yǔ)言)創(chuàng)建的網(wǎng)頁(yè)等內(nèi)容。

Web服務(wù)器的基本工作原理如圖10.1所示。Web瀏覽器首先向一個(gè)特定的服務(wù)器發(fā)出Web頁(yè)面請(qǐng)求;Web服務(wù)器接收到Web頁(yè)面請(qǐng)求后,尋找所請(qǐng)求的Web頁(yè)面,并將所請(qǐng)求的Web頁(yè)面?zhèn)魉徒oWeb瀏覽器;Web瀏覽器接收到所請(qǐng)求的Web頁(yè)面,并將它顯示出來(lái)。圖10.1Web服務(wù)器的工作原理標(biāo)準(zhǔn)的HTML語(yǔ)言只能編制靜態(tài)的網(wǎng)頁(yè),僅僅使用HTML語(yǔ)言是無(wú)法開發(fā)出一個(gè)完整的應(yīng)用系統(tǒng)的。我們可以使用Java開發(fā)Web應(yīng)用程序。這些應(yīng)用程序使用JSP(JavaServerPages)技術(shù)創(chuàng)建Web內(nèi)容。JSP技術(shù)利用Java和HTML來(lái)開發(fā)動(dòng)態(tài)Web頁(yè)面。

要使用JSP技術(shù),Web服務(wù)器端必須安裝JSP引擎軟件。當(dāng)瀏覽器向Web服務(wù)器請(qǐng)求一個(gè)JSP頁(yè)面時(shí),該頁(yè)面被服務(wù)器端的JSP引擎轉(zhuǎn)換為被稱為Servelet的Java程序,然后由JSP引擎調(diào)用Java編譯器,將Servelet(.java)編譯為Class文件(.class),并由Java虛擬機(jī)執(zhí)行,執(zhí)行結(jié)果為頁(yè)面,返回給Web服務(wù)器,由Web服務(wù)器傳遞到瀏覽器。

10.2TomcatWeb服務(wù)器

自從JSP發(fā)布之后,推出了各式各樣的JSP引擎。Tomcat是ApacheGroup推出的一個(gè)免費(fèi)的開源項(xiàng)目,它可以作為Web服務(wù)器使用,也可以作為其他Web服務(wù)器的JSP引擎。

Tomcat目前的最新版本為6.0.14,可以從/中免費(fèi)下載,安裝Tomcat6.0之前首先要安裝JRE5。如果使用JBuilder2006則無(wú)需再安裝Tomcat即可調(diào)試JSP頁(yè)面,因?yàn)镴Builder2006已經(jīng)附帶了Tomcat4.0及Tomcat5.5,可以直接使用。如果想使用最新的Tomcat版本,也可以按照下面的步驟安裝后,再在JBuilder2006中配置使用新版本。

Tomcat可在Windows及Linux等多種操作系統(tǒng)下運(yùn)行,下載時(shí)應(yīng)根據(jù)操作系統(tǒng)選擇合適的版本。下面以WindowsXP操作系統(tǒng)為例簡(jiǎn)要介紹Tomcat6.0的安裝步驟。

適合Windows各版本的安裝程序?yàn)橐粋€(gè)EXE文件,例如Tomcat6.0.14安裝程序的文件名為apache-tomcat-6.0.14.exe,執(zhí)行該程序按照提示即可安裝。

(1)運(yùn)行安裝程序,稍候片刻,顯示如圖10.2所示的畫面,單擊Next按鈕,在圖10.3所示的畫面中點(diǎn)擊IAgree按鈕接受Tomcat許可協(xié)議。

(2)選擇安裝類型。如圖10.4所示,通常只需接受默認(rèn)安裝類型Normal,直接點(diǎn)擊Next按鈕即可。圖10.2安裝程序啟動(dòng)畫面圖10.3接受Tomcat許可協(xié)議圖10.4選擇安裝類型

(3)選擇安裝位置。在圖10.5中指定安裝位置,如果使用默認(rèn)安裝位置,只需直接點(diǎn)擊Next按鈕即可。如果需要選擇安裝位置,可點(diǎn)擊Browse按鈕,在彈出的對(duì)話框中選擇安裝目錄。

(4)配置端口、用戶名和密碼。圖10.6允許指定Tomcat服務(wù)器所使用的端口,默認(rèn)端口設(shè)定為8080。如果你的計(jì)算機(jī)已安裝了其他Web服務(wù)器或代理服務(wù)器使用了該端口,可以在圖10.6中修改該端口(HTTP/1.1ConnectorPort)。圖10.6還允許設(shè)定Tomcat服務(wù)器管理員賬號(hào)和密碼,如果修改了用戶名和密碼,則務(wù)必牢記。設(shè)定完畢后點(diǎn)擊Next按鈕。圖10.5指定安裝目錄圖10.6配置端口、用戶名和密碼

(5)?Tomcat安裝程序會(huì)自動(dòng)查找Java虛擬機(jī)的安裝位置,如果你的計(jì)算機(jī)安裝了多個(gè)版本的Java虛擬機(jī),可自行指定Java虛擬機(jī)所在目錄。如果不需修改,則直接點(diǎn)擊Install按鈕開始安裝,如圖10.7所示。

(6)安裝完畢顯示如圖10.8所示的畫面,點(diǎn)擊Finish按鈕完成安裝并啟動(dòng)Tomcat服務(wù)器。如果成功啟動(dòng)Tomcat服務(wù)器,將在任務(wù)欄上顯示如圖10.9所示的Tomcat圖標(biāo)??梢杂覔粼搱D標(biāo),通過(guò)彈出式菜單配置、停止和啟動(dòng)Tomcat服務(wù)器。圖10.7選擇JRE安裝位置圖10.8安裝完畢圖10.9任務(wù)欄圖標(biāo)

(7)測(cè)試是否安裝成功。安裝完畢后,啟動(dòng)Tomcat服務(wù)器,打開Web瀏覽器,在地址欄中輸入http://localhost:

8080/,出現(xiàn)如圖10.10所示的畫面,表示Tomcat安裝成功。圖10.10測(cè)試是否安裝成功 10.3JSP簡(jiǎn)介

JSP是由Sun公司在Java語(yǔ)言的基礎(chǔ)上開發(fā)出來(lái)的一種動(dòng)態(tài)網(wǎng)頁(yè)制作技術(shù),提供在HTML代碼中混合程序代碼、由語(yǔ)言引擎解釋執(zhí)行程序代碼的能力。

在JSP環(huán)境下,HTML代碼主要負(fù)責(zé)描述信息的顯示樣式,而程序代碼則用來(lái)描述處理邏輯。普通的HTML頁(yè)面只依賴于Web服務(wù)器,而JSP頁(yè)面需要附加的語(yǔ)言引擎分析和執(zhí)行程序代碼。程序代碼的執(zhí)行結(jié)果被重新嵌入到HTML代碼中,然后一起發(fā)送給瀏覽器。JSP是面向Web服務(wù)器的技術(shù),客戶端瀏覽器不需要任何附加的軟件支持。執(zhí)行JSP代碼需要在服務(wù)器上安裝JSP引擎,JSP中的Java代碼均在服務(wù)器端執(zhí)行。在瀏覽器中使用“查看源文件”菜單是無(wú)法看到JSP源代碼的,只能看到結(jié)果——HTML代碼。JSP頁(yè)面看起來(lái)像普通HTML頁(yè)面,但它允許嵌入執(zhí)行代碼。

JSP技術(shù)使得程序員可以使用平常得心應(yīng)手的工具并按照平常的方式來(lái)書寫HTML語(yǔ)句,然后將動(dòng)態(tài)部分用特殊的標(biāo)記(或稱為標(biāo)簽)嵌入即可,這些標(biāo)記常常以“<%”開始并以“%>”結(jié)束。程序10.1是一個(gè)簡(jiǎn)單的JSP頁(yè)面,在Tomcat安裝目錄下的webapps目錄下創(chuàng)建一個(gè)子目錄,例如hello,然后使用文本編輯程序輸入該文件內(nèi)容,保存到該目錄下,文件的類型為jsp,例如可命名為hello.jsp。在瀏覽器地址欄中輸入http://localhost:8080/hello/hello.jsp,即可看到該頁(yè)面的執(zhí)行結(jié)果,它將輸出“helloworld”。該文件中的out.println(“helloworld”)將被解釋為System.out.println(“helloworld”)。【程序10.1】一個(gè)簡(jiǎn)單的JSP頁(yè)面。

<html>

<head>

<title>一個(gè)簡(jiǎn)單的JSP頁(yè)面</title>

</head>

<body>

<I><%out.println("helloworld");%></I>

</body>

</html>通常,JSP文件應(yīng)以“.jsp”為擴(kuò)展名,并將它放置到任何你可以放置普通Web頁(yè)面的路徑下。

JSP使用標(biāo)簽和Scriplet(用標(biāo)準(zhǔn)Java語(yǔ)法寫的一小段內(nèi)嵌入JSP文件中的代碼)編寫頁(yè)面動(dòng)態(tài)內(nèi)容,JSP可以通過(guò)標(biāo)簽和Scriplet引用JavaEE服務(wù)器端的Bean(可理解為符合JavaEE特定標(biāo)準(zhǔn)的Java類)。通??梢詫⒁恍┎豢梢姷纳虅?wù)邏輯放在這些Bean中實(shí)現(xiàn),而JSP頁(yè)面主要用于展現(xiàn)用戶界面。限于篇幅,本章僅通過(guò)例子簡(jiǎn)單介紹JSP。

程序10.2是一個(gè)顯示當(dāng)前日期事件的JSP頁(yè)面,其中使用了JSP的一個(gè)重要標(biāo)簽:

<%=表達(dá)式%>該標(biāo)簽在其所在位置輸出表達(dá)式的值。

【程序10.2】顯示當(dāng)前日期時(shí)間JSP頁(yè)面。

<html>

<head>

<title>FirstPage</title>

</head>

<body>

Todayis:

<%=newjava.util.Date()%>

</body>

</html>

10.4案例:網(wǎng)上書店查詢頁(yè)面

10.4.1功能需求

本節(jié)給出一個(gè)連接數(shù)據(jù)庫(kù)的JSP頁(yè)面的實(shí)例,本實(shí)例為一個(gè)網(wǎng)絡(luò)書店應(yīng)用系統(tǒng)的功能模塊。該模塊允許客戶在線查詢所有不同圖書的信息,這些信息包括:圖書的作者、封面照片、價(jià)格、ISBN、版本號(hào)、出版時(shí)間及該書的一些簡(jiǎn)介。

圖10.11和圖10.12是本案例的運(yùn)行畫面。圖10.11使用一個(gè)選擇列表框顯示所有圖書名的列表,用戶選擇圖書,然后點(diǎn)擊“查看詳細(xì)信息”按鈕顯示如圖10.12所示的詳細(xì)信息。圖10.11顯示圖書列表圖10.12顯示圖書詳細(xì)信息本案例采用Access數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)中有一個(gè)名為products的表,結(jié)構(gòu)如表10.1所示。表10.1案例所用表結(jié)構(gòu)10.4.2創(chuàng)建books.jsp頁(yè)面

本節(jié)首先創(chuàng)建books.jsp頁(yè)面,顯示可選擇的圖書,其頁(yè)面運(yùn)行效果如圖10.11所示。JSP頁(yè)面是標(biāo)準(zhǔn)的文本文件,主體結(jié)構(gòu)為HTML。程序10.3給出了books.jsp源文件,為了便于解釋,每行加了一個(gè)行號(hào)。

books.jsp使用了很多標(biāo)準(zhǔn)的HTML標(biāo)記來(lái)構(gòu)造頁(yè)面。第4行和第57行分別為HTML起始和結(jié)束標(biāo)記;第5行到第7行為HTML文檔頭部;從第8行開始為HTML的主體(body)部分,該部分由一個(gè)表單(Form)構(gòu)成,提交表單時(shí),訪問(wèn)bookInf.jsp頁(yè)面顯示詳細(xì)信息。表單主要由一個(gè)顯示圖書名列表的選擇列表框(select標(biāo)記)和一個(gè)按鈕構(gòu)成,列表框中顯示的圖書名需要通過(guò)Java代碼從數(shù)據(jù)庫(kù)中讀取。除了標(biāo)準(zhǔn)的HTML標(biāo)記,books.jsp中還用到部分JSP標(biāo)簽,下面簡(jiǎn)單解釋一下其作用:

第1行指定本頁(yè)面采用的編碼為gb2312,主要是為了JSP引擎能正確處理中文信息。

第2行<%--開始,--%>結(jié)束為注釋,解釋第3行的作用。

第3行再由JSP引擎轉(zhuǎn)換為Java代碼importjava.sql.*,讀者應(yīng)能很容易看出其對(duì)應(yīng)關(guān)系。第1行和第3行均為對(duì)整個(gè)頁(yè)面的設(shè)置(<%page%>),應(yīng)放在HTML標(biāo)記開始前。

從第16行開始嵌入大段的Java代碼,這部分代碼用于連接數(shù)據(jù)庫(kù),采用了第9章介紹的訪問(wèn)數(shù)據(jù)庫(kù)的過(guò)程,訪問(wèn)ODBC數(shù)據(jù)源bookstore中的products數(shù)據(jù)表,讀取所有記錄的title字段。第38行用表達(dá)式標(biāo)簽輸出圖書名?!境绦?0.3】books.jsp源文件。

1.<%@pagecontentType="text/html;charset=gb2312"%>

2.<%--importjava.sql.*fordatabaseclasses--%>

3.<%@pageimport="java.sql.*"%>

4.<html>

5.<head>

6.<title>圖書列表</title>

7.</head>

8.<body>

9.<h1>可選擇的圖書</h1>

10.<!--createform-->11.<formmethod="post"action="bookInf.jsp">

12.<p>請(qǐng)從列表中選擇圖書名</p>

13.<!--createlistthatcontainsbooktitlesfromdatabase-->

14.<selectname="bookTitle">

15.<%--連接數(shù)據(jù)庫(kù)--%>

16.<%

17.//setupdatabaseconnection

18.try

19.{

20.Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");21.//connecttodatabase

22.Connectionconnection=

23.DriverManager.getConnection(

24."jdbc:odbc:bookstore");

25.//obtainlistoftitles

26.if(connection!=null)

27.{

28.Statementstatement=

29.connection.createStatement();

30.ResultSetresults=statement.executeQuery(

31."SELECTtitleFROMproducts");32.while(results.next()==true)

33.{

34.StringcurrentTitle=

35.results.getString("title");

36.%>

37.<%--循環(huán)輸出圖書名--%>

38.<option><%=currentTitle%></option>

39.<%

40.}//循環(huán)結(jié)束

41.results.close();//關(guān)閉結(jié)果集

42.connection.close();//關(guān)閉數(shù)據(jù)庫(kù)連接43.}//endif

44.}//endtry

45.//catchSQLException

46.catch(SQLExceptionexception)

47.{

48.out.println(

49."Exception:"+exception+"occurred.");

50.}

51.%>

52.</select>

53.<!--createViewInformationbutton-->

54.<p><inputtype=“submit”value=“查看詳細(xì)信息”></p>

55.</form>

56.</body>

57.</html>

10.4.3創(chuàng)建bookInf.jsp頁(yè)面

程序10.3中,當(dāng)用戶點(diǎn)擊“查看詳細(xì)信息”按鈕時(shí),由表單action屬性指定的bookInf.jsp響應(yīng)的源程序清單如程序10.4所示。通過(guò)books.jsp表單提交的圖書名參數(shù)通過(guò)request對(duì)象獲取,第13行指定表單參數(shù)使用gb2312編碼,第15行通過(guò)request.

getParameter獲取參數(shù),該方法的參數(shù)為表單中該項(xiàng)的名字。【程序10.4】bookInf.jsp源代碼。

1.<%@pagecontentType="text/html;charset=gb2312"%>

2.<%--importjava.sql.*fordatabaseclasses--%>

3.<%@pageimport="java.sql.*"%>

4.<!--beginHTMLdocument-->

5.<html>

6.<!--specifyheadelement-->

7.<head>

8.<!--specifypagetitle-->

9.<title>BookInformation</title>10.</head>

11.<!--beginbodyofdocument-->

12.<body>

13.<%request.setCharacterEncoding("gb2312");%>

14.<!--createaheadingforthebook'stitle-->

15.<h1><%=request.getParameter("bookTitle")%></h1>

16.<%--beginJSPscriptlettoconnecttoadatabase--%>

17.<%

18.//setupdatabaseconnection

19.try

20.{21.//specifydatabaselocation

22.

23.Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

24.//obtainconnectiontodatabase

25.Connectionconnection=DriverManager.getConnection(

26."jdbc:odbc:bookstore");

27.

28.//obtainlistoftitlesfromdatabase

29.if(connection!=null)

30.{

31.//createstatement32.Statementstatement=connection.createStatement();

33.

34.//executequerytogetbookinformation

35.ResultSetresults=statement.executeQuery(

36."SELECTcover,title,authors,price,isbn,"+

37."edition,copyrightYear,description"+

38."FROMproductsWHEREtitle='"+

39.request.getParameter("bookTitle")+"'");

40.

41.results.next();//movecursortothefirstrow

42.43.%><%--endscriptlettoinsertliteralXHTML--%>

44.

45.<!--displaybookcoverimage-->

46.<imgsrc="images/<%=results.getString(

47."cover")%>"alt="Bookcoverfor

48.<%=results.getString("title")%>.">

49.

50.<!--displayauthors-->

51.<p>作者:<%=results.getString(

52."authors")%></p>

53.54.<!--displayprice-->

55.<p>價(jià)格:<%=results.getString("price")%></p>

56.

57.<!--displayISBN-->

58.<p>ISBN:<%=results.getString("isbn")%></p>

59.

60.<!--displayeditionnumber-->

61.<p>版本:<%=results.getInt("edition")%></p>

62.

63.<!--displaycopyrightyear-->

64.<p>出版時(shí)間:<%=results.getString(65."copyrightYear")%></p>

66.

67.<!--displayauthors-->

68.<p>簡(jiǎn)介:<%=results.getString(

69."description")%></p>

70.

71.<!--createlinktoBookList-->

72.<p><ahref="books.jsp">圖書列表</a></p>

73.

74.<%//continuescriptlet

75.76.results.close();//closeresultset

77.connection.close();//closedatabaseconnection

78.

79.}//endif

80.

81.}//endtry

82.

83.//catchSQLException

84.catch(SQLExceptionexception)

85.{

86.out.println("Exception:"+exception+"occurred.");87.}

88.

89.%><%--endscriptlet--%>

90.

91.</body>

92.</html>

實(shí)訓(xùn)十簡(jiǎn)易Web應(yīng)用

一、實(shí)訓(xùn)目的

1.了解JSP的基本原理。

2.使用Tomcat運(yùn)行JSP編寫的Web應(yīng)用。

二、實(shí)訓(xùn)內(nèi)容

1.網(wǎng)上書店查詢頁(yè)面案例的運(yùn)行。

(1)建立數(shù)據(jù)庫(kù)。使用Access建立一個(gè)數(shù)據(jù)庫(kù)文件,然后在該數(shù)據(jù)庫(kù)中按照表10.1中的字段結(jié)構(gòu)建立表products,productID作為該表主鍵,并在表中輸入若干條記錄。

(2)建立ODBC別名。參照實(shí)訓(xùn)九中介紹的方法建立一個(gè)ODBC別名bookstore,用于訪問(wèn)上面建立的數(shù)據(jù)庫(kù)。

(3)輸入源程序。

●不使用集成環(huán)境

①在Tomcat安裝目錄下的webapps目錄下創(chuàng)建一個(gè)子目錄bookstore,在該目錄下創(chuàng)建images子目錄,將products表中所有記錄cover字段(圖書封面圖片文件名)代表的圖片復(fù)制到images子目錄中。

②使用記事本輸入books.jsp和bookInf.jsp,保存到bookstore目錄下。③啟動(dòng)Tomcat6.0。如果Tomcat6.0未自動(dòng)啟動(dòng),可通過(guò)單擊“開始”菜單→程序→ApacheTomcat6.0啟動(dòng)“MonitorTomcat”,然后通過(guò)任務(wù)欄圖標(biāo)啟動(dòng)Tomcat6.0。

④啟動(dòng)IE

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論