JSP語法簡明入門教程大全_第1頁
JSP語法簡明入門教程大全_第2頁
JSP語法簡明入門教程大全_第3頁
JSP語法簡明入門教程大全_第4頁
JSP語法簡明入門教程大全_第5頁
已閱讀5頁,還剩133頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 HYPERLINK /bbs/index.php 5天1 HYPERLINK /bbs/thread.php?fid=12&page=3 cI HYPERLINK /bbs/read.php?tid=3678 hTo下ng載d HYPERLINK /bbs/post.php?fid=12 i站 HYPERLINK /bbs/profile.php an HYPERLINK /bbs/post.php?action=vote&fid=12 】.n HYPERLINK /zt.htm 整etww譽(yù).5天1cIhTo下ng載di站an】.n HYPERLINK /bbs/index.php HYP

2、ERLINK /index.htm 首頁 | HYPERLINK /siuke.htm 秀客 | HYPERLINK /bbs/index.php 秀客論壇 | HYPERLINK /zt.htm 轉(zhuǎn)帖工具 | 秀客收藏夾 windecember: HYPERLINK /bbs/login.php?action=quit 退出 | HYPERLINK /bbs/profile.php 控制面板 | HYPERLINK /bbs/message.php 短消息 | HYPERLINK /bbs/search.php 搜索 | HYPERLINK /bbs/member.php 會(huì)員 | HYPE

3、RLINK /bbs/sort.php 統(tǒng)計(jì)與排行 | HYPERLINK /bbs/hack.php?H_name=bank 銀行 | HYPERLINK /bbs/faq.php 幫助 | HYPERLINK /bbs/index.php 社區(qū) HYPERLINK /bbs/index.php 秀客論壇 - HYPERLINK /bbs/thread.php?fid=12&page=3 網(wǎng)絡(luò)編程 - JSP入門教程標(biāo)題: JSP入門教程 HYPERLINK /bbs/job.php?rd_previous=1&fid=12&tid=3678&fpage=3&goto=previous 上一

4、主題 | HYPERLINK /bbs/job.php?rd_previous=1&fid=12&tid=3678&fpage=3&goto=next 下一主題siuke管理員精華 60 發(fā)帖 3459 秀值 2511 秀幣 1587 狀態(tài) 離線 貢獻(xiàn)值 4 點(diǎn)在線時(shí)間(小時(shí)) 519 注冊時(shí)間 2005-07-17 最后登陸 2005-11-19JSP入門教程JavaServer Pages (JSP)是基于Java的技術(shù),用于創(chuàng)建可支持跨平臺(tái)及跨Web服務(wù)器的動(dòng)態(tài)網(wǎng) 頁。JSP可與微軟的Active Server Pages (ASP)相媲美,但JSP使用的是類似于HTML的標(biāo)記和Java

5、 代碼 片段而不是用VBScript。當(dāng)你使用不提供ASP本地支持的Web服務(wù)器(例如 Apache或Netscape服 務(wù)器)時(shí),你就可以考慮使用JSP了。你雖然也可以為這些服務(wù)器弄一個(gè)ASP附加軟件模塊,但是 太昂貴了?,F(xiàn)在Sun公司并不會(huì)因你使用JSP向你收費(fèi)(雖然將來可能要收),況且用于Solaris、 Linux以及Windows系統(tǒng)的組件都很容易獲得。不要把JSP與服務(wù)器端的JavaScript語言搞混了。Web服務(wù)器自動(dòng)將通過JSP生成的Java代碼片段轉(zhuǎn) 換成Java 片段(servlets)。 JSP也可自動(dòng)控制許多功能,如過去用Perl腳本編寫功能程序或像 ASP這樣的服務(wù)

6、器專用API(應(yīng)用編程接口)。我們馬上就要開始幫助你建立一個(gè)使用JSP 技術(shù)的網(wǎng)站范例了。準(zhǔn)備好計(jì)算機(jī)以使用JSP你需要Java2軟件開發(fā)工具箱(J2SDK),過去稱之為Java開發(fā)工具箱(JDK)、JavaServer 網(wǎng)絡(luò) 開發(fā)工具箱(JSWDK)、Tomcat,或者其它能支持JSP的Web服務(wù)器。升陽公司為Windows、 Solaris以及 Linux平臺(tái)提供免費(fèi)的J2SDK和JSWDK。如果你想在現(xiàn)有的Web服務(wù)器上使用JSP,而此服務(wù)器本身不支持JSP和Java 代碼片段,可以試用 Allaire公司的Jrun。它可以為Netscape的Enterprise Server和Fast

7、track Server、微軟的Internet Information Server(IIS)和Personal Web Server(PWS)、Apache以及其他服務(wù)器充當(dāng)Web服 務(wù)器附件。你也可以使用Apache服務(wù)器的Java版,其中包含最新的JSWDK。下載并安裝所需的軟件 HYPERLINK http:/www.51ch www.51ch目前,版本號(hào)為1.2.2-001的J2SDK可下載版以可安裝的歸檔文件形式出現(xiàn)。這個(gè)大約20MB的下載量軟件可提供一個(gè)徹底的Java開發(fā)環(huán)境,讓你創(chuàng)造任何基于Java并且利用了而標(biāo)準(zhǔn)核心API的解決 方案。其實(shí),你的Web服務(wù)器使用JSP的唯一

8、條件是要有Java編輯器。要讓W(xué)eb服務(wù)器知道編輯器 的位置,需要JAVA_HOME 環(huán)境變量設(shè)置為J2SDK安裝目錄。如果你已經(jīng)在Windows系統(tǒng)中進(jìn)行 了安裝并且接受了默認(rèn)目錄, 請將“set JAVA_HOME=C:1.2.2”添加到你的“autoexec.bat”文件 中,然后重新啟動(dòng)。安裝J2SDK后,下載并安裝JSWDK或者是Tomcat 版,即基于Java的Apache Web服務(wù)器的 版。你把JSWDK放在什么地方是無關(guān)緊要的,只要你以后能找到它就行。通常,將其放在頂層目 o錄ng中d,i這an樣.你n在et替換wwJSwW.D5K1或cJShDoKn時(shí)g無di需a刪n除.另

