




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
Java入門基本概念
Java的白皮書為我們提出了Java語言的11個關(guān)鍵特性。
(1)Easy:Java的語法比C++的相對簡單,另一個方面就是Java能使軟件在很小的機器上運
行,基礎(chǔ)解釋其和類庫的支持的大小約為40kb,增加基本的標(biāo)準(zhǔn)庫和線程支持的內(nèi)存需要
增加125kbo
(2)分布式:Java帶有很強大的TCP/IP協(xié)議族的例程庫,Java應(yīng)用程序能夠通過URL
來穿過網(wǎng)絡(luò)來訪問遠(yuǎn)程對象,由于servlet機制的出現(xiàn),使Java編程非常的高效,現(xiàn)在許
多的大的webserver都支持servlet。
(3)00:血向?qū)ο笤O(shè)計是把重點放在對象及對象的接口上的一個編程技術(shù).其面向?qū)ο蠛?/p>
C++有很多不同,在與多重繼承的處理及Java的原類模型。
(4)健壯特性:Java采取了一個安全指針模型,能減小重寫內(nèi)存和數(shù)據(jù)崩潰的可能型。
(5)安全:Java用來設(shè)計網(wǎng)路和分布系統(tǒng),這帶來了新的安全問題,Java可以用來構(gòu)建
防病毒和防攻擊的System.事實證明Java在防毒這一方面做的比較好。
(6)中立體系結(jié)構(gòu):Java編譯其生成體系結(jié)構(gòu)中立的目標(biāo)文件格式可以在很多處理器上
執(zhí)行,編譯器產(chǎn)生的指令字節(jié)碼(Javabytecode)實現(xiàn)此特性,此字節(jié)碼可以在任何機器上解
釋執(zhí)行。
(7)可移植性:Java中對基本數(shù)據(jù)結(jié)構(gòu)類型的大小和算法都有嚴(yán)格的規(guī)定所以可移植性
很好。
(8)多線程:Java處理多線程的過程很簡單,Java把多線程實現(xiàn)交給底下操作系統(tǒng)或線
程程序完成.所以多線程是Java作為服務(wù)器端開發(fā)語言的流行原因之-o
(9)Applet和servlet:能夠在網(wǎng)頁上執(zhí)行的程序叫Applet,需要支持Java的瀏覽器很多,
而applet支持動態(tài)的網(wǎng)頁,這是很多其他語言所不能做到的。
基本概念
1.00P中唯一關(guān)系的是對象的接口是什么,就像計算機的銷售商她不管電源內(nèi)部結(jié)構(gòu)
是怎樣的,他只關(guān)系能否給你提供電就行了,也就是只要知道canornot而不是howandwhy.
所有的程序是由定的屬性和行為對象組成的,不同的對象的訪問通過函數(shù)調(diào)用來完成,時
象間所有的交流都是通過方法調(diào)用,通過對封裝對象數(shù)據(jù),很大限度上提高復(fù)用率。
2.00P中最重要的思想是類,類是模板是藍(lán)圖,從類中構(gòu)造個對象,即創(chuàng)建了這個
類的一個實例(instance)。
3.封裝:就是把數(shù)據(jù)和行為結(jié)合起在一個包中)并對對象使用者隱藏數(shù)據(jù)的實現(xiàn)過程,■
個對象中的數(shù)據(jù)叫他的實例字段(instancefield)?
4.通過擴展一個類來獲得一個新類叫繼承(inheHtance),而所有的類都是由Object根超
類擴展而得,根超類下文會做介紹。
5.對象的3個主要特性
behavior說明這個對象能做什么.
state—當(dāng)對象施加方法時對象的反映.
idenMty與其他相似行為對象的區(qū)分標(biāo)志.
每個對象有唯一的indentity而這3者之間相互影響.
6.類之間的關(guān)系:
use-a:依賴關(guān)系
has-a:聚合關(guān)系
is-a:繼承關(guān)系-例:A類繼承了B類,此時A類不僅有了B類的方法,還有其自己的方
法.(個性存在于共性中)
7.構(gòu)造對象使用構(gòu)造器:構(gòu)造器的提出,構(gòu)造器是一種特殊的方法,構(gòu)造對象并對其初
始化。
例:Data類的構(gòu)造器叫Data
newData。一構(gòu)造一個新對象,且初始化當(dāng)前時間.
Datahappyday=newData。一把?個對象賦值給一個變量happyday.從而使該對象能
夠多次使用,此處要聲明的使變量與對象變量二者是不同的.new返回的值是一個引用。
構(gòu)造器特點:構(gòu)造器可以有0個,?個或多個參數(shù)
構(gòu)造器和類有相同的名字
■個類可以有多個構(gòu)造器
構(gòu)造器沒有返回值
構(gòu)造器總是和new運算符一起使用.
8.重載:當(dāng)多個方法具有相同的名字而含有不同的參數(shù)時,便發(fā)生重載.編譯器必須挑選出調(diào)
用哪個方法。
9.包(package)Java允許把一個或多個類收集在一起成為一組,稱作包,以便于組織任
務(wù),標(biāo)準(zhǔn)Java庫分為許多包.java.langjava.utiljava,net等,包是分層次的所有的java包
都在java和javax包層次內(nèi)。
10.繼承思想:允許在已經(jīng)存在的類的基礎(chǔ)上構(gòu)建新的類,當(dāng)你繼承一個已經(jīng)存在的類
時,那么你就復(fù)用了這個類的方法和字段,同時你可以在新類中添加新的方法和字段。
11.擴展類:擴展類充分體現(xiàn)了is-a的繼承關(guān)系.形式為:class(子狗extends(基類)。
12.多態(tài)在java中,對象變量是多態(tài)的.而java中不支持多重繼承。
13.動態(tài)綁定:調(diào)用對象方法的機制。
(1)編譯器檢查對象聲明的類型和方法名。
(2)編譯器檢查方法調(diào)用的參數(shù)類型。
(3)靜態(tài)綁定:若方法類型為priavtestaticfinal編譯器會準(zhǔn)確知道該調(diào)用哪個方法。
(4)當(dāng)程序運行并且使用動態(tài)綁定來調(diào)用個方法時,那么虛擬機必須調(diào)用x所指向的
對象的實際類型相匹配的方法版本。
(5)動態(tài)綁定:是很重要的特性,它能使程序變得可擴展而不需要重編譯已存代碼。
14.final類:為防止他人從你的類上派生新類,此類是不可擴展的。
15.動態(tài)調(diào)用比靜態(tài)調(diào)用花費的時間要長。
16.抽象類:規(guī)定一個或多個抽象方法的類本身必須定義為abstracts
例:publicabstractstringgetDescripition
17.Java中的每一個類都是從Object類擴展而來的。
18.object類中的equal和toString方法。
equal用于測試一個對象是否同另一個對象相等。
toString返回一個代表該對象的字符串,幾乎每一個類都會重載該方法,以便返回當(dāng)前
狀態(tài)的正確表示.
(toString方法是?一個很重要的方法)
19.通用編程:任何類類型的所有值都可以同object類性的變量來代替。
20.數(shù)組列表:ArrayList動態(tài)數(shù)組列表,是一個類庫,定義在javaUtl包中,可自動調(diào)節(jié)
數(shù)組的大小。
21.class類object類中的getclass方法返回ckass類型的一個實例,程序啟動時包含
在main方法的類會被加載,虛擬機要加載他需要的所有類,每一個加載的類都要加載它需
要的類。
22.class類為編寫可動態(tài)操縱java代碼的程序提供了強大的功能反射,這項功能為
JavaBeans特別有用,使用反射Java能支持VB程序員習(xí)慣使用的工具。
能夠分析類能力的程序叫反射器,Java中提供此功能的包叫Java.lang.reflect反射機
制十分強大.
1.在運行時分析類的能力。
2.在運行時探察類的對象。
3.實現(xiàn)通用數(shù)組操縱代碼。
4.提供方法對象。
而此機制主要針對是工具者而不是應(yīng)用及程序。
反射機制中的最重要的部分是允許你檢查類的結(jié)構(gòu).用到的API有:
java.lang.reflect.Field返回字段.
java.reflect.Method返回方法.
java.lang.reflect.Constructor返回參數(shù).
方法指針:java沒有方法指針,把一個方法的地址傳給另一個方法,可以在后面調(diào)用它,
而接口是更好的解決方案。
23.接口(Interface)說明類該做什么而不指定如何去做,一個類可以實現(xiàn)一個或多個
interface。
24.接口不是一個類,而是對符合接口要求的類的一套規(guī)范。
若實現(xiàn)一個接口需要2個步驟:
1.聲明類需要實現(xiàn)的指定接口。
2.提供接口中的所有方法的定義。
聲明一個類實現(xiàn)-一個接口需要使用implements關(guān)鍵字
classactionBimplementsComparable其actionb需要提供Comparelb方法,接口不
是類,不能用new實例化一個接口.
25.一個類只有一個超類,但一個類能實現(xiàn)多個接口。Java中的一個重要接口:
Cloneable
26.接口和回調(diào).編程一個常用的模式是回調(diào)模式,在這種模式中你可以指定當(dāng)一個特定
時間發(fā)生時回調(diào)對象上的方法。
例:ActionListener接口監(jiān)聽.
類似的API有:java.swing.JOptionPane
java.swing.Timer
java.awt.Tookit
27.對象clone:clone方法是object一個保護方法,這意味著你的代碼不能簡單的調(diào)用
它。
28.內(nèi)部類:一個內(nèi)部類的定義是定義在另一個內(nèi)部的類。
原因是:
1.一個內(nèi)部類的對象能夠訪問創(chuàng)建它的對象的實現(xiàn),包括私有數(shù)據(jù)。
2.對于同一個包中的其他類來說,內(nèi)部類能夠隱藏起來。
3.匿名內(nèi)部類可以很方便的定義回調(diào)。
4.使用內(nèi)部類可以非常方便的編寫事件驅(qū)動程序。
29.代理類(proxy):
1.指定接口要求所有代碼
2.object類定義的所有的方法(toStringequals)
30.數(shù)據(jù)類型:Java是強調(diào)類型的語言,每個變量都必須先申明它都類型,java中總共
有8個基本類型.4種是整型,2種是浮點型,一種是字符型,被用于Unicode編碼中的字
符,布爾型。
61條面向?qū)ο笤O(shè)計的經(jīng)驗原則
1)所有數(shù)據(jù)都應(yīng)該隱臧在所在的類的內(nèi)部。p13
(2)類的使用者必須依賴類的共有接口,但類不能依賴它的使用者。p15
(3)盡量減少類的協(xié)議中的消息。p16
(4)實現(xiàn)所有類都理解的最基本公有接口[例如,拷貝操作(深拷貝和淺拷貝)、相等性判
斷、正確輸出內(nèi)容、從ASCII描述解析等等]。p16
(5)不要把實現(xiàn)細(xì)節(jié)(例如放置共用代碼的私有函數(shù))放到類的公有接口中。p17
如果類的兩個方法有一段公共代碼,那么就可以創(chuàng)建一個防止這些公共代碼的私有函
數(shù)。
(6)不要以用戶無法使用或不感興趣的東西擾亂類的公有接口。p17
(7)類之間應(yīng)該零耦合,或者只有導(dǎo)出耦合關(guān)系。也即,一個類要么同另一個類毫無關(guān)
系,要么只使用另一個類的公有接口中的操作。p18
(8)類應(yīng)該只表示一個關(guān)鍵抽象。p19
包中的所有類對于同一類性質(zhì)的變化應(yīng)該是共同封閉的。一個變化若對一個包影響,則
將對包中的所有類產(chǎn)生影響,而對其他的包不造成任何影響.(9)把相關(guān)的數(shù)據(jù)和行為集
中放置。p19
設(shè)計者應(yīng)當(dāng)留意那些通過get之類操作從別的對象中獲取數(shù)據(jù)的對象。這種類型的行為
暗示著這條經(jīng)驗原則被違反了。
(10)把不相關(guān)的信息放在另一個類中(也即:互不溝通的行為)。p19
朝著穩(wěn)定的方向進行依賴.
(11)確保你為之建模的抽象概念是類,而不只是對象扮演的角色。p23
(12)在水平方向上盡可能統(tǒng)一地分布系統(tǒng)功能,也即:按照設(shè)計,頂層類應(yīng)當(dāng)統(tǒng)一地共
享工作。p30
(13)在你的系統(tǒng)中不要創(chuàng)建全能類/對象。對名字包含Driver、Manager,System>Su
system的類要特別多加小心。p30
規(guī)劃一個接口而不是實現(xiàn)一個接口。
(14)對公共接口中定義了大量訪問方法的類多加小心。大量訪問方法意味著相關(guān)數(shù)據(jù)和
行為沒有集中存放。p30
(15)對包含太多互不溝通的行為的類多加小心。p31
這個問題的另一表現(xiàn)是在你的應(yīng)用程序中的類的公有接口中創(chuàng)建了很多的get和set函
數(shù)。
(16)在由同用戶界面交互的面向?qū)ο竽P蜆?gòu)成的應(yīng)用程序中,模型不應(yīng)該依賴于界
面,界面則應(yīng)當(dāng)依賴于模型。p33
(17)盡可能地按照現(xiàn)實世界建模(我們常常為了遵守系統(tǒng)功能分布原則、避免全能類原
則以及集中放置相關(guān)數(shù)據(jù)和行為的原則而違背這條原則)。p36
(18)從你的設(shè)計中去除不需要的類。p38
一般來說,我們會把這個類降級成一個屬性。
(19)去除系統(tǒng)外的類。p39
系統(tǒng)外的類的特點是,抽象地看它們只往系統(tǒng)領(lǐng)域發(fā)送消息但并不接受系統(tǒng)領(lǐng)域內(nèi)其他
類發(fā)出的消息。
(20)不要把操作變成類。質(zhì)疑任何名字是動詞或者派生自動詞的類,特別是只有一個有
意義行為的類。考慮一下那個有意義的行為是否應(yīng)當(dāng)遷移到已經(jīng)存在或者尚未發(fā)現(xiàn)的某個類
中。p40
(21)我們在創(chuàng)建應(yīng)用程序的分析模型忖常常引入代理類。在設(shè)計階段,我們常會發(fā)現(xiàn)很
多代理沒有用的,應(yīng)當(dāng)去除。p43
(22)盡量減少類的協(xié)作者的數(shù)量。p52
一個類用到的其他類的數(shù)目應(yīng)當(dāng)盡量少。
(23)盡量減少類和協(xié)作者之間傳遞的消息的數(shù)量。p55
(24)盡量減少類和協(xié)作者之間的協(xié)作量,也即:減少類和協(xié)作者之間傳遞的不同消息的
數(shù)量。p55
(25)盡量減少類的扇出,也即:減少類定義的消息數(shù)和發(fā)送的消息數(shù)的乘積。p55
(26)如果類包含另一個類的對象,那么包含類應(yīng)當(dāng)給被包含的對象發(fā)送消息。也即:包
含關(guān)系總是意味著使用關(guān)系。P55
(27)類中定義的大多數(shù)方法都應(yīng)當(dāng)在大多數(shù)時間里使用大多數(shù)數(shù)據(jù)成員。p57
(28)類包含的對象數(shù)目不應(yīng)當(dāng)超過開發(fā)者短期記憶的容量。這個數(shù)目常常是6。p57
當(dāng)類包含多于6個數(shù)據(jù)成員時,可以把邏輯相關(guān)的數(shù)據(jù)成員劃分為一組,然后用一個
新的包含類去包含這一組成員。
(29)讓系統(tǒng)功能在窄而深的繼承體系中垂直分布。p58
(30)在實現(xiàn)語義約束時,最好根據(jù)類定義來實現(xiàn)。這常常會導(dǎo)致類泛濫成災(zāi),在這種情
況下,約束應(yīng)當(dāng)在類的行為中實現(xiàn),通常是在構(gòu)造函數(shù)中實現(xiàn),但不是必須如此。p60
(31)在類的構(gòu)造函數(shù)中實現(xiàn)語義約束時,把約束測試放在構(gòu)造函數(shù)領(lǐng)域所允許的盡量深
的包含層次中。p60
(32)約束所依賴的語義信息如果經(jīng)常改變,那么最好放在一個集中式的第3方對象中。
p60
(33)約束所依賴的語義信息如果很少改變,那么最好分布在約束所涉及的各個類中。p
60
(34)類必須知道它包含什么,但是不能知道誰包含它。p61
(35)共享字面范圍(也就是被同一個類所包含)的對象相互之間不應(yīng)當(dāng)有使用關(guān)系。p61
(36)繼承只應(yīng)被用來為特化層次結(jié)構(gòu)建模。p74
(37)派生類必須知道基類,基類不應(yīng)該知道關(guān)于它們的派生類的任何信息。p74
(38)基類中的所有數(shù)據(jù)都應(yīng)當(dāng)是私有的,不要使用保護數(shù)據(jù)。p75
類的設(shè)計者永遠(yuǎn)都不應(yīng)該把類的使用者不需要的東西放在公有接口中。
(39)在理論上,繼承層次體系應(yīng)當(dāng)深一點,越深越好。p77
(40)在實踐中,繼承層次體系的深度不應(yīng)當(dāng)超出一個普通人的短期記憶能力。?個廣為
接受的深度值是6。p77
(41)所有的抽象類都應(yīng)當(dāng)是基類。p81
(42)所有的基類都應(yīng)當(dāng)是抽象類。p82
(43)把數(shù)據(jù)、行為和/或接口的共性盡可能地放到繼承層次體系的高端。p85
(44)如果兩個或更多個類共享公共數(shù)據(jù)(但沒有公共行為),那么應(yīng)當(dāng)把公共數(shù)據(jù)放在一
個類中,每個共享這個數(shù)據(jù)的類都包含這個類。p88
(45)如果兩個或更多個類有共同的數(shù)據(jù)和行為(就是方法),那么這些類的每一個都應(yīng)當(dāng)
從一個表示了這些數(shù)據(jù)和方法的公共基類繼承。p89
(46)如果兩個或更多個類共享公共接口(指的是消息,而不是方法),那么只有他們需要
被多態(tài)地使用時,他們才應(yīng)當(dāng)從一個公共基類繼承。p89
(47)對對象類型的顯示的分情況分析一般是錯誤的。在大多數(shù)這樣的情況下,設(shè)計者應(yīng)
當(dāng)使用多態(tài)。p89
(48)對屬性值的顯示的分情況分析常常是錯誤的。類應(yīng)當(dāng)解耦合成一個繼承層次結(jié)構(gòu),
每個屬性值都被變換成個派生類。p96
(49)不要通過繼承關(guān)系來為類的動態(tài)語義建模。試圖用靜態(tài)語義關(guān)系來為動態(tài)語義建模
會導(dǎo)致在運行時切換類型。p97
(50)不要把類的對象變成派生類。對任何只有一個實例的派生類都要多加小心。p99
(51)如果你覺得需要在運行時刻創(chuàng)建新的類,那么退后步以認(rèn)清你要創(chuàng)建的是對象。
現(xiàn)在,把這些對象概括成一個類。p103
(52)在派生類中用空方法(也就是什么也不做的方法)來覆寫基類中的方法應(yīng)當(dāng)是非法
的。p103
(53)不要把可選包含同對繼承的需要相混淆。把可選包含建模成繼承會帶來泛濫成災(zāi)的
類。p108
(54)在創(chuàng)建繼承層次時,試著創(chuàng)建可復(fù)用的框架,而不是可復(fù)用的組件。p112
(55)如果你在設(shè)計中使用了多重繼承,先假設(shè)你犯了錯誤。如果沒犯錯誤,你需要設(shè)法
證明。p120
(56)只要在面向?qū)ο笤O(shè)計中用到了繼承,問自己兩個問題:(1)派生類是否是它繼承的那
個東西的個特殊類型?(2)基類是不是派生類的一部分?p121
(57)如果你在一個面向?qū)ο笤O(shè)計中發(fā)現(xiàn)了多重繼承關(guān)系,確保沒有哪個基類實際上是另
一個基類的派生類。p122
(58)在面向?qū)ο笤O(shè)計中如果你需要在包含關(guān)系和關(guān)聯(lián)關(guān)系間作出選擇,請選擇包含關(guān)
系。p135
(59)不要把全局?jǐn)?shù)據(jù)或全局函數(shù)用于類的對象的簿記工作。應(yīng)當(dāng)使用類變量或類方法。
p140
(60)面向?qū)ο笤O(shè)計者不應(yīng)當(dāng)讓物理設(shè)計準(zhǔn)則來破壞他們的邏輯設(shè)計。但是,在對邏輯設(shè)
計作出決策的過程中我們經(jīng)常用到物理設(shè)計準(zhǔn)則。p149
(61)不要繞開公共接口去修改對象的狀態(tài)。p164
JSP獲取客戶端的瀏覽器和操作系統(tǒng)信息
stringagent=request,getheader("user-agent");
stringtokenizerst=newstringtokenizer(agent,z,;
st.nexttoken();
〃得到用戶的瀏覽器名
stringuserbrowser=st.nexttoken();
〃得到用戶的操作系統(tǒng)名
stringuseros=st.nexttoken();
取得本機的信息也可以這樣:
操作系統(tǒng)信息
system.getproperty(z,os.name,z);〃win2003竟然是winxp?
system,getproperty(z,os.version");
system,getpropertyC'os.arch");
瀏覽器:
request.getheader(wuser-agent)返回客戶端瀏覽器的版本號、類型
getheader(stringname):獲得http協(xié)議定義的傳送文件頭信息,
request.getmethodO:獲得客戶端向服務(wù)器端傳送數(shù)據(jù)的方法有g(shù)et、post>put等
類型
request,getrequesturi():獲得發(fā)出請求字符串的客戶端地址
request.getservletpathO:獲得客戶端所請求的腳本文件的文件路徑
request,getservername():獲得服務(wù)器的名字
request.getserverport():獲得服務(wù)器的端口號
request.getremoteaddr():獲得客戶端的ip地址
request,getremotehost():獲得客戶端電腦的名字,若失敗,則返回客戶端電腦的ip
地址
request,getprotocol():
request.getheadernames():返回所有requestheader的名字,結(jié)果集是一個
enumeration(枚舉)類的實例
request,getheaders(stringname):返回指定名字的requestheader的所有值,結(jié)
果集是一個enunioration(枚舉)類的實例
JavaServlet和JSP的技術(shù)概述以及比較
JavaServlet及其特點
Servlet是Java技術(shù)對CGI編程的回答。Servlet程序在服務(wù)器端運行,動態(tài)地生成
Web頁面。與傳統(tǒng)的CGI和許多其他類似CGI的技術(shù)相比,JavaServlet具有更高的效率,
更容易使用,功能更強大,具有更好的可移植性,更節(jié)省投資(更重要的是,Servlet程
序員收入要比Perl程序員高:-):
?曷效:
在傳統(tǒng)的CGI中,每個請求都要啟動一個新的進程,如果CGI程序本身的執(zhí)行時間較
短,啟動進程所需要的開銷很可能反而超過實際執(zhí)行時間。而在Servlet中,每個請求由一
個輕量級的Java線程處理(而不是重量級的操作系統(tǒng)進程)。
在傳統(tǒng)CGI中,如果有N個并發(fā)的對同一CGI程序的請求,則該CGI程序的代碼在內(nèi)
存中重復(fù)裝載了N次;而對于Servlet,處理請求的是N個線程,只需要一份Servlet類代
碼。在性能優(yōu)化方面,Servlet也比CGI有著更多的選擇,比如緩沖以前的計算結(jié)果,保持
數(shù)據(jù)庫連接的活動,等等。
方便:
Servlet提供了大量的實用工具例程,例如自動地解析和解碼HTML表單數(shù)據(jù)、讀取和
設(shè)置HTTP頭、處理Cookie、跟蹤會話狀態(tài)等。
功能強大:
在Servlet中,許多使用傳統(tǒng)CGI程序很難完成的任務(wù)都可以輕松地完成。例如,
Servlet能夠直接和Web服務(wù)器交互,而普通的CGI程序不能。Servlet還能夠在各個程序
之間共享數(shù)據(jù),使得數(shù)據(jù)庫連接池之類的功能很容易實現(xiàn)。
可移植性好:
Servlet用Java編寫,ServletAPI具有完善的標(biāo)準(zhǔn)。因此,為「PlanetEnterprise
Server寫的Servlet無需任何實質(zhì)上的改動即可移植到Apache、MicrosoftHS或者
WebStar,幾乎所有的主流服務(wù)器都直接或通過插件支持Servlet。
節(jié)省投資:
不僅有許多廉價甚至免費的Web服務(wù)器可供個人或小規(guī)模網(wǎng)站使用,而且對于現(xiàn)有的
服務(wù)器,如果它不支持Servlet的話,要加上這部分功能也往往是免費的(或只需要極少的
投資)。
JSP及其特點
JavaServerPages(JSP)是?種實現(xiàn)普通靜態(tài)HTML和動態(tài)HTML混合編碼的技術(shù),有
關(guān)JSP基礎(chǔ)概念的說明請參見《JSP技術(shù)簡介》。
許多由CGI程序生成的頁面大部分仍1日是靜態(tài)HTML,動態(tài)內(nèi)容只在頁面中有限的兒個
部分出現(xiàn)。但是包括Servlet在內(nèi)的大多數(shù)CGI技術(shù)及其變種,總是通過程序生成整個頁面。
JSP使得我們可以分別創(chuàng)建這兩個部分。例如,卜面就是一個簡單的JSP頁面:
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0TransitionalZ/EN"
>
<HTML>
VHEAD>VTITLE》歡迎訪問網(wǎng)上商店V/TITLE>V/HEAD>
<B0DY>
VH1>歡迎V/H1>
〈SMALL〉歡迎,
<!一首次訪問的用戶名字為"NewUser"—>
<%out.printin(Utils.getUserNameFromCookie(request));%>
要設(shè)置帳號信息,請點擊
<A
HREF=http://www.bluelOOO.com/article/z/Account-Settings.HTML”
>這里V/A></SMALL>
<P>
頁面的其余內(nèi)容。.
</BODYX/HTML>
下面是JSP和其他類似或相關(guān)技術(shù)的一個簡單比較:
JSP和ActiveServerPages(ASP)相比
Microsoft的ASP是一種和JSP類似的技術(shù)。JSP和ASP相比具有兩方面的優(yōu)點。首先,
動態(tài)部分用Java編寫,而不是VBScript或其他Microsoft語言,不僅功能更強大而且更
易于使用。第二,JSP應(yīng)用可以移植到其他操作系統(tǒng)和非Microsoft的Web服務(wù)器上。
JSP和純Servlet相比
JSP并沒有增加任何本質(zhì)上不能用Servlet實現(xiàn)的功能。但是,在JSP中編寫靜態(tài)HTML
更加方便,不必再用printin語句來輸出每一行HTML代碼。更重要的是,借助內(nèi)容和外觀
的分離,頁面制作中不同性質(zhì)的任務(wù)可以方便地分開:比如,由頁面設(shè)計專家進行HTML設(shè)
計,同時留出供Servlet程序員插入動態(tài)內(nèi)容的空間。
JSP和服務(wù)器端包含(Server-SideInclude,SSI)相比
SSI是一種受到廣泛支持的在靜態(tài)HTML中引入外部代碼的技術(shù)。JSP在這方面的支持
更為完善,因為它可以用Servlet而不是獨立的程序來生成動態(tài)內(nèi)容。另外,SSI實際上只
用于簡單的包含,而不是面向那些能夠處理表單數(shù)據(jù)、訪問數(shù)據(jù)庫的“真正的”程序。
JSP和JavaScript相比
JavaScript能夠在客戶端動態(tài)地生成HTML。雖然JavaScript很有用,但它只能處理
以客戶端環(huán)境為基礎(chǔ)的動態(tài)信息。除了Cookie之外,HTTP狀態(tài)和表單提交數(shù)據(jù)對JavaScript
來說都是不可用的。另外,由于是在客戶端運行,JavaScript不能訪問服務(wù)器端資源,比
如數(shù)據(jù)庫、目錄信息等等。
JSP中request屬性的用法
一、request.getParameter()和request.getAttribute()區(qū)別
(1)request.getParameter()取得是通過容器的實現(xiàn)來取得通過類似post,get等方
式傳入的數(shù)據(jù),request.setAttributeO和getAttribute。只是在web容器內(nèi)部流轉(zhuǎn),僅
僅是請求處理階段。
(2)request.getParameter()方法傳遞的數(shù)據(jù),會從Web客戶端傳到Web服務(wù)器端,
代表HTTP請求數(shù)據(jù)。request.getParameter()方法返回String類型的數(shù)據(jù)。
request.setAttributeO和getAttribute。方法傳遞的數(shù)據(jù)只會存在于Web容器內(nèi)部
還有一點就是,HttpServletRoquest類有setAttributeO方法,而沒有setParameter()
方法。
拿一個例子來說一下吧,假如兩個WEB頁面間為鏈接關(guān)系時,就是說要從1.jsp鏈接
到2.jsp時,被鏈接的是2.jsp可以通過getParameter()方法來獲得請求參數(shù).
假如Ljsp里有
<formname二〃forml〃method二〃post"action=〃2.jsp〃>
請輸入用戶姓名:<inputtype二〃text”
name=z,username/,>
<inputtype="submit“name="Submit"value二〃提交〃〉
</form>
的話在2.jsp中通過request.getParameter("username")方法來獲得請求參數(shù)
username:
<%Stringusername=request.getParameter("username");%>
但是如果兩個WEB間為轉(zhuǎn)發(fā)關(guān)系時,轉(zhuǎn)發(fā)目的WEB可以用getAttributeO方法來和轉(zhuǎn)
發(fā)源WEB共享request范圍內(nèi)的數(shù)據(jù),也還是說一個例子吧。
有1.jsp和2.jsp
Ljsp希望向2.jsp傳遞當(dāng)前的用戶名字,如何傳遞這一數(shù)據(jù)呢?先在I.jsp中調(diào)用如
下setAttribute()方法:
<%
Stringusername=request.getParameter("username");
request.setAttribute("username”,username);
%>
<jsp:forwardpage=〃2.jsp〃/>
在2.jsp中通過getAttributeO方法獲得用戶名字:
<%String
username=(String)request.getAttribute(^username");%>
二、request.getAttribute()與request.setAttributeO
request.getAttribute("nameOfObj")可得到JSP頁面一表單中控件的Valueo其實表
單控件中的Object的name與value是存放在一個哈希表中的,所以在這里給出Object的
name會到哈希表中找出對應(yīng)它的value。
而不同頁面間傳值使用request.setAttribute(position,nameOfObj)時、只會從
a.jsp到b.jsp一次傳遞,之后這個request就會失去它的作用范圍,再傳就要再設(shè)一個
request.setAttributeOo而使用session.setAttribute()會在一個過程中始終保有這個
值。
P.S.:JavaScript與JSP中不能相互傳值,因為JavaScript運行在客戶端,而JSP
運行在服務(wù)器端。若想使它們之間可以相互傳遞參數(shù),可以在JSP中設(shè)置一個hidden控件,
用它的value結(jié)合上面所說的用法來傳遞所需的數(shù)值。
JSP的特點和其它動態(tài)網(wǎng)頁開發(fā)技術(shù)比較
JSP技術(shù)特點:
i.將內(nèi)容的生成和顯示進行分離
使用JSP技術(shù),Web頁面開發(fā)人員可以使用HTML或者XML標(biāo)識來設(shè)計和格式化最終頁
面。使用JSP標(biāo)識或者小腳本來生成頁面上的動態(tài)內(nèi)容。生成內(nèi)容的邏輯被封裝在標(biāo)識和
JavaBeans組件中,并且捆綁在小腳本中,所有的腳本在服務(wù)器端運行。如果核心邏輯被封
裝在標(biāo)識和Beans中,那么其他人,如Web管理人員和頁面設(shè)計者,能夠編輯和使用JSP
頁面,而不影響內(nèi)容的生成。
在服務(wù)器端,JSP引擎解釋JSP標(biāo)識和小腳本,生成所請求的內(nèi)容(例如,通過訪問
JavaBeans組件,使用JDBCTM技術(shù)訪問數(shù)據(jù)庫,或者包含文件),并且將結(jié)果以HTML(或
者XML)頁面的形式發(fā)送回瀏覽器。這有助于作者保護自己的代碼,而又保證任何基于HTML
的Web瀏覽器的完全可用性。
2.強調(diào)可重用的組件
絕大多數(shù)JSP頁面依賴于可重用的,跨平臺的組件(JavaBeans或者Enterprise
JavaBeansTM組件)來執(zhí)行應(yīng)用程序所要求的更為復(fù)雜的處理。開發(fā)人員能夠共享和交換執(zhí)
行普通操作的組件,或者使得這些組件為更多的使用者或者客戶團體所使用?;诮M件的方
法加速了總體開發(fā)過程,并且使得各種組織在他們現(xiàn)有的技能和優(yōu)化結(jié)果的開發(fā)努力中得到
平衡。
3.采用標(biāo)識簡化頁面開發(fā)
Web頁面開發(fā)人員不會都是熟悉腳本語言的編程人員。JavaServerPage技術(shù)封裝了許
多功能,這些功能是在易用的、與JSP相關(guān)的XML標(biāo)識中進行動態(tài)內(nèi)容生成所需要的。
標(biāo)準(zhǔn)的JSP標(biāo)識能夠訪問和實例化JavaBeans組件,設(shè)置或者檢索組件屬性,下載
Applet,以及執(zhí)行用其他方法更難于編碼和耗時的功能。通過開發(fā)定制化標(biāo)識庫,JSP技術(shù)
是可以擴展的。今后,第三方開發(fā)人員和其他人員可以為常用功能創(chuàng)建自己的標(biāo)識庫。這使
得Web頁面開發(fā)人員能夠使用熟悉的工具和如同標(biāo)識一樣的執(zhí)行特定功能的構(gòu)件來工作。
JSP技術(shù)很容易整合到多種應(yīng)用體系結(jié)構(gòu)中,以利用現(xiàn)存的工具和技巧,并且擴展到能
夠支持企業(yè)級的分布式應(yīng)用。作為采用Java技術(shù)家族的一部分,以及Java2(企業(yè)版體系
結(jié)構(gòu))的個組成部分,JSP技術(shù)能夠支持高度復(fù)雜的基于Web的應(yīng)用。
由于JSP頁面的內(nèi)置腳本語言是基于Java編程語言的,而且所有的JSP頁面都被編譯
成為JavaServlet,JSP頁面就具有Java技術(shù)的所有好處,包括健壯的存儲管理和安全性。
作為Java平臺的一部分,JSP擁有Java編程語言“一次編寫,各處運行”的特點。隨
著越來越多的供應(yīng)商將JSP支持添加到他們的產(chǎn)品中,您可以使用自己所選擇的服務(wù)器和工
具,更改工具或服務(wù)器并不影響當(dāng)前的應(yīng)用。
與其它動態(tài)網(wǎng)頁技術(shù)的比較:
與傳統(tǒng)的CG1方式相比
a.后臺實現(xiàn)邏輯是基于JavaComponent的,具有跨平臺的特點
b.將應(yīng)用邏輯與頁面表現(xiàn)分離,使得應(yīng)用邏輯能夠最大程度得到復(fù)用,從而提高開發(fā)
效率
c.運行比CGI方式高,尤其對于數(shù)據(jù)庫訪問時,提供了連接池緩沖機制,使運行所需
資源最小
d.安全,由于后臺是完全基于Java技術(shù)的,安全性由Java的安全機制予以保障
e.由于與ASP很近似,不需要太多的編程知識就可以動手編寫JSP
f.內(nèi)置支持XML,使用XML從而使頁面具有更強的表現(xiàn)力和減少編程工作量
與Asp和php的比較:
目前,最常用的三種動態(tài)網(wǎng)頁語言有ASP(ActiveServerPages),JSP(JavaServer
Pges),PHP(HypertextPreprocessor)?
ASP全名ActiveServerPages,是一個WEB服務(wù)器端的開發(fā)環(huán)境,利用它可以產(chǎn)生
和運行動態(tài)的、交互的、高性能的WEB服務(wù)應(yīng)用程序。ASP采用腳本語言VBScript(Java
script)作為自己的開發(fā)語言。
PHP是?種跨平臺的服務(wù)器端的嵌入式腳本語言.它大量地借用C,Java和Perl語言的
語法,并耦合PHP自己的特性,使WEB開發(fā)者能夠快速地寫出動態(tài)生成頁面.它支持目前絕多
數(shù)數(shù)據(jù)庫。還有一點,PHP是完全免費的,不用花錢,你可以從PHP官方站點
(http://www.php.net)自由下載。而且你可以不受限制地獲得源碼,甚至可以從中加進你自
己需要的特色。
JSP是Sun公司推出的新一代站點開發(fā)語言,他完全解決了目前ASP,PHP的一個通病
一一腳本級執(zhí)行(據(jù)說PHP4也已經(jīng)在Zend的支持下,實現(xiàn)編譯運行).Sun公司借助自己
在Java上的不凡造詣,將Java從Java應(yīng)用程序和JavaApplet之外,又有新的碩果,
就是JspJavaServerPage。Jsp可以在Serverlet和JavaBean的支持下,完成功能
強大的站點程序。
三者都提供在HTML代碼中混合某種程序代碼、由語言引擎解釋執(zhí)行程序代碼的能力。
但JSP代碼被編譯成Servlet并由Java虛擬機解釋執(zhí)行,這種編譯操作僅在對JSP頁面
的第一次請求時發(fā)生。在ASP、PHP、JSP環(huán)境下,HTML代碼主要負(fù)責(zé)描述信息的顯示樣
式,而程序代碼則用來描述處理邏輯。普通的HTML頁面只依賴于Web服務(wù)器,而ASP、
PHP、JSP頁面需要附加的語言引擎分析和執(zhí)行程序代碼。程序代碼的執(zhí)行結(jié)果被重新嵌入
到HTML代碼中,然后一起發(fā)送給瀏覽器。ASP、PHP、JSP三者都是面向Web服務(wù)器的
技術(shù),客戶端瀏覽器不需要任何附加的軟件支持。
JSPvsASP
JSP跨平臺,而且支持Apache,Netscape,IIS,IBMHttpServer在內(nèi)的所有主流Web
Server(市場份額在85%以上),而ASP目前只支持NT+IIS(市場份額在20%左右);提供
了更好的安全機制,這對于e-business這樣的應(yīng)用來說是至關(guān)重要的;JSP可以跨操作系
統(tǒng)、WebServer和應(yīng)用服務(wù)器,而ASP只限于NT+HS;
JSP是一個開放的標(biāo)準(zhǔn),得到了Oracle,Netscape,IBM&WebLogic,Inprise等的支
持;JSP的組件編寫更為容易,而且JSP的性能由于ASP;
JSPvsPHP
JSP是一個業(yè)界標(biāo)準(zhǔn),得到Sun,IBM,Oracle,BEA,Apache等的支持,PHP只是一個開
發(fā)組織并不強的freeware;PHP的性能不好,是解釋型的,JSP采用JIT編譯后,和c不
相上下,而且支持多線程;JSP支持的平臺眾多,從Win98,NT,Unix,Linux,FreeBSD到
AS/400,0S/390,而PHP支持的平臺有限;JSP可以利用JDBC和眾多主流關(guān)系數(shù)據(jù)庫連接,
而PHP目前只支持MySql和Oracle等有限的幾種;JSP中的組件,JavaBean和EJB開發(fā)非
常容易,而且還可以在JSP中使用Java所有的類和功能。而PHP只能用C寫一些功能有限
的組件,而且編寫較為復(fù)雜;利用JSP可以支持EJB,以支持Transaction和CORBA標(biāo)準(zhǔn),
而且還可以支持LDAP,Message等服務(wù),使得訪問ERP,C1CS,MQ等企業(yè)應(yīng)用非常容易。而
PHP在這方面先天不足,所以對于電子商務(wù)這樣的Mission-critical的應(yīng)用來說,PHP并不
適合。
性能比較
有人做過試驗,對這三種語言分別做循環(huán)性能測試及存取Oracle數(shù)據(jù)庫測試。在循環(huán)
性能測試中,JSP只用了令人吃驚的四秒鐘就結(jié)束了20000*20000的循環(huán)。而ASP、PHP測
試的是2000*2000循環(huán)(少一個數(shù)量級),卻分別用了63秒和84秒。
數(shù)據(jù)庫測試中,三者分別對Oracle8進行1000次Insert,Update,Select,和
Delete:Jsp需要13秒,Php需要69秒,ASP則需要73秒。
前景分析
目前在國內(nèi)PHP與ASP應(yīng)用最為廣泛。而JSP由于是一種較新的技術(shù),國內(nèi)采用的較
少。但在國外,JSP已經(jīng)是比較流行的一種技術(shù),尤其是電子商務(wù)類的網(wǎng)站,多采用JSP。
采用PHP的網(wǎng)站如新浪網(wǎng)(sina)、中國人(Chinaren)等,但由于PHP本身存在的一
些缺點,使得它不適合應(yīng)用于大型電子商務(wù)站點,而更適合些小型的商業(yè)站點。
首先,PHP缺乏規(guī)模支持。其次,缺乏多層結(jié)構(gòu)支持。對于大負(fù)荷站點,解決方法只有
?個:分布計算。數(shù)據(jù)庫、應(yīng)用邏輯層、表示邏輯層彼此分開,而且同層也可以根據(jù)流量分
開,組成二維陣列。而PHP則缺乏這種支持。還有上面提到過的一點,PHP提供的數(shù)據(jù)庫接
口支持不統(tǒng)一,這就使得它不適合運用在電子商務(wù)中。
ASP和JSP則沒有以上缺陷,ASP可以通過MicrosoftWindowsd的COM/DCOM獲得
ActiveX規(guī)模支持,通過DCOM和TranscationServer獲得結(jié)構(gòu)支持;JSP可以通過SUNJava
的JavaClass和EJB獲得規(guī)模支持,通過EJB/CORBA以及眾多廠商的ApplicationServer
獲得結(jié)構(gòu)支持。
三者中,JSP應(yīng)該是未來發(fā)展的趨勢。世界匕些大的電子商務(wù)解決方案提供商都采用
JSP/Servleto比較出名的如IBM的E-business,它的核心是采用JSP/Servlet的
WebSphere;西方另外一-個非常著名的電子商務(wù)軟件提供商,Intershop。它原來的產(chǎn)品
Intershopl2,3,4占據(jù)了主要的電子商務(wù)軟件份額。它們都是通過CG1來提供支持的。
但去年10月后它推出了Enfinity,一個采用JSP/Servlet的電子商務(wù)ApplicationServer,
而且聲言不再開發(fā)傳統(tǒng)軟件。
JSP應(yīng)用范圍:
JSP同PHP類似,幾乎可以運行于所有平臺。如WinNT,Linux,Unix.NT下HS通過一
個插件,例如JRUN或者ServletExec,就能支持JSP。著名的Web服務(wù)器Apache已經(jīng)能夠
支持JSP。由于Apache廣泛應(yīng)用在NT、Unix和Linux上,因此JSP有更廣泛的運行平臺。
雖然現(xiàn)在NT操作系統(tǒng)占了很大的市場份額,但是在服務(wù)器方面Unix的優(yōu)勢仍然很大,而新
崛起的Linux更是來勢不小。從一-個平臺移植到另外一個平臺,JSP和JavaBean甚至不用
重新編譯,因為Java字節(jié)碼都是標(biāo)準(zhǔn)的與平臺無關(guān)的。
新手入門:JSP中“預(yù)定義變量”的使用
為了簡化JSP表達式和scriptlets中的代碼,提供了8種自動定義的變量,有時稱做
implicitobjects(固有對象)。它們是:
request,response,out,session,application,config,pageContext,和page。下面我們來
詳細(xì)的了解它們。
request
與request相聯(lián)系的是HttpServletRequest類,使您可以得到request的參數(shù)(通過
getParameter方法),request的類型(GET,POST,HEAD,等等),和引入的HTTP頭
(cookies,Referer,等等)。嚴(yán)格來說,request是類ServletRequest的一個子類而不是
HttpServletRequest類的,事實上,如果request的協(xié)議不是HTTP,那麼它幾乎不會工作。
response
對客戶端的response與HttpServletResponse相連。請注意,因為輸出流是放入緩沖
的,所以可以設(shè)置HTTP狀態(tài)碼和response頭,盡管在標(biāo)準(zhǔn)的servlets中不允許將之發(fā)送
到客戶端。
out
這里使用PrintWriter類來發(fā)送輸出到客戶端。然而,為了使response對象有效,可
使用一個PrintWrite類的使用緩沖的版本JspWriter。使用session的屬性pagedirective,
您可以自己定義緩沖的大小,甚至可以在使用了buffer屬性后關(guān)閉緩沖。也請注意,out
僅用于scriptlets之中,因為JSP表達式自動的放入輸出流,所以極少需要明確的聲明out。
session
應(yīng)用與request相聯(lián)系的IlttpSession類。因為session是自動創(chuàng)建的,即使沒有一
個引入的session,這種變量仍可綁定。有一個例外是,如果您用pagedirective關(guān)閉
session,再試圖使用session時將導(dǎo)致錯誤(在JSP頁面向servlet轉(zhuǎn)換時)。
application
使用ServeletContext類,通過使用getServletConfig().getContext()得到。
config
是一個ServletConfig類的對象。
pageContext
這是JSP中的一個新的類PageContext,用于精練特定服務(wù)器的特點時使用,如提高
JspWriters的執(zhí)行效率。如果您通過這個類訪問而不是直接的,您的代碼將仍然運行在“規(guī)
則”的JSP/servlet引擎。
page
在JAVA中不是很有用,它僅僅是用來保存在腳本的語言不是JAVA時的時間。
JSP基本語法與簡單表單處理
jsp語法:
jsp指令元素
(1)include:導(dǎo)入其它文件夾
(2)page:
language:用什么語言,只能為JAVA
contentType:MIME類型
import:導(dǎo)入java包
(3)taglib:自定義標(biāo)簽庫
jsp常用標(biāo)準(zhǔn)元素
(1)jsp:forward:跳轉(zhuǎn)到其它頁面
(2)jsp:include:插入其它文件eg:
(3)jsp:plugin:插入applet小程序
(4)jsp:param:參數(shù)傳值
jsp內(nèi)置對象
(1)request:常用方法
getParameterO:提取表單元素的值
getRemoteAddr():獲取客戶端IP值
(2)response:
sendRedirect():重定向到其它網(wǎng)頁
setcontentTypeO;設(shè)置MIME值
(3)out:向網(wǎng)頁輸出
(4)application
setAttribute(String,Object)把變量的值保存在application中;
getAttribute(String)獲取保存在applicaion中的值
removeAttribute(String)刪除保存在application中的值
(5)session
setAttribute(String,Object)把變量的值保存在session中;
getAttribute(String)獲取保存在session中的值
removeAttribute(String)刪除保存在
getID:獲取session編號
jsp簡單表單處理
<%@pagecontentType=,,text/html;charset=gb2312z,%>
<%@pagelanguage二〃java〃%>
<html>
<head>〈title>表單處理</titleX/head>
<formname二〃frm〃method二〃GET”
action="ch-show.jsp〃>
<tableboder=0>
<tr>〈td>用戶名:</td><td><inputtype=text
name二〃Tname〃></td></tr>
<trXtd>密碼:</td><td><inputtype=password
name=/,Tpassz,></td></tr>
<trXtd>性別:</td>
<td><inputtype=radioname二〃Tsex〃value=〃男”
checked)男
<inputtype=radioname二〃Tsex〃value二〃女">女</{(1>
</tr>
<tr〉<td>愛好:</td>
<td><inputtype=checkboxname=Tchlvalue二〃體育〃〉
體育
<inputtype=checkboxname=Tch2value二〃美術(shù)〃〉美術(shù)
<inputtype=checkboxname=Tch3value二〃音樂〃〉音樂
</td>
</tr>
<trXtd>專業(yè):</td><td><selectname=Ty>
<optionvalue二〃計算機〃〉計算機</option>
<optionvalue二〃文學(xué)〃〉文學(xué)〈/option》
<optionvalue=〃數(shù)學(xué)〃》數(shù)學(xué)〈/option〉
</select>
<tr><td>^[g*:</td><td><textareaname=Tlrows=5
cols=20></textarea></td></tr>
<tr><td><inputtype=submitvalue=〃用戶信息
〃X/tdX/tr>
</table></form>
<%
StringTname=request.getParameter(z,Tname,z);
StringTpass=request.getParameter(^Tpass^);
StringTsex=request.getParameter(z/Tsex,z);
StringTlovel=request.getParameter(^TchrO;
StringTlove2=request.getParameter(zzTch2/z);
StringTlove3=request.getParameterCzTch3,z);
StringTy=request.getParameter(z,Tyz,);
StringT1=request.getParameter(ZZT1Z,);
bytebl[]=Tsex.getBytes("ISO-8859T〃);
Tsex=newString(bl);
if(Tlovel==null)
(
Tlovel二〃〃;
}
else
byteb2[]=Tlovel.getBytes("IS0-8859T");
Tlovel=newString(b2);
)
if(Ty==null)
{
Ty=;
)
else
{
byteb5[]=Ty.getBytes("ISO8859T");
Ty=newString(b5);
)
if(Tlove2==null)
(
Tlove2="";
}
else
{
byteb3[]=Tlove2.getBytes("IS0-8859T");
Tlove2=newString(b3);
)
if(Tlove3==null)
{
Tlove3=;
)
else
(
byteb4[]=Tlove3.getBytes(,,IS0-8859-l,/);
Tlove3=newString(b4);
}
。ut.print(〃你的信息是:〃+〃<br>〃);
out.print(〃用戶名〃+Tname+〃〈br>〃);
out.print(〃密碼〃+Tname+〃〈br>〃);
out.print(〃性別〃+Tsex+〃〈br>〃);
out.print(〃愛好〃+Tlovel+Tlove2+Tlove3+〃〈br>〃);
out.print(〃專業(yè)〃+Ty+〃〈br>〃);
out.print(〃留言〃+Tl+〃〈br>〃);
</body>
Javascript操作select控件大全
1判斷select選項中是否存在Value—paraValue〃的Item
2向select選項中加入一個Item
3從select選項中刪除一個Item
4刪除select中選中的項
5修改select選項中value二〃paraValue〃的text為"paraText”
6設(shè)置select中text=〃paraText〃的第一個Item為選中
7設(shè)置select中value="paraValue〃的Item為選中
8得到select的當(dāng)前選中項的value
9得到selec
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年孩子上學(xué)的勞動合同模板打印
- 2025年基站場地租賃協(xié)議
- 2024-2025學(xué)年五年級下學(xué)期數(shù)學(xué) 倍數(shù)與因數(shù)《《倍數(shù)與因數(shù)》練習(xí)課 》教案
- Unit 6 Section A 3a-3c(教學(xué)設(shè)計)-2024-2025學(xué)年人教新目標(biāo)Go For It!英語八年級上冊
- 2025年黑龍江冰雪體育職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫及參考答案
- 2025年湖南高爾夫旅游職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫學(xué)生專用
- 2025年甘肅農(nóng)業(yè)職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫參考答案
- 2025年湖南鐵路科技職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性測試題庫完整
- 2025年河南藝術(shù)職業(yè)學(xué)院單招職業(yè)傾向性測試題庫完美版
- 2025年廣東省韶關(guān)市單招職業(yè)適應(yīng)性測試題庫參考答案
- 家校共育之道
- 公司EHS知識競賽題庫附答案
- DeepSeek入門寶典培訓(xùn)課件
- 社區(qū)健康促進工作計劃
- 《作文中間技巧》課件
- 2025年度移動端SEO服務(wù)及用戶體驗優(yōu)化合同
- 中小學(xué)《清明節(jié)活動方案》班會課件
- 廣東省2025年中考物理仿真模擬卷(深圳)附答案
- 【公開課】同一直線上二力的合成+課件+2024-2025學(xué)年+人教版(2024)初中物理八年級下冊+
- 人教鄂教版六年級下冊科學(xué)全冊知識點
- 鄭州市地圖含區(qū)縣可編輯可填充動畫演示矢量分層地圖課件模板
評論
0/150
提交評論