非常棒的jsp初學(xué)者幻燈片教程課件.ppt_第1頁
非常棒的jsp初學(xué)者幻燈片教程課件.ppt_第2頁
非常棒的jsp初學(xué)者幻燈片教程課件.ppt_第3頁
非常棒的jsp初學(xué)者幻燈片教程課件.ppt_第4頁
非常棒的jsp初學(xué)者幻燈片教程課件.ppt_第5頁
已閱讀5頁,還剩186頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、JavaServer Pages(JSP)網(wǎng)頁程序設(shè)計,2,第三講 JSP語法及內(nèi)置對象,3.1 Java基礎(chǔ)知識 3.2 JSP語法 3.3 JSP內(nèi)置對象 3.4 HTML表單 3.5 JSP與客戶機的交互 3.6 實踐:練習(xí)JSP編程,3,3.2 JSP語法,概述 基本語法,4,復(fù)習(xí)JSP的概念,Java Server Page Servlet簡化設(shè)計,邏輯與界面設(shè)計分開,開發(fā)更方便; HTML語法的 java 擴展,加入新的標(biāo)簽(,); 強大的組件(Java Bean)支持功能,5,JSP文件結(jié)構(gòu)及主要標(biāo)簽,. 其他 HTML 語言 其他 HTML 語言,6,JSP示例(Hello.j

2、sp,你好,你好 你好,7,JSP執(zhí)行過程,.jsp,.java,.class,servlet,servlet 分析器,8,JSP,執(zhí)行過程,9,JSP示例(Hello_Date.jsp,你好,今天是 號, 星期,import java.util.*; response.setContentType(text/html; charset=gb2312); out = pageContext.getOut(); out.write(“rnrnrn rn你好,今天是rn); Date today=new Date(); out.print(today.getDate(); out.write(號,

3、星期); out.print(today.getDay(); out.write( rn rnrn,JSP文件,servlet文件,10,JSP示例(瀏覽結(jié)果,11,JSP語法概述,JSP原始代碼中包含了JSP元素和Template(模板) data兩類 Template data指的是JSP引擎不處理的部分,即標(biāo)記以外的部分,例如代碼中的HTML的內(nèi)容等 ,這些數(shù)據(jù)會直接傳送到客戶端的瀏覽器 JSP元素則是指將由JSP引擎直接處理的部分,這一部分必須符合JSP語法,否則會導(dǎo)致編譯錯誤,12,jsp例子(hi.jsp,Hi-JSP實驗,Template data,JSP元素,13,JSP語法,

4、JSP語法分為三種不同的類型,編譯器指令(DIRECTIVE) 例如:,腳本語法(SCRIPTING,動作語法(ACTION) 例如:,14,腳本語法,腳本語法包括 “HTML注釋”: “隱藏注釋”: “聲明” “表達式” “腳本段,15,編譯器指令,編譯器指令包括“包含指令”, “頁指令”和“taglib指令” 它們包含在“”卷標(biāo)里。 兩個主要的指令是page與include,16,動作語法,動作語法包括, ,和,17,HTML注釋,JSP 語法格式如下: - 或 - 這種注釋發(fā)送到客戶端,但不直接顯示,在源代碼中可以查看到,18,HTML注釋(peixun2.1.jsp,HTML注釋 未顯

5、示上一行的注釋。,19,HTML注釋,20,HTML注釋(peixun2.2.jsp,要多加練習(xí) - 在源文件中包括當(dāng)前時間。,21,HTML注釋,22,IE中的源程序有注釋,23,隱藏注釋,JSP 語法格式如下: 不發(fā)送到客戶端,24,隱藏注釋 (peixun2.3.jsp,A Comment Test A Test of Comments,25,隱藏注釋,26,在IE中查看源代碼,27,聲明,JSP 語法格式如下: 或,28,聲明(test2.4.jsp,test2.4.jsp,29,表達式,用于在頁面上輸出信息,語法格式如下: 或,30,表達式(peixun2.4.jsp,test,31

6、,表達式,a= b= c=,32,peixun2.4.jsp執(zhí)行結(jié)果,33,腳本段,JSP 語法格式如下: 或,34,腳本段 (peixun2.5.jsp,test,35,; break; case 1: out.println(You must select condition 1,36,break; case 2: out.println(You must select condition 2!+); break; default: out.println(Your select not in 0,1,2,select again!+); % 轉(zhuǎn)義符: 雙引號 “ ,單引號,反斜杠,回車r

7、,換行n,制表符t,退格b,37,腳本段執(zhí)行結(jié)果,38,包含指令,include指令:向當(dāng)前頁中插入一個靜態(tài)文件的內(nèi)容。 JSP 語法格式如下: 或,39,包含指令(peixun2.6.jsp,test The current date and time are,40,peixun2.6.1.jsp,41,包含指令,42,Page指令,Page”指令用于定義JSP文件中的全局屬性。 JSP 語法格式如下: % page language=java extends=package.class import=package.class | package.*,. session=true | fa

8、lse buffer=none | 8kb | sizekb,43,Page指令,autoFlush=true | false isThreadSafe=true | false info=text errorPage=relativeURL contentType=mimeType ;charset=characterSet | text/html ; charset=ISO-8859-1 isErrorPage=true | false ,44,Page指令,屬性: 1language=java 聲明腳本語言的種類,目前只能用java 。 2.import=package.class |

9、package.* ,. 需要導(dǎo)入的Java包的列表,這些包作用于程序段,表達式,以及聲明。下面的包在JSP編譯時已經(jīng)導(dǎo)入了,所以就不需要再指明了: java.lang.* javax.servlet.* javax.servlet.jsp.* javax.servlet.http.,45,3errorPage=relativeURL 設(shè)置處理異常事件的JSP文件。 4isErrorPage=true | false 設(shè)置此頁是否為出錯頁,如果被設(shè)置為true,你就能使用exception對象,46,page指令詳說,指令作用于整個JSP頁面,同樣包括靜態(tài)的包含文件。但是“”指令不能作用于動態(tài)

10、的包含文件,比如 “”。 可以在一個頁面中用上多個“”指令,但是其中的屬性只能用一次,不過也有例外,那就是import屬性。因為import屬性和Java中的import語句類似(參照Java Language,import語句引入得是Java語言中的類),所以此屬性就能多用幾次。 無論把“”指令放在JSP的文件的哪個地方,它的作用范圍都是整個JSP頁面。不過,為了JSP程序的可讀性,以及好的編程習(xí)慣,最好還是把它放在JSP文件的頂部,47,page指令(peixun2.7.jsp,test3 Test for using Page.,48,page指令例子運行結(jié)果,49,taglib指令,J

11、SP語法 用于引入定制標(biāo)簽庫,50,taglib指令,屬性 1uri=URIToTagLibrary Uniform Resource Identifier (URI)根據(jù)標(biāo)簽的前綴對自定義的標(biāo)簽進行唯一的命名,URI可以是以下的內(nèi)容: Uniform Resource Locator (URL), 由 RFC 2396 定義, 可以從以下位置查看 (http:/www.hut.fi/u /jkorpela/rfc/2396/full.html)。 Uniform Resource Name (URN), 由 RFC 2396定義 一個相對或絕對的路徑 可以是標(biāo)簽庫描述文件,51,2prefi

12、x=tagPrefix 表示標(biāo)簽在JSP中的名稱。 在自定義標(biāo)簽之前的前綴,比如,在中的public,如果這里不寫public,那么這就是不合法的。請不要用jsp, jspx, java, javax, servlet, sun, 和sunw做為你的前綴,這些已被Sun公司聲明保留,52,Tablib指令(peixun2.8.jsp,test,53,JSP 語法格式如下: 1 / 2 / (“”指可以有多個“”標(biāo)記。,54,屬性,1、page=relativeURL | 這里是一個表達式或是一個字符串用于說明你將要定向的文件或URL。這個文件可以是JSP,程序段,或者其它能夠處理request

13、對象的文件(如asp,cgi,php,55,2 / 向一個動態(tài)文件發(fā)送一個或多個參數(shù),這個文件必須是動態(tài)文件。如果想傳遞多個參數(shù),可以在一個JSP文件中使用多個“”;“name”指定參數(shù)名,“value”指定參數(shù)值,56,注意,標(biāo)簽從一個JSP文件向另一個文件傳遞一個包含用戶請求的request對象?!啊睒?biāo)簽以后的代碼,將不能執(zhí)行,57,例子(peixun2.9.jsp,test,58,forwardTo.jsp,59,運行結(jié)果(TOMCAT,60,包含一個靜態(tài)或動態(tài)文件. JSP 語法格式如下: 1 flush=true / 2 flush=true / (“”指可以有多個“”標(biāo)記。,61,

14、的屬性,1page=relativeURL | 參數(shù)為一相對路徑,或者是代表相對路徑的表達式。 2flush=true 這里必須使用flush=true,不能使用false值。而缺省值為false,62,3 / “”用來傳遞一個或多個參數(shù)到指定的動態(tài)文件,能在一個頁面中使用多個“”來傳遞多個參數(shù),63,例子(peixun2.10.jsp,peixun.2.10.jsp,64,peixun2.10.1.jsp,; ,65,運行結(jié)果(TOMCAT,66,使用“”插入一個applet或Bean,必要的話還要下載一個Java插件用于執(zhí)行它。 JSP 語法格式如下: jsp:plugin type=be

15、an | applet code=classFileName codebase=classFileDirectoryName,67,name=instanceName archive=URIToArchive, . align=bottom | top | middle | left | right height=displayPixels width=displayPixels hspace=leftRightPixels vspace=topBottomPixels jreversion=JREVersionNumber | 1.1 nspluginurl=URLToPlugin iepl

16、uginurl=URLToPlugin,68,/ + text message for user,69,屬性,1type=bean | applet 將被執(zhí)行的插件對象的類型,你必須得指定這個是Bean還是applet,因為這個屬性沒有缺省值。 2code=classFileName 將會被Java插件執(zhí)行的Java Class的名字,必須以.class結(jié)尾。這個文件必須存在于codebase屬性指定的目錄中,70,3codebase=classFileDirectoryName 將會被執(zhí)行的Java Class文件的目錄(或者是路徑),如果你沒有提供此屬性,那么使用的jsp文件的目錄將會被使

17、用。 4name=instanceName 這個Bean或applet實例的名字,它將會在Jsp其它的地方調(diào)用,71,例子,Unable to load applet,72,創(chuàng)建一個Bean實例并指定它的名字和作用范圍。 JSP 語法格式如下: jsp:useBean id=beanInstanceName scope=page | request | session | application class=package.class ,73,type=package.class | class=package.class type=package.class | beanName=packa

18、ge.class | type=package.class / | other elements,74,屬性以及用法,1id=beanInstanceName 在所定義的范圍中確認Bean的變量,使之能在后面的程序中使用此變量名來分辨不同的Bean ,這個變量名對大小寫敏感,必須符合所使用的腳本語言的規(guī)定,這個規(guī)定在Java Language 規(guī)范已經(jīng)寫明。如果Bean已經(jīng)在別的“”標(biāo)記中創(chuàng)建,則當(dāng)使用這個已經(jīng)創(chuàng)建過Bean時,id的值必須與原來的那個id值一致;否則則意味著創(chuàng)建了同一個類的兩個不同的對象,75,2scope=page | request | session | applica

19、tion Bean存在的范圍以及id變量名的有效范圍。缺省值是page,以下是詳細說明: page - 能在包含“”元素的JSP文件以及此文件中的所有靜態(tài)包含文件中使用這個Bean,直到頁面執(zhí)行完畢向客戶端發(fā)回響應(yīng)或轉(zhuǎn)到另一個文件為止,76,request - 在任何執(zhí)行相同請求的Jsp文件中使用這個Bean,直到頁面執(zhí)行完畢向客戶端發(fā)回響應(yīng)或轉(zhuǎn)到另一個文件為止。能夠使用Request對象訪問這個Bean,比如request.getAttribute(beanInstanceName)。 session - 從創(chuàng)建Bean開始,就能在任何使用相同session的jsp文件中使用這個Bean。這

20、個Bean存在于整個Session生存周期內(nèi),任何在分享此Session的Jsp文件都能使用同一Bean。注意在創(chuàng)建這個Bean的Jsp文件中“”指令中必須指定“session=true,77,application - 從創(chuàng)建Bean開始,就能在任何使用相同application的Jsp文件中使用Bean。這個Bean存在于整個application生存周期內(nèi),任何在分享此application的Jsp文件都能使用同一Bean,78,3class=package.class 使用new關(guān)鍵字以及class構(gòu)造器從一個class中實例化一個bean。這個class不能是抽象的,必須有一個公用的

21、,沒有參數(shù)的構(gòu)造器。這個package的名字區(qū)別大小寫。 4type=package.class 如果這個Bean已經(jīng)在指定的范圍中存在,那么賦予這個Bean一個的數(shù)據(jù)開庫類型 。如果使用type屬性的同時沒有使用class或beanName,Bean將不會被實例化。注意package和class的名稱區(qū)分大小寫,79,5beanName=package.class | type=package.class 使用java.beans.Beans.instantiate方法來從一個class或串行化的模板中實例化一個Bean,同時指定Bean的類型。 Beans.instantiate方法將檢查

22、此名稱是否表示一個類或一個串行化模板。如果這個Bean是被串行化的,那么Beans.instantiate方法將通過使用一個類裝載器讀取串行化格式(類似package.class.ser,80,beanName可以是package和class,也可以是表達式,它的值會傳給Beans.instantiate方法。type的值可以和Bean相同,也可以是它的基類,或者是它所實現(xiàn)的接口。 package和 class 名字區(qū)分大小寫,81,JSP 語法格式如下: 屬性: 1name=beanInstanceName bean的名字,由指定。 2property=propertyName 所指定的Be

23、an的屬性名,82,例子,/聲明引用的bean test Calendar of,83,設(shè)置Bean的屬性值. JSP 語法格式如下:,84,屬性,1name=beanInstanceName 表示已經(jīng)在“”中創(chuàng)建的Bean實例的名字。 2property=* 儲存用戶在jsp輸入的所有值,用于匹配Bean中的屬性,85,3property=propertyName param=parameterName 用一個參數(shù)值來指定Bean中的一個屬性值,一般情況下是從request對象中獲得的。其中property指定Bean的屬性名,param指定request中的參數(shù)名,86,4property

24、=propertyName value=string | 使用指定的值來設(shè)定Bean屬性。這個值可以是字符串,也可以是表達式。如果這個字符串,那么它就會被轉(zhuǎn)換成Bean屬性的類型(轉(zhuǎn)換方法見表4.1)。如果是一個表達式,那么它的類型就必須和將要設(shè)定的屬性值的類型一致。 如果參數(shù)值為空值,那么對應(yīng)的屬性值也不會被設(shè)定。此外,不能在同一個“”中同時使用param和value參數(shù),87,package rmg; public class student private long classNo; private String name; private int age; private boolea

25、n sexy; public student() /構(gòu)造函數(shù) classNo=970431; name=ZZZl; age=34; sexy=true;,例:/建立類rmg.student,88,public long getClassNo() return classNo; public void setClassNo(long no) this.classNo=no; public String getName() return name; public void setName(String name) =name;,89,public int getAge() ret

26、urn age; public void setAge(int age) this.age=age; public boolean getSexy() return sexy; public void setSexy(boolean sexy) this.sexy=sexy;,90,91,92,第一次運行結(jié)果,93,以后運行結(jié)果,第一行發(fā)生變化,94,測試session作用域,95,96,運行結(jié)果,97,小結(jié)與習(xí)題,本局面集中介紹了JSP的各種語法,掌握這些語法使讀者進行JSP開發(fā)的基本要求,于一般的網(wǎng)頁開發(fā)不同,JSP對大小寫是敏感的,這一點要注意,尤其是對曾使用過其他開發(fā)語言的讀者。 與B

27、ean相關(guān)的幾種語法的使用將在“Bean的使用”一章中專門進行講解,因此可對照學(xué)習(xí)。熟練使用這些語法是必須的,因此讀者應(yīng)該多加練習(xí),觀察不同用法所產(chǎn)生的效果上的差異。對于給出的例子最好是自己敲入文件并觀察執(zhí)行結(jié)果。 隨后的幾章將各有重點的講述與語法相關(guān)的一些問題,98,習(xí)題,1舉例說明HTML注釋與隱藏注釋有何異同。 2試寫一個JSP文件,包含所有JSP語法元素 3Scriptlet中應(yīng)遵循什么樣的語法規(guī)則? 4元素包含靜態(tài)文件與包含動態(tài)文件處理上有何不同? 5起到什么樣的作用?使用時有哪些注意事項? 6page指令能起到那些作用?有效范圍有多大,99,實踐:練習(xí)JSP編程,1. HelloW

28、orld.jsp 最簡單的jsp程序 2. Scripting.jsp 程序片段 3. Declaration.jsp 變量的聲明 4. Directive.jsp 和 Top.htm 和 Bottom.jsp Directives語法 5. Include.jsp 和 Date.jsp include指令 6. News.jsp 和 Item1.htm 和 Item2.htm 和 Item3.htm 和 Item4.htm 的使用 7. ForwardTest.jsp 和 morning.htm 和 afternoon.jsp 的使用,100,3.3 JSP內(nèi)置對象,JSP 有以下九種內(nèi)置對

29、象,包括: request,請求對象 response,響應(yīng)對象 pageContext,頁面上下文對象 session,會話對象 application,應(yīng)用程序?qū)ο?out,輸出對象 config,配置對象 page,頁面對象 exception,例外對象,101,重點介紹,request,請求對象 session,會話對象 application,應(yīng)用程序?qū)ο?102,綜述,有幾種對象看起來和ASP的內(nèi)置對象差不多,功能也類似,這是因為這些內(nèi)置對象的構(gòu)建基礎(chǔ)是標(biāo)準(zhǔn)化的HTTP協(xié)議。如果使用過ASP,又對Java有一定的了解的話,那么對這幾種JSP內(nèi)置對象的使用應(yīng)該能迅速掌握。需要注意的問

30、題是對象名的寫法,包括這些對象方法的調(diào)用時也要書寫正確,因為Java語言本身是大小寫敏感的,103,從本質(zhì)上講,JSP的這些內(nèi)置對象其實都是由特定的Java類所產(chǎn)生的,在服務(wù)器運行時根據(jù)情況自動生成,所以如果你有較好的Java基礎(chǔ),可以參考相應(yīng)的類說明,表3.1給出了他們的對應(yīng)關(guān)系。更進一步的講解將會在講解Servlet的一章中展開,如果你的Java基礎(chǔ)不太好,可以先熟悉在這一章里所介紹的各種方法的使用,104,105,request和response,request” 對象代表的是來自客戶端的請求,例如我們在FORM表單中填寫的信息等,是最常用的對象。關(guān)于它的方法使用較多的是getParam

31、eter、getParameterNames和getParameterValues,通過調(diào)用這幾個方法來獲取請求對象中所包含的參數(shù)的值 “response” 對象代表的是對客戶端的響應(yīng),也就是說可以通過“response”對象來組織發(fā)送到客戶端的數(shù)據(jù)。但是由于組織方式比較底層,所以不建議普通讀者使用,需要向客戶端發(fā)送文字時直接使用“out” 對象即可,106,request對象示例,姓名,107,request對象示例(Hello_req.jsp,你好, , 今天是 號,星期,108,request對象示例(輸出結(jié)果,你好, 獨孤求敗, 今天是 9號,星期1,109,pageContext,p

32、ageContext” 對象直譯時可以稱作“頁面上下文”對象,代表的是當(dāng)前頁面運行的一些屬性,常用的方法包括findAttribute、getAttribute、getAttributesScope和getAttributeNamesInScope,一般情況下“pageContext” 對象用到得也不是很多,只有在項目所面臨的情況比較復(fù)雜的情況下,才會利用到頁面屬性來輔助處理,110,session對象,session” 對象代表服務(wù)器與客戶端所建立的會話,當(dāng)需要在不同的JSP頁面中保留客戶信息的情況下使用,比如在線購物、客戶軌跡跟蹤等?!皊ession” 對象建立在cookie的基礎(chǔ)上,所以

33、使用時應(yīng)注意判斷一下客戶端是否打開了cookie。常用的方法包括getId、 getValue、 getValueNames和putValue等,111,session對象,概要 HTTP是無狀態(tài)(stateless)協(xié)議; Web Server 對每一個客戶端請求都沒有歷史記憶; Session用來保存客戶端狀態(tài)信息; 由Web Server 寫入; 存于客戶端; 客戶端的每次訪問都把上次的session記錄傳遞給Web Server; Web Server讀取客戶端提交的session來獲取客戶端的狀態(tài)信息,112,session對象示例(Form表單Logon_session.html,

34、姓名,113,session對象示例Logon_session.jsp,你的名字已經(jīng)寫入session check,114,session對象示例(Check_session.jsp,您還未登錄 已經(jīng)登錄,115,application對象,application” 對象負責(zé)提供應(yīng)用程序在服務(wù)器中運行時的一些全局信息,常用的方法有g(shù)etMimeType和getRealPath等,116,out,out” 對象代表了向客戶端發(fā)送數(shù)據(jù)的對象,與“response” 對象不同,通過“out” 對象發(fā)送的內(nèi)容將是瀏覽器需要顯示的內(nèi)容,是文本一級的,可以通過“out” 對象直接向客戶端寫一個由程序動態(tài)生

35、成HTML文件。常用的方法除了pirnt和println之外,還包括clear、clearBuffer、flush、getBufferSize和getRemaining,這是因為“out” 對象內(nèi)部包含了一個緩沖區(qū),所以需要一些對緩沖區(qū)進行操作的方法,117,config、 page、 exception,config” 對象提供一些配置信息,常用的方法有g(shù)etInitParameter和getInitParameterNames,以獲得Servlet初始化時的參數(shù)。 “page” 對象代表了正在運行的由JSP文件產(chǎn)生的類對象,不建議一般讀者使用。 “exception” 對象則代表了JSP文

36、件運行時所產(chǎn)生的例外對象,此對象不能在一般JSP文件中直接使用,而只能在使用了“”的JSP文件中使用,118,request請求對象,1getAttribute 原型:public java.lang.Object getAttribute(java.lang.String name) 說明:以對象的形式返回特定名稱的屬性值。這個方法允許Servlet引擎給出一個客戶請求的特定信息。 ( Servlet為服務(wù)器端小程序,所有JSP頁面都事先翻譯成Servlet后才執(zhí)行,119,request請求對象,如果所給名稱的屬性不存在將返回空值。 屬性名應(yīng)該遵循和包命名方式同樣的約定,不要采用如“jav

37、a.*”、“ javax.*”及 “sun.*”.這樣的命名。 參數(shù):name 一個標(biāo)示屬性名的字符串 返回值:一個包含屬性值的對象,當(dāng)屬性不存在是為空,120,request對象使用示例( peixun2.11.jsp,request 用戶登錄 用戶名: 密碼:,121,瀏覽器類型: IE Netscape 資料選項: 標(biāo)題 詳細,122,Post.jsp代碼,test ); out.println(密碼:+request.getParameter(pwd)+); out.println(瀏覽器:+request.getParameter(radio)+); out.println(標(biāo)題:+

38、request.getParameter(check1)+); out.println(詳細:+request.getParameter(check2)+); out.println(隱含:+request.getParameter(hidden)+); out.println(getContentLength()=+request.getContentLength(),123,out.println(getContentType()=+request.getContentType()+); out.println(getRequestURI()=+request.getRequestURI(

39、)+); out.println(getServerPort()=+request.getServerPort()+); out.println(getServerName()=+request.getServerName()+); out.println(getProtocol()=+request.getProtocol()+); out.println(getRemoteAddr()=+request.getRemoteAddr()+); out.println(getHeaderNames()=+request.getHeaderNames()+); out.println(getMe

40、thod()=+request.getMethod()+); out.println(getServletPath()=+request.getServletPath()+); out.println(isRequestedSessionIdValid()=+request.isRequestedSessionIdValid()+ ); ,124,運行結(jié)果,125,126,session對象示例,session 請輸入您的姓名:,127,post1.jsp,post.jsp 您的姓名是: 您最喜歡的娛樂是:,128,post11.jsp,post1.jsp 您的姓名是: 您喜歡的娛樂是:,12

41、9,運行結(jié)果,130,提交后,131,輸入值,132,再次提交(保存名字,133,application對象運行示例,application ); out.println(peixun2.13.jsps MIME type is:+application.getMimeType(peixun2.13.jsp) +); out.println(URL of peixun2.13.jsp is: +application.getResource(“/peixun2.13.jsp)+); out.println(getServerInfo()=+application.getServerInfo()

42、+); out.println(application.getRealPath( ); application.log(Add a Record to log_file); ,134,運行結(jié)果,135,application對象實現(xiàn)網(wǎng)頁計數(shù)器,網(wǎng)頁計數(shù)器 您是第位訪問者!,136,運行結(jié)果(第一次訪問,137,刷新一次,138,exception對象示例,Error page login An error occured in the bean. Error Message is:,139,內(nèi)置對象小結(jié),全面介紹了JSP的幾種內(nèi)置對象。熟練使用這些內(nèi)置對象是開發(fā)JSP應(yīng)用程序的基本要求,尤其是

43、對于request、session和application對象更是必須要掌握的。 會使用對象所具有的方法,能熟練使用每一種對象的幾種常用方法,140,3.4 HTML表單,復(fù)習(xí)Web運行原理 HTML表單的概念 表單元素介紹 HTML表單的客戶端確認 客戶端表單確認實例,141,Web運行原理1,客戶端同Web服務(wù)器之間的協(xié)議為http HTTP為超文本傳輸協(xié)議 HTPP協(xié)議為“請求和響應(yīng)”協(xié)議 客戶端請求包括:請求行、頭、信息體 客戶端請求的方法 GET、POST、HEAD DELETE、TRACE、PUT 提交表單的方法: GET、POST,142,Web運行原理2,服務(wù)器接收到請求后,返

44、回HTTP響應(yīng) 每個響應(yīng):狀態(tài)行、頭、信息體 常見狀態(tài) 404 所請求的文件不存在 500 服務(wù)器程序出錯 200 OK 成功 信息體用于瀏覽器顯示,143,頁面訪問失敗,144,HTML表單,表單是具有輸入域、文本域的頁面 用于客戶端同服務(wù)器端交互 用戶在客戶端填寫表單,然后“提交” 表單中的信息發(fā)送到服務(wù)器 服務(wù)器返回處理情況,145,HTML表單標(biāo)記,表單主標(biāo)記 表單中的標(biāo)記 是表單開始標(biāo)記,結(jié)束,146,表單的例子(peixun2.15.jsp,表單 用戶登錄 用戶名: 密碼:,147,運行結(jié)果,148,form標(biāo)記,描述表單的特性,語法 method表單傳輸方法 GET方法將表單信息

45、在URL后傳輸 POST方法將表單信息作為信息體傳輸 action為表單處理方式,通常為一個URL enctype為編碼方式,149,標(biāo)記,表單中輸入信息的區(qū)域 屬性 type 類型 name 名稱 id 標(biāo)識 maxlength 最大字符數(shù) size 輸入域?qū)挾?value 域的初始值 button 按鈕 用javascript響應(yīng),150,的類型,text 文本 passwowrd 口令方式 checkbox 多選框 name相同 radio 單選按鈕 name相同 image 圖片 hidden 隱藏表單 發(fā)送數(shù)據(jù) submit 提交按鈕 向服務(wù)器提交表單 reset 復(fù)位按鈕 將表單充

46、置為初始狀態(tài),151,文本框:TEXTAREA,多行文本域: 參數(shù) COLS:寬度 ROWS:高度 NAME:名稱 CPU PIV 1500 Memory 512M,152,下拉框:SELECT,定義列表框: 參數(shù) MULTIPLE 可同時選取多行 NAME 名稱 SIZE 可見項目數(shù) 每個項目用option標(biāo)記 屬性SELECTED出現(xiàn)在option表示選中,153,select的例子,北京 天津 上海 重慶,154,表單提交,提交方式: submit類型按鈕提交表單 通過普通按鈕的javascript函數(shù) 傳輸方法依據(jù)中的method 推薦使用POST 傳輸編碼依據(jù)中的enctype 處理

47、方式依據(jù)中的action,155,表單清除,reset按鈕重置表單為初始值,156,綜合例子,表單 用戶注冊 用戶名: 密碼: 你喜歡: 足球 籃球,157,性別: 男 女 你的計算機 CPU PIV 1500 Memory 512M 你計算機的操作系統(tǒng),158,你所在地: 北京 天津 上海 重慶,159,運行結(jié)果,160,表單的確認,客戶端確認 減少服務(wù)器負載 縮短用戶等待時間 兼容性難 服務(wù)器端確認 統(tǒng)一確認 兼容性強 服務(wù)器負載重,161,客戶端確認,采用javascript進行確認 常用函數(shù) isBetween isDate isTime isDigit isEmail isEmpty

48、 isInt isReal,162,客戶端確認例子,客戶端確認 用戶登錄 用戶名: 密碼:,163,function checkform(frm) var flag=true; if(.value=) alert(姓名不能為空,請輸入值!); .focus(); flag=false; return flag;,164,運行結(jié)果,165,2.3.4 JSP與客戶機的交互,從表單中獲得參數(shù) 返回參數(shù) 表單的服務(wù)器端確認,166,從表單中獲得參數(shù),JSP通過request內(nèi)置對象獲取表單信息 用不同的方法獲取不同種類的信息 獲取參數(shù)的主要方法: getParamet

49、er() 獲取參數(shù)的值 getParameterNames() 獲取參數(shù)的名稱 getParameterValues() 獲取多個值,167,getParameter(,可以獲得文本框、文本區(qū)域、單選、多選的值 表單中各元素的NAME屬性是它的唯一標(biāo)識,用它獲取參數(shù)。 參考peixun2.11.jsp及post.jso request.getParameter(User,168,向客戶端輸出,使用內(nèi)置對象out out.println(content) 使用“=” 參看peixun2.11.jsp和post.jsp out.println(用戶名: +User+); 參看peixun2.14.jsp 您是第位訪問者,169,表單的服務(wù)器端確認,在客戶端不能用JSP進行確認 分工:數(shù)據(jù)處理在服務(wù)器端 實效性:客戶端得到服務(wù)器確認后表明數(shù)據(jù)已經(jīng)到達服務(wù)器 客戶端兼容性好 缺點:加大服務(wù)器負載和用戶等待時間,170,服務(wù)器端確認方法,采用Java類對表單數(shù)據(jù)進行復(fù)雜的檢查 采用JSP進行確認,171,服務(wù)器端確認的例子,服務(wù)器端確認 用戶登錄 用戶名: 密碼:,172,loginAction.jsp,確認JSP ); out.println(密碼:+pwd+); else ,173,用戶名不能為空 用戶登錄 用戶名: 密碼:,174,運行結(jié)果(TOMCAT,175

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論