9、ne一t個(gè)w軟w件w。.5安1裝c好ho這n個(gè)g文d件ia后n,.準(zhǔn)ne備t工作已經(jīng)就5天1cIhTo下ng載di站an】.n整etww譽(yù).5天1cIhTo下ng載di站an】.n緒,你可以開始JSP開發(fā)工作了。 HYPERLINK 正確地安裝JSWDK后,請運(yùn)行“startserver”腳本程序,以啟動(dòng)Web服務(wù)器,使其按照默認(rèn)情況監(jiān)聽8080端口。你要在啟動(dòng)服務(wù)器之后查看您是否已正確地安裝了此工具,請加載一個(gè)JSP樣本文 件(./locahost:8080/examples/jsp/)。如果你能成功地運(yùn)行這些樣本文件,說明你已經(jīng)正確地安裝了這個(gè)軟件。如果你在用來啟動(dòng)服務(wù)器的控制臺(tái)窗口中看到

10、報(bào)錯(cuò)信息,你就需要做些修改。最經(jīng)常發(fā)生的問題是沒有設(shè)置或不正確地設(shè)置了JAVA_HOME環(huán)境變量。要看到當(dāng)前環(huán)境變量設(shè)置 情況,要請?jiān)贒OS提示符下鍵入“set”設(shè)置。開始在解釋 JSP語法前,創(chuàng)建一個(gè)快捷網(wǎng)頁,顯示目當(dāng)前的日期和時(shí)間,并然后將之其保存為sample. jsp:First PageToday is:.把這個(gè)文件以及你所有的HTML 和 JSP 頁面放在JSWDK安裝目錄下的網(wǎng)頁目錄里。你可以從./ localhost:8080/sample.jsp加載此網(wǎng)頁。該網(wǎng)頁首次被訪問時(shí),Web服務(wù)器會(huì)把JSP編譯成Java代 碼片段,這樣你就能夠看到當(dāng)前的日期和時(shí)間了。你已經(jīng)下載、安裝

11、并配置好了開發(fā)環(huán)境,你可以開始學(xué)習(xí)JSP語法并創(chuàng)建自己的基于JSP的解決方 案了。JSP基本語法 講完安裝問題后,現(xiàn)在進(jìn)入來討論JSP語法。一個(gè)投機(jī)取巧的辦法是下載語法卡片。如果你不熟悉 Java編程,也許你想看一下Sun的指南 。然而網(wǎng)頁創(chuàng)建者并不需要進(jìn)行太多的Java開發(fā)。除了一 些方法調(diào)用,在你的JSP網(wǎng)頁里應(yīng)盡可能少用Java代碼。記住以上提示,我們首先來看一看JSP指令和腳本元素,之后我們會(huì)解釋JavaBeans和隱含對象。 共有五種JSP指令和腳本元素。在JSP 1.0版中,大部分JSP被一個(gè)以“”結(jié)尾的 的標(biāo)記括在其中。在更新的JSP 1.1規(guī)范出臺(tái)后,就有了與XML兼容的版本。

12、JSP指令和腳本元素Directives Declarations Expressions Code Fragment/Scriptlet Comments 指令 JSP指令是為JSP引擎而設(shè)計(jì)的。他們并不直接產(chǎn)生任何可見輸出,而只是告訴引擎如何處理其余 JSP頁面。這些指令始終被括在 “”標(biāo)記中。兩個(gè)最重要的指令 是“pagePage”和“Include”?!癟aglib”指令不在討論之列,但是在用JSP1.1創(chuàng)建自定義標(biāo)記可以使 用它。幾乎在所有JSP頁面頂部都會(huì)看到“Page”指令。盡管不是必須的,但它可以讓你指定: 到何處查找起支持作用的Java類別: HYPERLINK mailto

13、:n%gdipaange.nimeptortw i, HYPERLINK HYPERLINK http:/www.51cho出ng現(xiàn)dJiavaan運(yùn).行n問et題時(shí) www.51cho出ng現(xiàn)dJiavaan運(yùn).行n問et題時(shí),將網(wǎng)上沖浪者引向何處:,5天1cIhTo下ng載di站an】.n整etww譽(yù).5天1cIhTo下ng載di站an】.n還有你是否需要管理用戶的會(huì)話級(jí)信息,這些信息可能來自多個(gè)網(wǎng)頁(在下面的JavaBeans一節(jié) 將對此做進(jìn)一步講)述:.“Include”指令可以把你的內(nèi)容分成更多可管理的元素,比如包括一個(gè)普通頁面頁眉或頁腳的元 素。包含的網(wǎng)頁可以是一個(gè)固定的HTML

14、頁面或更多的JSP內(nèi)容:聲明 JSP聲明用來讓你定義頁面級(jí)變量,以保存信息或定義JSP頁面的其余部分可能需要的支持方法。 如果你發(fā)現(xiàn)代碼太多,通常最好把它們寫成一個(gè)獨(dú)立的Java類別。聲明一般都在“”標(biāo)記 中。一定要以分號(hào)(;)結(jié)束變量聲明,因?yàn)槿魏蝺?nèi)容都必須是有效的Java語句:。表達(dá)式 有了JSP表達(dá)式,表達(dá)式評估結(jié)果會(huì)被轉(zhuǎn)換成一個(gè)字符串,并且被直接包括在輸出頁面之內(nèi)。JSP 表達(dá)式包含在“” 標(biāo)記中,沒有分號(hào),除非在加引號(hào)的字符串部分使用分號(hào)。 .代碼片段/腳本片段代碼片段/腳本片段(Scriptlets) JSP代碼片段或腳本片段是嵌在“”標(biāo)記中的。這種Java代碼在Web服務(wù)器響應(yīng)請

