版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 2 3 4 復(fù)習(xí)JSP的概念 nJava Server Page nServlet簡(jiǎn)化設(shè)計(jì),邏輯與界面設(shè)計(jì)分開, 開發(fā)更方便; nHTML語(yǔ)法的 java 擴(kuò)展,加入新的標(biāo)簽 (,); n強(qiáng)大的組件(Java Bean)支持功能; 5 JSP文件結(jié)構(gòu)及主要標(biāo)簽 . 其他 HTML 語(yǔ)言 其他 HTML 語(yǔ)言 6 JSP示例(Hello.jsp) % for ( int i=0; i 你好 你好 你好 7 JSP執(zhí)行過程 n *.jsp*.java*.class request response 執(zhí)行 jsp parser JSDK servlet servlet 分析器 8 JSP n執(zhí)行過
2、程 9 JSP示例(Hello_Date.jsp) 你好,今天是 號(hào), 星期 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(號(hào),星期); out.print(today.getDay(); out.write( rn rnrn ); JSP文件 servlet文件
3、 10 JSP示例(瀏覽結(jié)果) 11 JSP語(yǔ)法概述 nJSP原始代碼中包含了JSP元素和 Template(模板) data兩類 nTemplate data指的是JSP引擎不處理的部 分,即標(biāo)記以外的部分,例 如代碼中的HTML的內(nèi)容等 ,這些數(shù)據(jù) 會(huì)直接傳送到客戶端的瀏覽器 nJSP元素則是指將由JSP引擎直接處理的 部分,這一部分必須符合JSP語(yǔ)法,否則 會(huì)導(dǎo)致編譯錯(cuò)誤。 12 jsp例子(hi.jsp) n Hi-JSP實(shí)驗(yàn) Template data JSP元素 13 JSP語(yǔ)法 nJSP語(yǔ)法分為三種不同的類型 編譯器指令(DIRECTIVE) 例如: 腳本語(yǔ)法(SCRIPTING
4、) 動(dòng)作語(yǔ)法(ACTION) 例如: , , 14 腳本語(yǔ)法 n腳本語(yǔ)法包括 n“HTML注釋”: n“隱藏注釋”: n“聲明” n“表達(dá)式” n“腳本段” 15 編譯器指令 n編譯器指令包括“包含指令”, “頁(yè)指 令”和“taglib指令” n它們包含在“”卷標(biāo)里。 n兩個(gè)主要的指令是page與include。 16 動(dòng)作語(yǔ)法 n動(dòng)作語(yǔ)法包括, , , 和。 17 HTML注釋 nJSP 語(yǔ)法格式如下: n!- comment - 或 n!- 注釋 - n這種注釋發(fā)送到客戶端,但不直接顯示, 在源代碼中可以查看到。 18 HTML注釋(peixun2.1.jsp) HTML注釋 未顯示上一行
5、的注釋。 19 HTML注釋 20 HTML注釋(peixun2.2.jsp) 要多加練習(xí) !-This page was loaded on - 在源文件中包括當(dāng)前時(shí)間。 21 HTML注釋 22 IE中的源程序有注釋 23 隱藏注釋 nJSP 語(yǔ)法格式如下: n 不發(fā)送到客戶端。 24 隱藏注釋 (peixun2.3.jsp) A Comment Test A Test of Comments 25 隱藏注釋 26 在IE中查看源代碼 27 聲明 nJSP 語(yǔ)法格式如下: n 或 n 28 聲明(test2.4.jsp) test2.4.jsp 29 表達(dá)式 n用于在頁(yè)面上輸出信息,語(yǔ)法格
6、式如下: n 或 n 30 表達(dá)式(peixun2.4.jsp) test 31 表達(dá)式 a= b= c= 32 peixun2.4.jsp執(zhí)行結(jié)果 33 腳本段 nJSP 語(yǔ)法格式如下: n 或 n 34 腳本段 (peixun2.5.jsp) test 35 % condition=1; switch(condition) case 0: out.println(You must select condition 0!+); break; case 1: out.println(You must select condition 1!+); 36 break; case 2: out.pr
7、intln(You must select condition 2!+); break; default: out.println(Your select not in 0,1,2,select again!+); % 轉(zhuǎn)義符: 雙引號(hào) “ ,單引號(hào),反斜杠,回車r,換行n,制表 符t,退格b 37 腳本段執(zhí)行結(jié)果 38 包含指令 ninclude指令:向當(dāng)前頁(yè)中插入一個(gè)靜態(tài)文件 的內(nèi)容。 nJSP 語(yǔ)法格式如下: n 或 n 39 包含指令(peixun2.6.jsp) test The current date and time are 40 “peixun2.6.1.jsp” 41 包含
8、指令 42 Page指令 n“Page”指令用于定義JSP文件中的全局屬性。 JSP 語(yǔ)法格式如下: 44 Page指令 n屬性: 1language=java 聲明腳本語(yǔ)言的種類,目前只能用java 。 2.import=package.class | package.* ,. 需要導(dǎo)入的Java包的列表,這些包作用于程序 段,表達(dá)式,以及聲明。下面的包在JSP編譯時(shí) 已經(jīng)導(dǎo)入了,所以就不需要再指明了: java.lang.* javax.servlet.* javax.servlet.jsp.* javax.servlet.http.* 45 3errorPage=relativeURL
9、設(shè)置處理異常事件的JSP文件。 4isErrorPage=true | false 設(shè)置此頁(yè)是否為出錯(cuò)頁(yè),如果被設(shè)置為 true,你就能使用exception對(duì)象 46 page指令詳說 n“”指令作用于整個(gè)JSP頁(yè)面,同樣包括 靜態(tài)的包含文件。但是“”指令不能作用 于動(dòng)態(tài)的包含文件,比如 “”。 n可以在一個(gè)頁(yè)面中用上多個(gè)“”指令,但 是其中的屬性只能用一次,不過也有例外,那就是 import屬性。因?yàn)閕mport屬性和Java中的import語(yǔ)句 類似(參照J(rèn)ava Language,import語(yǔ)句引入得是Java 語(yǔ)言中的類),所以此屬性就能多用幾次。 n無(wú)論把“”指令放在JSP的文件
10、的哪個(gè)地 方,它的作用范圍都是整個(gè)JSP頁(yè)面。不過,為了JSP 程序的可讀性,以及好的編程習(xí)慣,最好還是把它放 在JSP文件的頂部。 47 page指令(peixun2.7.jsp) test3 Test for using Page. 48 page指令例子運(yùn)行結(jié)果 49 taglib指令 nJSP語(yǔ)法 n用于引入定制標(biāo)簽庫(kù) 50 taglib指令 n屬性 n1uri=URIToTagLibrary nUniform Resource Identifier (URI)根據(jù)標(biāo)簽的 前綴對(duì)自定義的標(biāo)簽進(jìn)行唯一的命名,URI可以是 以下的內(nèi)容: nUniform Resource Locator
11、(URL), 由 RFC 2396 定義, 可以從以下位置查看 (http:/www.hut.fi/u /jkorpela/rfc/2396/full.html)。 n Uniform Resource Name (URN), 由 RFC 2396定義 n一個(gè)相對(duì)或絕對(duì)的路徑 n可以是標(biāo)簽庫(kù)描述文件 51 n2prefix=tagPrefix n表示標(biāo)簽在JSP中的名稱。 n在 自 定 義 標(biāo) 簽 之 前 的 前 綴 , 比 如 , 在 中的public,如果這里不寫 public,那么這就是不合法的。請(qǐng)不要用 jsp, jspx, java, javax, servlet, sun, 和su
12、nw做為你的前綴,這些已被Sun公司聲 明保留。 52 Tablib指令(peixun2.8.jsp) test 53 nJSP 語(yǔ)法格式如下: 1jsp:forward page=relativeURL | / 2jsp:forward page=relativeURL | jsp:param name=parameterName value=parameterValue | / (“”指可以有多個(gè)“” 標(biāo)記。) 54 屬性: n1、page=relativeURL | n這里是一個(gè)表達(dá)式或是一個(gè)字符串用于 說明你將要定向的文件或URL。這個(gè)文件 可以是JSP,程序段,或者其它能夠處理 re
13、quest對(duì)象的文件(如asp,cgi,php)。 55 n2jsp:param name=parameterName value=parameterValue | / n向一個(gè)動(dòng)態(tài)文件發(fā)送一個(gè)或多個(gè)參數(shù), 這個(gè)文件必須是動(dòng)態(tài)文件。如果想傳遞 多個(gè)參數(shù),可以在一個(gè)JSP文件中使用多 個(gè)“”;“name”指定參數(shù) 名,“value”指定參數(shù)值。 56 注意 n“”標(biāo)簽從一個(gè)JSP文件 向另一個(gè)文件傳遞一個(gè)包含用戶請(qǐng)求的 request對(duì)象?!啊睒?biāo)簽 以后的代碼,將不能執(zhí)行。 57 例子(peixun2.9.jsp) test 58 forwardTo.jsp 59 運(yùn)行結(jié)果(TOMCAT) 60
14、 n包含一個(gè)靜態(tài)或動(dòng)態(tài)文件. n JSP 語(yǔ)法格式如下: 1jsp:include page=relativeURL | flush=true / 2jsp:include page=relativeURL | flush=true jsp:param name=parameterName value=parameterValue | / (“”指可以有多個(gè)“”標(biāo)記。) 61 的屬性 1page=relativeURL | 參數(shù)為一相對(duì)路徑,或者是代表相對(duì)路徑的表達(dá)式。 2flush=true 這里必須使用flush=true,不能使用false值。而缺 省值為false 。 62 3jsp:
15、param name=parameterName value=parameterValue | / “”用來傳遞一個(gè)或多個(gè)參數(shù) 到指定的動(dòng)態(tài)文件,能在一個(gè)頁(yè)面中使 用多個(gè)“”來傳遞多個(gè)參數(shù), 63 例子(peixun2.10.jsp) peixun.2.10.jsp 64 peixun2.10.1.jsp % String username; username=request.getParameter(User); out.println(Username is +username+); % 65 運(yùn)行結(jié)果(TOMCAT) 66 n使用“”插入一個(gè)applet或Bean, 必要的話還要下載一個(gè)
16、Java插件用于執(zhí)行它。 n nJSP 語(yǔ)法格式如下: 68 jsp:param name=parameterName value=parameterValue | / + text message for user 69 屬性 1type=bean | applet 將被執(zhí)行的插件對(duì)象的類型,你必須得指定這個(gè) 是Bean還是applet,因?yàn)檫@個(gè)屬性沒有缺省值。 2code=classFileName 將會(huì)被Java插件執(zhí)行的Java Class的名字,必須 以.class結(jié)尾。這個(gè)文件必須存在于codebase 屬性指定的目錄中。 70 n3codebase=classFileDirect
17、oryName n將會(huì)被執(zhí)行的Java Class文件的目錄(或者是 路徑),如果你沒有提供此屬性,那么使用 的jsp文件的目錄將會(huì)被使用。 n n4name=instanceName n這個(gè)Bean或applet實(shí)例的名字,它將會(huì)在Jsp 其它的地方調(diào)用。 71 例子 Unable to load applet 72 n創(chuàng)建一個(gè)Bean實(shí)例并指定它的名字和作用 范圍。 n JSP 語(yǔ)法格式如下: jsp:useBean id=beanInstanceName scope=page | request | session | application class=package.class |
18、73 type=package.class | c l a s s = p a c k a g e . c l a s s type=package.class | beanName=package.class | type=package.class / | other elements 74 屬性以及用法 n1id=beanInstanceName n在所定義的范圍中確認(rèn)Bean的變量,使之能在 后面的程序中使用此變量名來分辨不同的 Bean ,這個(gè)變量名對(duì)大小寫敏感,必須符合 所使用的腳本語(yǔ)言的規(guī)定,這個(gè)規(guī)定在Java Language 規(guī)范已經(jīng)寫明。如果Bean已經(jīng)在別 的“”標(biāo)記中創(chuàng)
19、建,則當(dāng)使用 這個(gè)已經(jīng)創(chuàng)建過Bean時(shí),id的值必須與原來的 那個(gè)id值一致;否則則意味著創(chuàng)建了同一個(gè)類 的兩個(gè)不同的對(duì)象。 75 n2scope=page | request | session | application nBean存在的范圍以及id變量名的有效范 圍。缺省值是page,以下是詳細(xì)說明: npage - 能在包含“”元素的 JSP文件以及此文件中的所有靜態(tài)包含文件 中使用這個(gè)Bean,直到頁(yè)面執(zhí)行完畢向客戶 端發(fā)回響應(yīng)或轉(zhuǎn)到另一個(gè)文件為止。 76 nrequest - 在任何執(zhí)行相同請(qǐng)求的Jsp文件中 使用這個(gè)Bean,直到頁(yè)面執(zhí)行完畢向客戶端發(fā) 回響應(yīng)或轉(zhuǎn)到另一個(gè)文件為止
20、。能夠使用 R e q u e s t 對(duì) 象 訪 問 這 個(gè) B e a n , 比 如 request.getAttribute(beanInstanceName)。 nsession - 從創(chuàng)建Bean開始,就能在任何使用 相同session的jsp文件中使用這個(gè)Bean。這個(gè) Bean存在于整個(gè)Session生存周期內(nèi),任何在 分享此Session的Jsp文件都能使用同一Bean。 注意在創(chuàng)建這個(gè)Bean的Jsp文件中“”指令中必須指定“session=true”。 77 napplication - 從創(chuàng)建Bean開始,就能 在任何使用相同application的Jsp文件 中使用B
21、ean。這個(gè)Bean存在于整個(gè) application生存周期內(nèi),任何在分享此 application的Jsp文件都能使用同一 Bean. 78 n3class=package.class n使用new關(guān)鍵字以及class構(gòu)造器從一個(gè)class中實(shí) 例化一個(gè)bean。這個(gè)class不能是抽象的,必須有 一個(gè)公用的,沒有參數(shù)的構(gòu)造器。這個(gè)package的 名字區(qū)別大小寫。 n 4type=package.class n如果這個(gè)Bean已經(jīng)在指定的范圍中存在,那么賦予 這個(gè)Bean一個(gè)的數(shù)據(jù)開庫(kù)類型 。如果使用type屬 性的同時(shí)沒有使用class或beanName,Bean將不會(huì) 被實(shí)例化。注意
22、package和class的名稱區(qū)分大小寫。 79 n5beanName=package.class | type=package.class n使用java.beans.Beans.instantiate方法來從一個(gè) class或串行化的模板中實(shí)例化一個(gè)Bean,同時(shí)指 定Bean的類型。 Beans.instantiate方法將檢查此 名稱是否表示一個(gè)類或一個(gè)串行化模板。如果這個(gè) Bean是被串行化的,那么Beans.instantiate方法 將通過使用一個(gè)類裝載器讀取串行化格式(類似 package.class.ser)。 80 nbeanName可以是package和class,也可
23、 以 是 表 達(dá) 式 , 它 的 值 會(huì) 傳 給 Beans.instantiate方法。type的值可以 和Bean相同,也可以是它的基類,或者 是它所實(shí)現(xiàn)的接口。 package和 class 名字區(qū)分大小寫。 81 nJSP 語(yǔ)法格式如下: 屬性: 1name=beanInstanceName bean的名字,由指定。 2property=propertyName 所指定的Bean的屬性名。 82 例子 /聲明引用的聲明引用的beanbean / test Calendar of 83 n設(shè)置Bean的屬性值. n JSP 語(yǔ)法格式如下: jsp:setProperty name=bea
24、nInstanceName property= * | p r o p e r t y = p r o p e r t y N a m e param=parameterName | p r o p e r t y = p r o p e r t y N a m e value=string | / 84 屬性 n1name=beanInstanceName n表示已經(jīng)在“”中創(chuàng)建的 Bean實(shí)例的名字。 n2property=* n儲(chǔ)存用戶在jsp輸入的所有值,用于匹配 Bean中的屬性。 85 n 3property=propertyName param=parameterName n用一
25、個(gè)參數(shù)值來指定Bean中的一個(gè)屬性值, 一般情況下是從request對(duì)象中獲得的。其 中property指定Bean的屬性名,param指定 request中的參數(shù)名。 86 n4property=propertyName value=string | n使用指定的值來設(shè)定Bean屬性。這個(gè)值可以是字符 串,也可以是表達(dá)式。如果這個(gè)字符串,那么它就 會(huì)被轉(zhuǎn)換成Bean屬性的類型(轉(zhuǎn)換方法見表4.1)。 如果是一個(gè)表達(dá)式,那么它的類型就必須和將要設(shè) 定的屬性值的類型一致。 n如果參數(shù)值為空值,那么對(duì)應(yīng)的屬性值也不會(huì)被設(shè) 定。此外,不能在同一個(gè)“” 中同時(shí)使用param和value參數(shù) 。 87
26、package rmg; public class student private long classNo; private String name; private int age; private boolean 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; publ
27、ic String getName() return name; public void setName(String name) =name; 89 public int getAge() return 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 第一次運(yùn)行結(jié)果 93 以后運(yùn)行結(jié)果 第一行發(fā)生變化 94 測(cè)試session作用域 95
28、 96 運(yùn)行結(jié)果 97 小結(jié)與習(xí)題 n本局面集中介紹了JSP的各種語(yǔ)法,掌握這些語(yǔ)法使讀 者進(jìn)行JSP開發(fā)的基本要求,于一般的網(wǎng)頁(yè)開發(fā)不同, JSP對(duì)大小寫是敏感的,這一點(diǎn)要注意,尤其是對(duì)曾使 用過其他開發(fā)語(yǔ)言的讀者。 n與Bean相關(guān)的幾種語(yǔ)法的使用將在“Bean的使用”一 章中專門進(jìn)行講解,因此可對(duì)照學(xué)習(xí)。熟練使用這些 語(yǔ)法是必須的,因此讀者應(yīng)該多加練習(xí),觀察不同用 法所產(chǎn)生的效果上的差異。對(duì)于給出的例子最好是自 己敲入文件并觀察執(zhí)行結(jié)果。 n隨后的幾章將各有重點(diǎn)的講述與語(yǔ)法相關(guān)的一些問 題。 98 習(xí)題 n1舉例說明HTML注釋與隱藏注釋有何異同。 n2試寫一個(gè)JSP文件,包含所有JSP
29、語(yǔ)法元素 n3Scriptlet中應(yīng)遵循什么樣的語(yǔ)法規(guī)則? n4元素包含靜態(tài)文件與包含動(dòng) 態(tài)文件處理上有何不同? n5起到什么樣的作用?使用時(shí) 有哪些注意事項(xiàng)? n6page指令能起到那些作用?有效范圍有多 大? 99 100 nJSP 有以下九種內(nèi)置對(duì)象,包括: n request,請(qǐng)求對(duì)象 nresponse,響應(yīng)對(duì)象 npageContext,頁(yè)面上下文對(duì)象 nsession,會(huì)話對(duì)象 napplication,應(yīng)用程序?qū)ο?nout,輸出對(duì)象 nconfig,配置對(duì)象 npage,頁(yè)面對(duì)象 nexception,例外對(duì)象 101 重點(diǎn)介紹 nrequest,請(qǐng)求對(duì)象 nsession,
30、會(huì)話對(duì)象 napplication,應(yīng)用程序?qū)ο?102 綜述 n有幾種對(duì)象看起來和ASP的內(nèi)置對(duì)象差不 多,功能也類似,這是因?yàn)檫@些內(nèi)置對(duì) 象的構(gòu)建基礎(chǔ)是標(biāo)準(zhǔn)化的HTTP協(xié)議。如 果使用過ASP,又對(duì)Java有一定的了解的 話,那么對(duì)這幾種JSP內(nèi)置對(duì)象的使用應(yīng) 該能迅速掌握。需要注意的問題是對(duì)象 名的寫法,包括這些對(duì)象方法的調(diào)用時(shí) 也要書寫正確,因?yàn)镴ava語(yǔ)言本身是大 小寫敏感的。 103 n從本質(zhì)上講,JSP的這些內(nèi)置對(duì)象其實(shí)都 是由特定的Java類所產(chǎn)生的,在服務(wù)器 運(yùn)行時(shí)根據(jù)情況自動(dòng)生成,所以如果你 有較好的Java基礎(chǔ),可以參考相應(yīng)的類 說明,表3.1給出了他們的對(duì)應(yīng)關(guān)系。更 進(jìn)
31、一步的講解將會(huì)在講解Servlet的一章 中展開,如果你的Java基礎(chǔ)不太好,可 以先熟悉在這一章里所介紹的各種方法 的使用。 104 105 request和response n“request” 對(duì)象代表的是來自客戶端的請(qǐng)求, 例如我們?cè)贔ORM表單中填寫的信息等,是最 常用的對(duì)象。關(guān)于它的方法使用較多的是 getParameter、getParameterNames和 getParameterValues,通過調(diào)用這幾個(gè)方法來 獲取請(qǐng)求對(duì)象中所包含的參數(shù)的值 n“response” 對(duì)象代表的是對(duì)客戶端的響應(yīng), 也就是說可以通過“response”對(duì)象來組織發(fā)送 到客戶端的數(shù)據(jù)。但是由于
32、組織方式比較底層, 所以不建議普通讀者使用,需要向客戶端發(fā)送 文字時(shí)直接使用“out” 對(duì)象即可。 106 request對(duì)象示例 姓名 107 request對(duì)象示例(Hello_req.jsp 你好, , 今天是 號(hào),星期 108 request對(duì)象示例(輸出結(jié)果) 你好, 獨(dú)孤求敗, 今天是 9號(hào),星期1 109 pageContext n“pageContext” 對(duì)象直譯時(shí)可以稱作“頁(yè) 面上下文”對(duì)象,代表的是當(dāng)前頁(yè)面運(yùn)行的一 些屬性,常用的方法包括findAttribute、 getAttribute、getAttributesScope和 getAttributeNamesInS
33、cope,一般情況下 “pageContext” 對(duì)象用到得也不是很多,只有 在項(xiàng)目所面臨的情況比較復(fù)雜的情況下,才會(huì) 利用到頁(yè)面屬性來輔助處理。 n 110 session對(duì)象 n“session” 對(duì)象代表服務(wù)器與客戶端所 建立的會(huì)話,當(dāng)需要在不同的JSP頁(yè)面中 保留客戶信息的情況下使用,比如在線 購(gòu)物、客戶軌跡跟蹤等?!皊ession” 對(duì) 象建立在cookie的基礎(chǔ)上,所以使用時(shí)應(yīng) 注意判斷一下客戶端是否打開了cookie。 常用的方法包括getId、 getValue、 getValueNames和putValue等。 111 session對(duì)象 n概要 nHTTP是無(wú)狀態(tài)(stat
34、eless)協(xié)議; nWeb Server 對(duì)每一個(gè)客戶端請(qǐng)求都沒有歷史記憶; nSession用來保存客戶端狀態(tài)信息; n由Web Server 寫入; n存于客戶端; n客戶端的每次訪問都把上次的session記錄傳遞給 Web Server; nWeb Server讀取客戶端提交的session來獲取客戶 端的狀態(tài)信息; 112 session對(duì)象示例(Form表單 Logon_session.html) 姓名 113 session對(duì)象示例Logon_session.jsp 你的名字已經(jīng)寫入session check 114 session對(duì)象示例(Check_session.jsp)
35、 您還未登錄 已經(jīng)登錄 115 application對(duì)象 n“application” 對(duì)象負(fù)責(zé)提供應(yīng)用程序在 服務(wù)器中運(yùn)行時(shí)的一些全局信息,常用 的方法有g(shù)etMimeType和getRealPath等。 116 out n“out” 對(duì)象代表了向客戶端發(fā)送數(shù)據(jù)的對(duì)象, 與“response” 對(duì)象不同,通過“out” 對(duì)象發(fā) 送的內(nèi)容將是瀏覽器需要顯示的內(nèi)容,是文本 一級(jí)的,可以通過“out” 對(duì)象直接向客戶端寫 一個(gè)由程序動(dòng)態(tài)生成HTML文件。常用的方法 除了pirnt和println之外,還包括clear、 clearBuffer、flush、getBufferSize和 getRe
36、maining,這是因?yàn)椤皁ut” 對(duì)象內(nèi)部包含 了一個(gè)緩沖區(qū),所以需要一些對(duì)緩沖區(qū)進(jìn)行操 作的方法。 117 config、 page、 exception n“config” 對(duì)象提供一些配置信息,常用的方法 有g(shù)etInitParameter和getInitParameterNames, 以獲得Servlet初始化時(shí)的參數(shù)。 n“page” 對(duì)象代表了正在運(yùn)行的由JSP文件產(chǎn) 生的類對(duì)象,不建議一般讀者使用。 n“exception” 對(duì)象則代表了JSP文件運(yùn)行時(shí)所 產(chǎn)生的例外對(duì)象,此對(duì)象不能在一般JSP文件 中直接使用,而只能在使用了“”的JSP文件中使用 118 request請(qǐng)求對(duì)
37、象 n1getAttribute n原型:public java.lang.Object getAttribute(java.lang.String name) n說明:以對(duì)象的形式返回特定名稱的屬 性值。這個(gè)方法允許Servlet引擎給出一 個(gè)客戶請(qǐng)求的特定信息。 ( Servlet為服 務(wù)器端小程序,所有JSP頁(yè)面都事先翻譯 成Servlet后才執(zhí)行) 119 request請(qǐng)求對(duì)象 n 如果所給名稱的屬性不存在將返回空值。 n 屬性名應(yīng)該遵循和包命名方式同樣的約 定,不要采用如“java.*”、“ javax.*”及 “sun.*”.這樣的命名。 n參數(shù):name 一個(gè)標(biāo)示屬性名的字符串
38、 n返回值:一個(gè)包含屬性值的對(duì)象,當(dāng)屬 性不存在是為空。 120 request對(duì)象使用示例( peixun2.11.jsp ) request 用戶登錄 用戶名: 密碼: 121 瀏覽器類型: IE Netscape 資料選項(xiàng): 標(biāo)題 詳細(xì) 122 Post.jsp代碼 test % out.println(用戶名:+request.getParameter(User)+); out.println(密碼:+request.getParameter(pwd)+); out.println(瀏覽器:+request.getParameter(radio)+); out.println(標(biāo)題:+
39、request.getParameter(check1)+); out.println(詳細(xì):+request.getParameter(check2)+); out.println(隱含:+request.getParameter(hidden)+); out.println(getContentLength()=+request.getContentLength()+); 123 out.println(getContentType()=+request.getContentType()+); out.println(getRequestURI()=+request.getRequestU
40、RI()+); 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(ge
41、tMethod()=+request.getMethod()+); out.println(getServletPath()=+request.getServletPath()+); out.println(isRequestedSessionIdValid()=+request.isRequestedSessionIdVali d()+ ); % 124 運(yùn)行結(jié)果 125 126 session對(duì)象示例 session 請(qǐng)輸入您的姓名: 127 post1.jsp post.jsp 您的姓名是: 您最喜歡的娛樂是: 128 post11.jsp post1.jsp 您的姓名是: 您喜歡的娛樂
42、是: 129 運(yùn)行結(jié)果 130 提交后 131 輸入值 132 再次提交(保存名字) 133 application對(duì)象運(yùn)行示例 application % out.println(Java Servlet API Version +application.getMajorVersion() +.+application.getMinorVersion()+); out.println(peixun2.13.jsps MIME type is:+application.getMimeType(peixun2.13.jsp) +); out.println(URL of peixun2.13.j
43、sp is: +application.getResource(“/peixun2.13.jsp)+); out.println(getServerInfo()=+application.getServerInfo()+); out.println(application.getRealPath( ); application.log(Add a Record to log_file); % 134 運(yùn)行結(jié)果 135 application對(duì)象實(shí)現(xiàn)網(wǎng)頁(yè)計(jì)數(shù)器 網(wǎng)頁(yè)計(jì)數(shù)器 您是第位訪問者! 136 運(yùn)行結(jié)果(第一次訪問) 137 刷新一次 138 exception對(duì)象示例 Error page
44、 login An error occured in the bean. Error Message is: 139 內(nèi)置對(duì)象小結(jié) n全面介紹了JSP的幾種內(nèi)置對(duì)象。熟練使 用這些內(nèi)置對(duì)象是開發(fā)JSP應(yīng)用程序的基 本要求,尤其是對(duì)于request、session和 application對(duì)象更是必須要掌握的。 n會(huì)使用對(duì)象所具有的方法,能熟練使用 每一種對(duì)象的幾種常用方法。 140 141 Web運(yùn)行原理1 n客戶端同Web服務(wù)器之間的協(xié)議為http nHTTP為超文本傳輸協(xié)議 nHTPP協(xié)議為“請(qǐng)求和響應(yīng)”協(xié)議 n客戶端請(qǐng)求包括:請(qǐng)求行、頭、信息體 n客戶端請(qǐng)求的方法 nGET、POST、H
45、EAD nDELETE、TRACE、PUT n提交表單的方法: GET、POST 142 Web運(yùn)行原理2 n服務(wù)器接收到請(qǐng)求后,返回HTTP響應(yīng) n每個(gè)響應(yīng):狀態(tài)行、頭、信息體 n常見狀態(tài) n404 所請(qǐng)求的文件不存在 n500 服務(wù)器程序出錯(cuò) n200 OK 成功 n信息體用于瀏覽器顯示 143 頁(yè)面訪問失敗 144 HTML表單 n表單是具有輸入域、文本域的頁(yè)面 n用于客戶端同服務(wù)器端交互 n用戶在客戶端填寫表單,然后“提交” n表單中的信息發(fā)送到服務(wù)器 n服務(wù)器返回處理情況 145 HTML表單標(biāo)記 n表單主標(biāo)記 n n表單中的標(biāo)記 n n n n n是表單開始標(biāo)記,結(jié)束 146 表單
46、的例子(peixun2.15.jsp) 表單 用戶登錄 用戶名: 密碼: 147 運(yùn)行結(jié)果 148 form標(biāo)記 n描述表單的特性,語(yǔ)法 nmethod表單傳輸方法 nGET方法將表單信息在URL后傳輸 nPOST方法將表單信息作為信息體傳輸 naction為表單處理方式,通常為一個(gè)URL nenctype為編碼方式 149 標(biāo)記 n表單中輸入信息的區(qū)域 n屬性 ntype 類型 nname 名稱 nid 標(biāo)識(shí) nmaxlength 最大字符數(shù) nsize 輸入域?qū)挾?nvalue 域的初始值 nbutton 按鈕 用javascript響應(yīng) 150 的類型 ntext 文本 npasswow
47、rd 口令方式 ncheckbox 多選框 name相同 nradio 單選按鈕 name相同 nimage 圖片 nhidden 隱藏表單 發(fā)送數(shù)據(jù) nsubmit 提交按鈕 向服務(wù)器提交表單 nreset 復(fù)位按鈕 將表單充置為初始狀態(tài) 151 文本框:TEXTAREA n多行文本域: n參數(shù) nCOLS:寬度 nROWS:高度 nNAME:名稱 CPU PIV 1500 Memory 512M 152 下拉框:SELECT n定義列表框: n參數(shù) nMULTIPLE 可同時(shí)選取多行 nNAME 名稱 nSIZE 可見項(xiàng)目數(shù) n每個(gè)項(xiàng)目用option標(biāo)記 n屬性SELECTED出現(xiàn)在opt
48、ion表示選中 153 select的例子 北京 天津 上海 重慶 154 表單提交 n提交方式: nsubmit類型按鈕提交表單 n通過普通按鈕的javascript函數(shù) n傳輸方法依據(jù)中的method n推薦使用POST n傳輸編碼依據(jù)中的enctype n處理方式依據(jù)中的action 155 表單清除 nreset按鈕重置表單為初始值 156 綜合例子 表單 用戶注冊(cè) 用戶名: 密碼: 你喜歡: 足球 籃球 157 性別: 男 女 你的計(jì)算機(jī) CPU PIV 1500 Memory 512M 你計(jì)算機(jī)的操作系統(tǒng) 158 你所在地: 北京 天津 上海 重慶 159 運(yùn)行結(jié)果 160 表單的
49、確認(rèn) n客戶端確認(rèn) n減少服務(wù)器負(fù)載 n縮短用戶等待時(shí)間 n兼容性難 n服務(wù)器端確認(rèn) n統(tǒng)一確認(rèn) n兼容性強(qiáng) n服務(wù)器負(fù)載重 161 客戶端確認(rèn) n采用javascript進(jìn)行確認(rèn) n常用函數(shù) nisBetween nisDate nisTime nisDigit nisEmail nisEmpty nisInt nisReal 162 客戶端確認(rèn)例子 客戶端確認(rèn) 用戶登錄 用戶名: 密碼: 163 function checkform(frm) var flag=true; if(.value=) alert(姓名不能為空,請(qǐng)輸入值!); .focus();
50、flag=false; return flag; 164 運(yùn)行結(jié)果 165 166 167 n可以獲得文本框、文本區(qū)域、單選、多 選的值 n表單中各元素的NAME屬性是它的唯一標(biāo) 識(shí),用它獲取參數(shù)。 n參考peixun2.11.jsp及post.jso request.getParameter(User); 168 向客戶端輸出 n使用內(nèi)置對(duì)象out out.println(content) n使用“=” n參看peixun2.11.jsp和post.jsp out.println(用戶名: +User+); n參看peixun2.14.jsp 您是第位訪問者! 169 表單的服務(wù)器端確認(rèn) n在客戶端不能用JSP進(jìn)行確認(rèn) n分工:數(shù)據(jù)處理在服務(wù)器端 n實(shí)效性:客戶端得到服務(wù)器確認(rèn)后表明 數(shù)據(jù)已經(jīng)到達(dá)服務(wù)器 n客戶端兼容性好 n缺點(diǎn):加大服務(wù)器負(fù)載和用戶
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年電影院廣告投放與品牌合作合同2篇
- 二零二五年知識(shí)產(chǎn)權(quán)許可特別合同2篇
- 二零二五年度留學(xué)國(guó)家與學(xué)校選擇合同2篇
- 二零二五年網(wǎng)紅直播廣告合作合同1200字范本3篇
- 二零二五版礦山資產(chǎn)轉(zhuǎn)讓與資源補(bǔ)償合同3篇
- 二零二五年度邊溝工程防滲漏與防水害合同2篇
- 二零二五年度跨江大橋PC構(gòu)件預(yù)制及吊裝工程合同3篇
- 二零二五年度軟件許可與維護(hù)合同3篇
- 2025年度網(wǎng)絡(luò)安全防護(hù)軟件開發(fā)類框架合同3篇
- 小區(qū)物業(yè)保潔勞務(wù)合同(2篇)
- 2025年下半年貴州高速公路集團(tuán)限公司統(tǒng)一公開招聘119人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 資產(chǎn)評(píng)估服務(wù)房屋征收項(xiàng)目測(cè)繪實(shí)施方案
- 2025年經(jīng)濟(jì)形勢(shì)會(huì)議講話報(bào)告
- 北師大版小學(xué)三年級(jí)上冊(cè)數(shù)學(xué)第五單元《周長(zhǎng)》測(cè)試卷(含答案)
- 國(guó)家安全責(zé)任制落實(shí)情況報(bào)告3篇
- 2024年度順豐快遞冷鏈物流服務(wù)合同3篇
- 六年級(jí)下冊(cè)【默寫表】(牛津上海版、深圳版)(漢譯英)
- 合同簽訂培訓(xùn)
- 電工基礎(chǔ)知識(shí)培訓(xùn)課程
- 鐵路基礎(chǔ)知識(shí)題庫(kù)單選題100道及答案解析
- 金融AI:顛覆與重塑-深化理解AI在金融行業(yè)的實(shí)踐與挑戰(zhàn)
評(píng)論
0/150
提交評(píng)論