15、求時(shí)就會(huì)運(yùn)行。在腳本片段周圍可能是原始的HTML或XML語句,在這些 地方,代碼片段可以使你創(chuàng)建條件執(zhí)行代碼,或要用到另外一段代碼的代碼。例如,以下的代碼組合使用表達(dá)式和代碼片段,顯示H1、H2、H3和H4標(biāo)記中的字符串“Hello”。代碼片段并不局限 于一行源代碼:% for (int i=1; iHHello/H.注釋 最后一個(gè)主要的JSP元素是嵌入式注釋。盡管你始終可以在文件中加入HTML注釋,但用戶在查看 頁面源代碼時(shí)會(huì)看到這些注釋。如果你不想讓用戶看到它,你就應(yīng)該將其嵌入“” 標(biāo) 記中:.帶JavaBean 的JSP 雖然你可以把大段的代碼放在腳本片段(scriptlet)內(nèi),但是絕

16、大多數(shù)的Java代碼屬于可重復(fù)使用 的名為JavaBea的組件。JavaBean類似于ActiveX控件:他們都能提供常用功能并且可以重復(fù)使 用。JavaBean的值是通過一些屬性獲得的,你可通過這些屬性訪問JavaBean設(shè)置。以一個(gè)人來打比 方,這個(gè)人就是一個(gè)JavaBean,這個(gè)人的名字、身份證號(hào)碼以及住址就是其屬性。在JSP網(wǎng)站, 你基本上就是通過玩“Connect the beans)”來使你的網(wǎng)站動(dòng)態(tài)化。假設(shè)JavaBean先于網(wǎng)站被創(chuàng)建出來,你需要做的第一件事就是告訴JSP頁面它將要用到一 HYPERLINK http:/www.51cho個(gè)ng www.51cho個(gè)ng“Bde

17、iana”n。.你n可et以用ww“g”d標(biāo)i記a來n做.n到e這t一w點(diǎn)w:5天1cIhTo下ng載di站an】.n整etww譽(yù).5天1cIhTo下ng載di站an】.n。 HYPERLINK “”標(biāo)記要求你用“id”屬性來識(shí)鑒別Bean。這里你提供一個(gè)名字來JSP頁面其余部分的Bean。除了“id”屬性,你還須告訴網(wǎng)頁面從何處查找Bean,或者它的Java類別名是什么。這種 類別屬性提供確 認(rèn)Bean的功能,其他一些方法也可以做到這一點(diǎn)。最后一個(gè)必需的元素 是“scope”屬性。有了“scope”屬性的幫助,你就能告訴Bean為單一頁面(默認(rèn)情況) scope=page、為scope=re

18、quest請求為會(huì)話scope=session,或者為整個(gè)應(yīng)用程序 scope=application保持留信息。有了會(huì)話范圍,你就能非常容易地在JSP網(wǎng)頁面上維護(hù)購物車 等項(xiàng)目。一旦你聲名了一個(gè)JavaBean,你就可以訪問它的屬性來定制它。要獲得屬性值,請用“”標(biāo)記。有了這個(gè)標(biāo)記,你就能指定將要用到的Bean名稱(從useBean的id字段得 到)以及你想得到其值的屬性。實(shí)際的值被放在輸出中:。要改變JavaBean屬性,你必須使用“”標(biāo)記。對這個(gè)標(biāo)記,你需要再次識(shí)別Bean 和屬性,以修改并額外提供新值。如果命名正確,這些值可以從一個(gè)已提交的表中直接獲得:參 數(shù)獲得:;可以從一個(gè)參數(shù)獲得

19、,但你必須直接命名屬性和參數(shù):或者直接用一個(gè)名字稱和值來設(shè)置: jsp:setProperty id=localName property=serialNumber value= /.關(guān)于JavaBean 的最后一件事: 為了Web服務(wù)器能找到JavaBean,你需要將其類別文件放在一個(gè) 特殊位置。用JSWDK,最 方便的位置是安裝目錄下的類別目錄,如jswdk-1.0.1classes。JSP隱含對象 與JSP語法相關(guān)的最后的元素是一些叫做“隱含對象”的東西。在JSP代碼片段中,你可以利用這些 隱含對象與JSP頁面的代碼片段執(zhí)行環(huán)境產(chǎn)生互動(dòng)。應(yīng)盡量少訪問這些內(nèi)置隱含對象。但是,在一 某些情況

20、下,訪問隱含對象是可被接受的。若要充分利用隱含對象,就需了解最新的JavaServlet API。 下表列出可用的隱含對象集合。隱含對象說明request 客戶端請求,包括從GET/POST請求傳遞過來的參數(shù)response 網(wǎng)頁傳回客戶端的反應(yīng) pageContext 在此管理網(wǎng)頁屬性 session 與請求關(guān)聯(lián)的會(huì)話 application 代碼片段的運(yùn)行環(huán)境 out 傳送響應(yīng)的輸出流config 代碼片段配置對象page JSP網(wǎng)頁本身exception 有錯(cuò)的網(wǎng)頁中未被捕獲的例外這些都是用來做什么的,你又如何來使用它們呢?基本上說,在你的腳本片段里,你可以用它們 進(jìn)入執(zhí)行JSP代碼的代

21、碼片段。用不著深入了解太多的Servlet API細(xì)節(jié),我們來看看能用它們來做 到的某些事情:你可以不用表達(dá)式,直接進(jìn)入“Out”隱含對象,將某些內(nèi)容輸出到響應(yīng)中:。 用不著把一個(gè)參數(shù)直接送到JavaBean,你可以從請求對象獲取參數(shù)值: HYPERLINK http:/www.51cho www.51choi. 5天1cIhTo下ng載di站an】.n整etww譽(yù).5天1cIhTo下ng載di站an】.n HYPERLINK http:/www.51ch www.51cho在ng你d用iJaSnP進(jìn).n行e開t發(fā)的過程中,進(jìn)行更多的開發(fā)的過【程中譽(yù),如天果I創(chuàng)T建下了載Jav站aBe】ans

22、整或發(fā)理現(xiàn)JSP文件 中加入了太多的Java源代碼,你就需要?jiǎng)?chuàng)建起支持作用的Java分類(class)了,它可以協(xié)助你重 復(fù)利用源代碼并減少JSP網(wǎng)頁編譯時(shí)間。當(dāng)你需要?jiǎng)?chuàng)建Java分類文件時(shí),你必須:將JDSWK installation in目錄添加到PATH中。在autoexec.bat文件PATH行的末尾,加入“C:1.2.2/bin”。用這個(gè)命令將JAR文件復(fù)制到“jrelibext:”目錄中: copy c:jswdk-1.0.1libservlet.jar c:jdk1.2.2jrelibext.創(chuàng)建一個(gè)JSP網(wǎng)站 現(xiàn)在該是把所有這些JSP語法派上用場的時(shí)候了。我們將創(chuàng)建一個(gè)網(wǎng)頁,

23、它有一個(gè)輸入表單,可以 使用戶輸入一個(gè)股票代號(hào)以獲得出當(dāng)前股價(jià)(有20分鐘)。如果輸入有誤,則顯示報(bào)錯(cuò)網(wǎng)頁。quote.jsp首先,用 這個(gè)代碼 創(chuàng)建一個(gè)quote.jsp網(wǎng)頁并將其保存在JSWDK安裝目錄下的網(wǎng)頁目錄中。大多數(shù)的網(wǎng)頁是標(biāo)準(zhǔn)的HTML,其間散布著JSP代碼。第六行是一個(gè)網(wǎng)頁指示,表示將把所有錯(cuò)誤發(fā)送 到“errorPage.jsp”文中。第13到15行是一個(gè)腳本片段,主要說明只有提供“符號(hào)”參數(shù)才會(huì)顯示表 格?!癐f”代碼段在32到34行結(jié)束。第17行定義了要用的JavaBean,第18行從參數(shù)加載JavaBean的 符號(hào)屬性。第27行到29行顯示Bean的屬性。除了if 代碼

24、段,實(shí)際上并不涉及其它Java代碼。errorPage.jsp 下一步,將下列JSP源代碼保存到網(wǎng)頁目錄中的“errorPage.jsp”文件中。“這是一個(gè)錯(cuò)誤網(wǎng)頁”的提 示為第一行,它將isErrorPage網(wǎng)頁提示屬性設(shè)置為真。上一頁說了明錯(cuò)誤網(wǎng)頁的位置,本頁則說 明這就是錯(cuò)誤網(wǎng)頁。其它JSP文件中的JSP專用代碼只有訪問隱含例外對象才用到。網(wǎng)頁只顯示其 值:Error PageOur Error PageWe got ourselves an exception:Restart。Quotes.javaQuotes JavaBean 利用Yahoo資源來獲得股票價(jià)格。需要將此 資源保存到J

25、SWDK安裝目錄下“classescomjguru”目錄中的“quotes.java”文件中。請?jiān)诖擞肑SDK中的Javac編輯器來編輯它。你的第一個(gè)JSP網(wǎng)頁。 創(chuàng)建了這兩個(gè)JSP文件,建立了JavaBean資源文件并編輯了它后,你就可以從./localhost:8080/ quote.jsp加載“quote.jsp”文件以查看結(jié)果,假設(shè)你沒有更改JSWDK安裝設(shè)置,轉(zhuǎn)而使用別的端 口。這個(gè)網(wǎng)頁當(dāng)然能做得更漂亮,但是它已實(shí)現(xiàn)了需要實(shí)現(xiàn)的功能,并且很好地展示了JSP的功 能。秀客設(shè)計(jì): 專業(yè)網(wǎng)頁設(shè)計(jì)、平面設(shè)計(jì)論壇。網(wǎng)頁設(shè)計(jì)&平面設(shè)計(jì)初學(xué)者最受歡迎的論壇! HYPERLINK HYPERLINK

26、 HYPERLINK 5天1cI HYPERLINK /msgrd?V=1&Uin=173436316&Site=%E7%A7%80%E5%AE%A2%E8%AE%BA%E5%9D%9B&Menu=yes hTo下ng載di站an】.n整etww譽(yù).5天1cIhTo下ng載di站an】.n2005-11-11w1w3w:3.251c樓h主【譽(yù)天IT下載站】整理siuke管理員精華 60 發(fā)帖 3459 秀值 2511 秀幣 1587 狀態(tài) 離線 貢獻(xiàn)值 4 點(diǎn)在線時(shí)間(小時(shí)) 519 注冊時(shí)間 2005-07-17 最后登陸 2005-11-19 HYPERLINK http:/www.51c

27、h www.51chJSP入門教程(二)歡迎使用JavaServer Pages(以下簡稱JSP)技術(shù)制作動(dòng)態(tài)內(nèi)容網(wǎng)頁的方法。 如果你希望學(xué)習(xí)這篇教程的話,我想你一定是這項(xiàng)技術(shù)的新手。你可能想成為一名利用JSP技術(shù)開發(fā)網(wǎng)絡(luò)應(yīng)用程序的程序員或者網(wǎng)頁設(shè)計(jì)師。本教程中包含了一系列JSP的技巧和一些簡單的代碼的 寫法,每一步都舉了一組例子來講述原理。我建議你在學(xué)習(xí)本教程之前先去看一看FAQ,了解如果配置你的服務(wù)器好讓他能支持并運(yùn)行JSP。 那樣你就可以跳過前邊的內(nèi)容直接看你感興趣的內(nèi)容了。OK,費(fèi)話少說,Lets go! 第一課:真正的開始 頁面明:在很多JSP文件中你都要寫上這樣的說明。在hello

28、word.jsp中:傻瓜也看得出來,這句話沒什么大用,只是簡要的說明一下這段代碼的作用。 你可以在JSP文件中的任何地方寫這種代碼,但是好的習(xí)慣是把他寫在最前面,還有,因?yàn)樗荍SP標(biāo)簽,記住一定要放在前面,呵include說明:include用來在主JSP文件中調(diào)用本地的一個(gè)其他文件,通常是一些版權(quán)信息啦,腳本語言啦等其 他任何你想在其他文件中重復(fù)使用的代碼。在這個(gè)例子中就是調(diào)用了一個(gè)圖片其實(shí)。大家明白這 個(gè)意思就得了。隨便說兩句: 在JSP中對寫法非常敏感,不可以有一點(diǎn)錯(cuò)誤。舉個(gè)例子,把寫成那樣服務(wù)器會(huì)出現(xiàn)錯(cuò)誤信息。一些如類名,包名,路徑o5天1cI HYPERLINK /msgrd?V=

29、1&Uin=173436316&Site=%E7%A7%80%E5%AE%A2%E8%AE%BA%E5%9D%9B&Menu=yes hTo下ng載di站an】.n整etww譽(yù).5天1cIhTo下ng載di站an】.n2005-11-11w1w3w:3.551#ch1 o HYPERLINK /bbs/profile.php?action=show&uid=1 【譽(yù)天IT下載站】整理siuke管理員精華 60 發(fā)帖 3459 秀值 2511 秀幣 1587 狀態(tài) 離線 貢獻(xiàn)值 4 點(diǎn)在線時(shí)間(小時(shí)) 519 注冊時(shí)間 2005-07-17 最后登陸 2005-11-19 HYPERLINK h

30、ttp:/www.51ch www.51chJSP入門教程(三)第二課:用HTML表單 大多數(shù)情況下,商業(yè)的網(wǎng)站都要有一些表單,比如說輸入一下消費(fèi)者的姓名啦,地址啦,或者敲一個(gè)詞來用搜索引擎來查一下啦,或者市場人員從來訪者處收集一些數(shù)據(jù)供參考什么的。那些表單傳回的數(shù)據(jù)怎么處理的? 來訪者通過表單向JSP引擎輸入了數(shù)據(jù),并保存在了request對象中,那么接下來怎么辦? 圖2-1向你展示了數(shù)據(jù)流是如何在服務(wù)器和客戶之間傳遞的(至少在SUN的JSP referenceimplementation是這么做的,別的JSP引擎工作起來可能會(huì)有一點(diǎn)點(diǎn)的不同,其實(shí)大同小異,都差不多)字兒太小了,可能看不大清

31、吧?俺來解釋一下了只好。 首先,JSP引擎把存放在request對象中的數(shù)據(jù)發(fā)到JSP頁面指定的服務(wù)器端的組件(JavaBeans組件, servlet,或者enterprise bean),組件收到這些個(gè)數(shù)據(jù)以后,有可能再存這些數(shù)據(jù)到數(shù)據(jù)庫或 者其他的地方存放起來,同時(shí),返回一個(gè)response對象給JSP引擎。JSP引擎再把response對象傳 給JSP頁面,這時(shí)的頁面包含了定義好的格式和從服務(wù)器端得到的數(shù)據(jù)。這時(shí)JSP引擎和Web服務(wù)器再發(fā)送一個(gè)整理好的完整的頁面給客戶,也就是這們在瀏覽器上看到的結(jié)果。客戶和服務(wù)器間的通信協(xié)議可以用HTTP,當(dāng)然也可以用其他的。Request和Resp

32、onse對象在你制作的JSP原代碼中起作用。到于request對象到底怎么用,我要在 接下來詳細(xì)的講給你聽。如何創(chuàng)建表單 用HTML定義一些有代表性的表單做成一個(gè)JSP文件,然后用JSP標(biāo)簽在表單和服務(wù)器端對象(通常都用Bean)傳遞數(shù)據(jù)。一般情況下是這么干的:1、 寫JSP原文件,創(chuàng)建一些HTML的表單并命名。2、 在Java文件里寫B(tài)ean,定義屬性,GET或者SET方法來配合已經(jīng)被你指定好名字的表單。3、 回到JSP原文件中,增加標(biāo)簽來創(chuàng)建一個(gè)或者調(diào)用一個(gè)現(xiàn)成的Bean。4、 增加標(biāo)簽設(shè)置HTML表單中需要SET方法的Bean的屬性。5、 增加標(biāo)簽設(shè)置HTML表單中需要GET方法的Bea

33、n的屬性。6、 如果需要處理更多的用戶數(shù)據(jù),用request對象。 說了半天你可能看不懂,其實(shí)看一個(gè)例子你就懂了。 先看一個(gè)簡單的hello的例子吧:這段程序其實(shí)還是計(jì)算機(jī)程序里那個(gè)最經(jīng)典的“hello,world”的程序,只不過呢,我使他撓了一點(diǎn) 彎兒,使他看起來比較智能和復(fù)雜。首先你輸入你的名字,然后Duke跟你說:“hello!” HYPERLINK HYPERLINK o5天1cIhTo下ng載di站an】.n整etww譽(yù).5天1cIhTo下ng載di站an】.n HYPERLINK 看看代碼吧:dukebanner.html 主JSP文件:hellouser.jspHello, Us

34、er My name is Duke. Whats yours?td width=150 HYPERLINK HYPERLINK 5天1cIhTo下ng載di站an】.n整etww譽(yù).5天1cIhTo下ng載di站an】.n HYPERLINK http:/www.51cho www.51cho回應(yīng)文件:response.jsp Hello, ! 處理數(shù)據(jù)的Bean:(namehandler.java) package hello;public class NameHandlerprivate String username; public NameHandler() username = n

35、ull;public void setUsername( String name ) username = name; HYPERLINK HYPERLINK HYPERLINK 5天1cIhTo下ng載di站an】.n整etww譽(yù).5天1cIhTo下ng載di站an】.npublic String getUsername() HYPERLINK return username;建立HTML表單 一個(gè)HTML的窗分為三個(gè)部分:標(biāo)簽,輸入方法,提交按鈕發(fā)數(shù)據(jù)到服務(wù)器。一般的HTML頁面里,是這么寫的,在其他的頁面里的action屬性可能是其他特殊的CGI程序或者其他能處理數(shù)據(jù)的程序,那么在JSP

36、里邊是怎么用的呢,呵,如果 你想把數(shù)據(jù)發(fā)到Bean里的話那么你可以省略action里邊的東里了,直接寫標(biāo)簽或 者其他特定的JSP文件了。接下來的那些表單和普通的HTML差不多了,的方法,然后加 一個(gè)提交按鈕,可能還有一個(gè)Reset按鈕,對了,別忘了,還得給每一個(gè)input表單加一個(gè)名字。 這么寫:使用GET和POST方法 用GET和POST方法可以發(fā)數(shù)據(jù)到服務(wù)器,在JSP程序中GET和POST方法可以發(fā)數(shù)據(jù)到Bean、servlet、或者其他服務(wù)器端的組件。理論上說,GET是從服務(wù)器上請求數(shù)據(jù),POST是發(fā)送數(shù)據(jù)到服務(wù)器。事實(shí)上,GET方法是把數(shù)據(jù) 參數(shù)隊(duì)列(query string)加到一個(gè)

37、URL上,值和表單是一一對應(yīng)的。比如說,name=John。在隊(duì) 列里,值和表單用一個(gè)&符號(hào)分開,空格用+號(hào)替換,特殊的符號(hào)轉(zhuǎn)換成十六進(jìn)制的代碼。因?yàn)檫@ 一隊(duì)列在URL里邊,這樣隊(duì)列的參數(shù)就能看得到,可以被記錄下來,或更改。通常GET方法還限 制字符的大小。事實(shí)上POST方法可以沒有時(shí)間限制的傳遞數(shù)據(jù)到服務(wù)器,用戶在瀏覽器端是看不 到這一過程的,所以POST方法比較適合用于發(fā)送一個(gè)保密的(比如信用卡號(hào))或者比較大量的數(shù) 據(jù)到服務(wù)器。寫B(tài)ean如果JSP程序用到了Bean,你就得按照J(rèn)avaBeans API的說明設(shè)計(jì)你的Bean。 記住下面兩個(gè)關(guān)鍵部分。 如果JSP程序里用標(biāo)簽,那你就得在Be

38、an里邊配合的GET方法。 如果JSP程序進(jìn)而用 標(biāo)簽,那你就得在Bean里邊配合的Set方法。 設(shè)置參數(shù)到Bean或者從里邊取參數(shù)將在以后的部分詳細(xì)介紹。傳數(shù)據(jù)到Bean把HTML表單的數(shù)據(jù)傳到Bean里需要兩個(gè)工作: 用標(biāo)簽創(chuàng)建或者定位到Bean 在Bean里面用設(shè)置屬性值 第一步用標(biāo)簽創(chuàng)建或者定位到Bean一定要用在之前,首先按照你指定的名字查找Bean,如果沒找到,會(huì)給你指定一個(gè)。允許在一個(gè)JSP文件 中創(chuàng)建一個(gè)Bean,然后再另一個(gè)文件中調(diào)用,這就給了Bean一個(gè)很廣泛的運(yùn)行空間。第二步在Bean里面用設(shè)置屬性值。最簡單的方法是把值定義成與表單名相配 合。舉個(gè)例子,如果你把表單名定義

39、成“username”那么,你就在Bean里定義屬性“username”然后 用方法getUsername和setUsername。 HYPERLINK HYPERLINK HYPERLINK 5天1cIhTo下ng載di站an】.n整etww譽(yù).5天1cIhTo下ng載di站an】.n當(dāng)然也可以定義成不同的名字,只要你不認(rèn)為麻煩。誰讓你記憶力好呢! HYPERLINK Request對象用戶輸入的數(shù)據(jù)用來存放在Request對象里,用javax.servlet.HttpServletRequest來執(zhí)行(你也可 以用其他不同的工具來執(zhí)行,但他們其實(shí)都是javax.servlet.HttpSe

40、rvletRequest的子集)你也可以直接用scriptlet來直接訪問Request對象。Scriptlet將在下一講里邊詳細(xì)的討論,現(xiàn)在你 只需要知道他是用腳本語言寫的一段放在 之間的代碼就足夠了。在JSP 1.0中,你必須 用JavaTM程序語言作為你的腳本語言。你經(jīng)常會(huì)用到如下方法處理Request對象:方法 說明 執(zhí)行結(jié)果getRequestJavax.servlet.jsp.PageContext返回當(dāng)前Request對象getParameterNames javax.servlet.ServletRequest返回當(dāng)前Request對象參數(shù)名getParameterValues

41、 javax.servlet.ServletRequest返回當(dāng)前Request對象參數(shù)值你將會(huì)發(fā)現(xiàn)其他方法包括ServletRequest,HttpServletRequest或者其他任何ServletRequest的子 集。JSP引擎經(jīng)常在scenes之后使用Request對象,即使你沒有明確地在JSP文件中調(diào)用。 從Bean中調(diào)數(shù)據(jù)到JSP頁面一旦用戶的數(shù)據(jù)被傳到Bean,你就想重新得到數(shù)據(jù),然后在JSP面頁中顯示出來。想達(dá)到這一步,你就得用到標(biāo)簽。傳Bean名和屬性名:Hello, !, , 和 標(biāo)簽必須相配,舉個(gè)例子:hellouser.jsp:response.jsp:Hello,

42、 !在這個(gè)例子里,標(biāo)簽被放在兩個(gè)文件中,但是指定的名字都是相同的,如果不同的話,那么系統(tǒng) 會(huì)返回一個(gè)錯(cuò)誤信息。如何運(yùn)行例子 我用的是主機(jī),如果你用windows,那么改相應(yīng)的路徑即可。創(chuàng)建路徑./jswdk-1.0/examples/jsp/tutorial/hellouser.把文件background.gif, duke.waving.gif, dukebanner.html, hellousr.jsp和response.jsp文件放進(jìn) 去。創(chuàng)建一個(gè)目錄,./jswdk-1.0/examples/WEB-INF/jsp/beans/hello HYPERLINK HYPERLINK HYP

43、ERLINK jasonh, ./ HYPERLINK http:/www.51choCnogpdyriigahnt www.51choCnogpdyriigahnt 1.9n9e9,tK&A SoftwareDistributed by Sun Microsystems with permission-5天1cIhTo下ng載di站an】.n整etww譽(yù).5天 HYPERLINK mailto:jasonh 1cIhTo下ng載di站an】.nNumber Guess Congratulations! You got it.And after just tries.Care to try a

44、gain? Welcome to the Number Guess game.Im thinking of a number between 1 and 100.Whats your guess? Good guess, but nope. Try . You have made guesses.Im thinking of a number between 1 and 100.Whats your guess? 操作程序(NumberGuessBean.java)/ Number Guess Game/ Written by Jason Hunter, CTO, K&A Software/

45、jasonh, ./ Copyright 1999, K&A Software/ Distributed by Sun Microsystems with permissionpackage num;import java.util.*;public class NumberGuessBean int answer;boolean success; HYPERLINK http:/www.51choSntgrindgihainnt www.51choSntgrindgihainnt;.net HYPERLINK HYPERLINK int numGuesses; HYPERLINK http:

46、/www.51chopnugbdliciNaunm.bnereGtuessBean www.51chopnugbdliciNaunm.bnereGtuessBean() reset();public void setGuess(String guess) numGuesses+;int g;try g = Integer.parseInt(guess);catch (NumberFormatException e) g = -1;if (g = answer) success = true;else if (g = -1) hint = a number next time;else if (

47、g answer) hint = lower;public boolean getSuccess() return success;public String getHint() return + hint;public int getNumGuesses() return numGuesses;public void reset() 5天1cIhTo下ng載di站an】.n整etww譽(yù).5天1cIhTo下ng載di站an】.nanswer = Math.abs(new Random().nextInt() % 100)+ 1;success = false;numGuesses = 0;在J

48、SP文件中使用腳本 numguess.jsp是一個(gè)非常有趣兒的用腳本寫的例子,你看他的結(jié)構(gòu)其實(shí)是一個(gè)很大的IFELSE 結(jié)構(gòu),但是很一個(gè)從句又都是用HTML寫的,看起來象一個(gè)大的程序段。 不過你也不一定非得象numguess.jsp那樣用HTML和JSP標(biāo)簽一起來寫腳本。在標(biāo)簽之 間,你可以寫任意多行的腳本代碼,在通常情況下,盡量少用腳本來處理程序,而盡可能的使用 servlets或者Beans,這樣你的程序看起來會(huì)非常的清析,明了。話又說回來,怎么寫JSP還得根 據(jù)你的習(xí)慣和愛好,我不強(qiáng)迫非得使用任何一種方法,SUN的JSP詳細(xì)說明書不規(guī)定腳本的長 度。用標(biāo)簽組合腳本 使用HTML和JSP標(biāo)

49、簽來寫腳本的時(shí)候,注意前后的標(biāo)簽不要忘記,一定要“封”好。說的不明白, 舉個(gè)例子吧: HYPERLINK http:/www.51cho.n www.51cho.n.g這d時(shí)ia候n用.JnSeP標(biāo)t簽w吧ww 51 HYPERLINK HYPERLINK http:/www.51cho www.51chon.開始的時(shí)候這種做法看起來可能有一點(diǎn)奇怪,但它以確保你JSP文件編譯的時(shí)候腳本的成功轉(zhuǎn)換。那么,腳本什么時(shí)候執(zhí)行呢? 一個(gè)JSP原文件的處理分為兩個(gè)階段:一個(gè)是HTTP的編譯時(shí)候,一個(gè)是請求的處理時(shí)間。HTTP編譯的時(shí)候,當(dāng)用戶第一次讀JSP頁面的時(shí)候,JSP的原代碼被編譯成CLASS,通

50、常是servlet。HTML標(biāo)簽和JSP標(biāo)簽在這個(gè)時(shí)候同時(shí)被處理了,這之前用戶還沒有任何的請求被提交。請求處理時(shí)間是當(dāng)用戶在JSP頁面中提交了一個(gè)請求,這時(shí)請求由客戶端被request對象傳到了服 務(wù)器端,JSP引擎根據(jù)用戶提交的值執(zhí)行編譯過的JSP文件或者servlet。當(dāng)你在JSP頁中使用腳本的時(shí)候,你必須知道他們什么時(shí)候被執(zhí)行。聲明在HTTP編譯階段就已經(jīng) 被處理了,其他腳本,表達(dá)式在編譯JSP文件的時(shí)候也可用。表達(dá)式在HTTP編譯的時(shí)候也被執(zhí)行 了。表達(dá)式的值被轉(zhuǎn)換成了字符串被插入到JSP文件中一塊兒被編譯。其實(shí)在請求階段,腳本也是 可以利用的。如何運(yùn)行例子 我現(xiàn)在給出的都是在UNIX

51、風(fēng)格下的路徑,如果你用Windows,那么改成Windows風(fēng)格路徑1、猜數(shù)字游戲在裝TOMCAT或者JSWDK的時(shí)候就已經(jīng)裝好了。2、.jsp和.html文件在./jswdk-1.0.1/examples/num中3、.java和.class文件在./jswdk-1.0.1/examples/WEB-INF/jsp/bean/num中4、開瀏覽器,./機(jī)器名/examples/jsp/num/numguess.jsp秀客設(shè)計(jì): 專業(yè)網(wǎng)頁設(shè)計(jì)、平面設(shè)計(jì)論壇。網(wǎng)頁設(shè)計(jì)&平面設(shè)計(jì)初學(xué)者最受歡迎的論壇!快速發(fā)帖 HYPERLINK javascript:scroll(0,0) 頂端 HYPERLIN

52、K HYPERLINK HYPERLINK HYPERLINK /bbs/index.php HYPERLINK /index.htm 首頁 | HYPERLINK /siuke.htm 秀客 | HYPERLINK /bbs/index.php 秀客論壇 | HYPERLINK /zt.htm 轉(zhuǎn)帖工具 | 秀客收藏夾 windecember: HYPERLINK /bbs/login.php?action=quit 退出 | HYPERLINK /bbs/profile.php 控制面板 | HYPERLINK /bbs/message.php 短消息 | HYPERLINK /bbs/s

53、earch.php 搜索 | HYPERLINK /bbs/member.php 會(huì)員 | HYPERLINK /bbs/sort.php 統(tǒng)計(jì)與排行 | HYPERLINK /bbs/hack.php?H_name=bank 銀行 | HYPERLINK /bbs/faq.php 幫助 | HYPERLINK /bbs/index.php 社區(qū) HYPERLINK /bbs/index.php 秀客論壇 - HYPERLINK /bbs/job.php?rd_previous=1&fid=12&tid=3725&fpage=3&goto=previous 上一主題 | HYPERLINK /

54、bbs/job.php?rd_previous=1&fid=12&tid=3725&fpage=3&goto=next 下一主題siuke管理員精華 60 發(fā)帖 3459 秀值 2511 秀幣 1587 狀態(tài) 離線 貢獻(xiàn)值 4 點(diǎn)在線時(shí)間(小時(shí)) 519 注冊時(shí)間 2005-07-17 最后登陸 2005-11-19JSP語法入門教程JSP語法(1)HTML注釋HTML 注釋 在客戶端顯示一個(gè)注釋. JSP 語法!- comment -例子 1在客戶端的HTML源代碼中產(chǎn)生和上面一樣的數(shù)據(jù):例子 2!- This page was loaded on -在客戶端的HTML源代碼中顯示為: 描述

55、 這種注釋和HTML中很像,也就是它可以在查看源代碼中看到。唯一有些不同的就是,你可以在這個(gè)注釋中用表達(dá)式(例子2所示)。這個(gè)表達(dá)示是不定的,由頁 面不同而不同,你能夠使用各種表達(dá)式,只要是合法的就行。5天1cI HYPERLINK /msgrd?V=1&Uin=173436316&Site=%E7%A7%80%E5%AE%A2%E8%AE%BA%E5%9D%9B&Menu=yes hTo下 HYPERLINK /bbs/message.php?action=write&touid=1 ng載 HYPERLINK /bbs/sendemail.php?uid=1 di站a HYPERLINK

56、/bbs/post.php?action=modify&fid=12&tid=3725&pid=9609&article=2 n】. HYPERLINK /bbs/post.php?action=quote&fid=12&tid=3725&pid=9609&article=2 n整etww譽(yù).5 HYPERLINK /bbs/profile.php?action=show&uid=1 天1c HYPERLINK /bbs/message.php?action=write&touid=1 IhTo HYPERLINK /bbs/sendemail.php?uid=1 下ng載 HYPERLINK

57、 /bbs/post.php?action=modify&fid=12&tid=3725&pid=9610&article=3 di站 HYPERLINK /bbs/post.php?action=quote&fid=12&tid=3725&pid=9610&article=3 an】 HYPERLINK javascript:scroll(0,0) .n HYPERLINK http:/www.51ch www.51ch當(dāng)你聲明方法或變量時(shí),請注意以下的一些規(guī)則:【譽(yù)天IT下載站】整理聲明必須以;結(jié)尾(Scriptlet有同樣的規(guī)則,但是 表達(dá)式就不同了).你可以直接使用在中被包含進(jìn)來的已經(jīng)

58、聲明的變量和方法,不需要對它們重新進(jìn) 行聲明.一個(gè)聲明僅在一個(gè)頁面中有效。如果你想每個(gè)頁面都用到一些聲明,最好把它們寫成一個(gè)單獨(dú)的 文件,然后用或元素包含進(jìn)來。秀客設(shè)計(jì): 專業(yè)網(wǎng)頁設(shè)計(jì)、平面設(shè)計(jì)論壇。網(wǎng)頁設(shè)計(jì)&平面設(shè)計(jì)初學(xué)者最受歡迎的論壇!2005-11-12 08:45#2siuke管理員精華 60 發(fā)帖 3459 秀值 2511 秀幣 1587 狀態(tài) 離線 貢獻(xiàn)值 4 點(diǎn)在線時(shí)間(小時(shí)) 519 注冊時(shí)間 2005-07-17 最后登陸 2005-11-19JSP語法(4)表達(dá)式包含一個(gè)符合JSP語法的表達(dá)式JSP 語法例子.描述 表達(dá)式元素表示的是一個(gè)在腳本語言中被定義的表達(dá)式,在運(yùn)行后

59、被自動(dòng)轉(zhuǎn)化為字符串,然后插入到這個(gè)表達(dá)示在JSP文件的位置顯示。因?yàn)檫@個(gè)表達(dá)式的值已經(jīng)被轉(zhuǎn)化為字符串,所以你能在一行文本中插入這個(gè)表達(dá)式(形式和ASP完全一樣).當(dāng)你在JSP中使用表達(dá)式時(shí)請記住以下幾點(diǎn): 你不能用一個(gè)分號(hào)(;)來作為表達(dá)式的結(jié)束符.但是同樣的表達(dá)式用在scriptlet中就需要以分號(hào)來結(jié)尾了!查看Scriptlet 這個(gè)表達(dá)式元素能夠包括任何在Java Language Specification中有效的 表達(dá)式.有時(shí)候表達(dá)式也能做為其它JSP元素的屬性值.一個(gè)表達(dá)式能夠變得很復(fù)雜,它可能由一個(gè)或多個(gè) 表達(dá)式組成,這些表達(dá)式的順序是從左到右。秀客設(shè)計(jì): 專業(yè)網(wǎng)頁設(shè)計(jì)、平面設(shè)計(jì)

60、論壇。網(wǎng)頁設(shè)計(jì)&平面設(shè)計(jì)初學(xué)者最受歡迎的論壇!2005-11-12 08:45#3 HYPERLINK HYPERLINK HYPERLINK o5天1cIhTo下ng載di站an】.n整etww譽(yù).5 HYPERLINK /bbs/profile.php?action=show&uid=1 天1c HYPERLINK /bbs/message.php?action=write&touid=1 IhTo HYPERLINK /bbs/sendemail.php?uid=1 下ng載 HYPERLINK /bbs/post.php?action=modify&fid=12&tid=3725&pi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論