兩周實習(xí)標準課件_第1頁
兩周實習(xí)標準課件_第2頁
兩周實習(xí)標準課件_第3頁
兩周實習(xí)標準課件_第4頁
兩周實習(xí)標準課件_第5頁
已閱讀5頁,還剩134頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

JAVA技術(shù)簡介JAVA起源StanfordUniversityNetworkJAVA名稱的起源官網(wǎng):/

JAVA創(chuàng)始人JamesGosling

現(xiàn)任SUN公司副總裁及Sun研究院院士

,他親手設(shè)計了Java語言,并開發(fā)了Java編譯器和JAVA虛擬機,使Java成為了世界上最流行的開發(fā)語言。

JAVA歷史1995年,Java首次公開亮相。

1996年1月23日SunMicrosystems發(fā)布了JDK1.0。 這個版本包括了兩部分:運行環(huán)境(即JRE)和開發(fā)環(huán)境(即JDK)。

1997年2月18日發(fā)布了JDK1.1。

1998年,JDK1.2版本發(fā)布。將Java分成了J2EE、J2SE和J2ME。表明了Java開始向企業(yè),桌面應(yīng)用,和移動設(shè)備應(yīng)用3大領(lǐng)域挺進。

2000年,JDK1.3發(fā)布。

2002年,JDK1.4發(fā)布。

2004年,JDK1.5發(fā)布。同時JDK1.5改名為J2SE5.0。

2005年6月,JavaSE6。此時,Java的各種版本已經(jīng)更名以取消其中的數(shù)字“2”

2006年11月13日,SUN公司宣布Java全線采納GNUGeneralPublicLicenseVersion2,從而公開了Java的源代碼。

JAVA應(yīng)用概述JAVAME微型版JAVASE標準版JAVAEE企業(yè)版名詞解釋JDK

JavaDevelopmentKit(java開發(fā)工具包) SoftwareDevelopmentKit(1.2版本-1.4版本)JVM

JavaVirtualMachine(java虛擬機)JRE

JavaRuntimeEnvironment(java運行環(huán)境)

JAVA開發(fā)基本術(shù)語JDK 包含Java運行的基本類庫和開發(fā)命令,安裝JDK可以進行完整的Java開發(fā)。JRE

包含Java運行的基本類庫和一些運行命令,安裝JRE可以運行編譯好的Java程序。JVM

Java語言內(nèi)部運行的核心。JavaProgrammerJava程序員JavaDeveloperJava開發(fā)人員JavaWebDeveloperweb開發(fā)人員J2EEArchitectJ2EE架構(gòu)師Java職業(yè)的分工Java語言特點1、簡單性:

Java語言類似于C/C++,可以說Java語言是C++語言的一個純凈的版本,在java語言中沒有頭文件,指針,運算符重載等2、面向?qū)ο? C面向過程

C++面向過程+面向?qū)ο?/p>

Java純面向?qū)ο蟮恼Z言,3、分布式:

Java有一個擴展的例程庫,用于處理Http/Ftp之類的Tcp|Ip協(xié)議。

Java語言能通過url打開的訪問網(wǎng)絡(luò)上的對象,其便利的程序如同本地訪問.Java語言特點4、健壯性:

java投入了大量的精力進行早期的問題檢測,后期的動態(tài)檢測,并消除了有出錯傾向的狀態(tài),java和c++最大的不同在于java采用的指針模型可以消除重寫內(nèi)存和損壞數(shù)據(jù)的可能性.5、安全性:

java適用于網(wǎng)絡(luò)/分布式環(huán)境,為了達到這個目標,在安全方面投了大量的精力,使用java可以構(gòu)建防病毒。禁止運行時堆棧溢出,禁止自己內(nèi)存空間,未授權(quán)的讀寫文件。6、可移植性: 跨平臺:JVM作用用來解釋執(zhí)行字節(jié)碼文件根據(jù)不同的平臺進行不同的解釋執(zhí)行,從而可以達到跨平臺作用,C++生成直接可以運行的機器碼文件。java素有“一次編譯,到處運行”參考書籍Java認證介紹SCJPSuncertifiedjava5programmerScjp主要偏重于對java語言的語法與及JDK的內(nèi)容.SCJDSuncertifiedjava5DeveloperSCJD相對于SCJP進一步測試用JAVA開發(fā)應(yīng)用程序的能力開發(fā)工具開發(fā)環(huán)境JDK編輯器只要是文本編輯器或unix環(huán)境下的viWindows環(huán)境可以使用功能較在的文本編輯器集成開發(fā)環(huán)境EclipseIDENetBeans等Eclipse下載網(wǎng)站

Java的標示符1,什么是標示符?在java語言中用來給一個類、變量或方法命名的符號2,標示符的命名規(guī)則:以字母,“_”或“$”符號開頭可以包含字母、“_”、“$”和數(shù)字符號大小寫敏感不能與保留關(guān)鍵字沖突沒有長度限制例如:identifier_sys_var1$charuserNameuser_nameJava的標示符(續(xù))3,命名約定:類名,接口名:每個單詞的首字母應(yīng)該大寫

classMyFirstClass

interfaceWeapon

字段、方法以及對象:第一個單詞首字母應(yīng)小寫,其他單詞首字母大寫

booleanisWomanvoidsetName(Stringname)

常量:全部用大寫字母表示。

publicfinalintGREENpublicfinalintHEAD_COUNT

Java包(Package):它們?nèi)甲帜感憽?/p>

packagejava.awt.event

Java中的關(guān)鍵字關(guān)鍵字列表:abstractbooleanbreakbytecasecatchcharclasscontinuedefaultdodoubleelseextendsenumfalsefinalfinallyfloatforifimplementsimportinstanceofintinterfacelongnativenewnullpackageprivateprotectedpublicreturnshortstaticsuperswitchsynchronizedthisthrowthrowstransienttruetryvoidvolatilewhile

Java中truefalse不是關(guān)鍵字,而是boolean類型的字面量保留字:const,goto所有的關(guān)鍵字都是小寫,friendly,sizeof不是java的關(guān)鍵字

數(shù)據(jù)類型基本數(shù)據(jù)類型(primitivetype)byteshortintlongfloatdoublecharboolean引用數(shù)據(jù)類型(referencetype)Java的基本數(shù)據(jù)類型boolean布爾值(true或false)byte8-bit整形值short16-bit整形值int32-bit整形值long64-bit整形值char16-bitunicode編碼的字符double64-bit浮點數(shù)值float32-bit浮點數(shù)值布爾類型-boolean一個boolean類型的變量用來表示一個或真或假的關(guān)系一個boolean類型變量的值必須是true或false二者之一

booleanisCorrect=true;文本數(shù)據(jù)類型—char和Stringchar

其實就是一個無符號的16位整形,其范圍為0~65535,用來存儲該字符的Unicode編碼值,因為Unicode編碼中包含漢字的編碼,所以一個char類型的變量也可以存儲一個漢字字符。在代碼中直接給出的一個字符值必須用單引號括起來。 charzhChar=‘中’; charenChar=‘a(chǎn)’; charucChar=‘\u0060’;對某些不方便直接書寫或直接書寫有歧義的字符,java語言規(guī)定用 轉(zhuǎn)義字符給出??梢园裞har類型數(shù)據(jù)當作整數(shù)數(shù)據(jù)來操作。例如:

intthree=3; charone=’1’; intfour=three+one;整形數(shù)據(jù)(byte,short,intandlong)三種形式給一個整形變量直接賦值:

十進制、八進制和十六進制直接給出的值默認是int類型。長整形值應(yīng)該在數(shù)字后面跟上‘l’或‘L’標示publicvoidtestIntType(){intia=0x55;//十六進制

intib=011;//八進制

bytebb=0x771;byteba=(byte)0x771;longla=1234567L;//十進制

}第一章:類和對象面向?qū)ο缶幊痰幕靖拍睿悍庋b、繼承和多態(tài)private和public修飾符對象的創(chuàng)建和初始化方法的調(diào)用方法的重載和覆蓋this和super關(guān)鍵字理解Java語言中的下列概念:

package、import、class、membermethod、field、constructor、override/overload、superclass本章目標面向?qū)ο笾饕槍γ嫦蜻^程。面向過程的基本單元是函數(shù)。什么是對象:EVERYTHINGISOBJECT(萬物皆對象)面向?qū)ο蟮挠^點:一切皆對象所有的事物都有兩個方面:有什么(屬性):用來描述對象。能夠做什么(方法):告訴外界對象有那些功能。面向?qū)ο蟮幕靖拍铑悾–lass)—抽象的數(shù)據(jù)類型,用來描述某一類具有相同特性的對象。類是一種復(fù)雜的數(shù)據(jù)類型,它是將不同類型的數(shù)據(jù)和與這些數(shù)據(jù)相關(guān)的操作封裝在一起的集合體。這有點像C語言中的結(jié)構(gòu),唯一不同的就是結(jié)構(gòu)沒有定義所說的“數(shù)據(jù)相關(guān)的操作”,“數(shù)據(jù)相關(guān)的操作”就是我們平常經(jīng)??吹降摹胺椒ā保虼?,類具有更高的抽象性,類中的數(shù)據(jù)具有隱藏性,類還具有封裝性什么是類1、易維護

采用面向?qū)ο笏枷朐O(shè)計的結(jié)構(gòu),可讀性高,由于繼承的存在,即使改變需求,那么維護也只是在局部模塊,所以維護起來是非常方便和較低成本的。

2、質(zhì)量高

在設(shè)計時,可重用現(xiàn)有的,在以前的項目的領(lǐng)域中已被測試過的類使系統(tǒng)滿足業(yè)務(wù)需求并具有較高的質(zhì)量。

3、效率高

在軟件開發(fā)時,根據(jù)設(shè)計的需要對現(xiàn)實世界的事物進行抽象,產(chǎn)生類。使用這樣的方法解決問題,接近于日常生活和自然的思考方式,勢必提高軟件開發(fā)的效率和質(zhì)量。

4、易擴展

由于繼承、封裝、多態(tài)的特性,自然設(shè)計出高內(nèi)聚、低耦合的系統(tǒng)結(jié)構(gòu),使得系統(tǒng)更靈活、更容易擴展,而且成本較低。面向?qū)ο蟮膬?yōu)點面向過程的思想:算法+數(shù)據(jù)結(jié)構(gòu)面向?qū)ο螅簲?shù)據(jù)結(jié)構(gòu)+算法面向?qū)ο笈c面象過程區(qū)別publicclassAnimal{Stringname;//屬性

intage;//屬性

publicAnimal(Stringname,intage){//構(gòu)造方法

=name;this.age=age;}publicvoideat(){//方法

System.out.println(name+”eating!!”);}}[修飾符]class類名[extends父類名][implements接口1[,接口2…]]{

類的定義主體}定義類為對象分配存儲空間為成員變量賦初始值調(diào)用構(gòu)造方法創(chuàng)建一個對象(實例)

方法名跟類名相同沒有返回值類型publicclassXyz{//membervariablesgotherepublicXyz(){//setuptheobject.}

publicXyz(intx){//setuptheobjectwithaparameter}}

構(gòu)造方法隱藏實現(xiàn)細節(jié)為所有用戶提供統(tǒng)一界面增強可維護性封裝Encapsulation

封裝:

一個對象的不能直接訪問另一個對象內(nèi)部的成員,其它對象的也不能直接訪問本類的私有成員.a.把數(shù)據(jù)和行為結(jié)合在一個包中,并對對象的使用者隱藏數(shù)據(jù)的實現(xiàn)過程。對象中的數(shù)據(jù)稱為對象的實例字段(instancefield),操作數(shù)據(jù)的函數(shù)和過程稱為對象的方法(method)。一個特定對象就是類在實例字段上有著特定值的某個實例。b.實現(xiàn)封裝的關(guān)鍵在于絕不讓方法直接訪問其他類的實例字段。

封裝Encapsulationpackagesample;publicclassDataHiddenTest{publicstaticvoidmain(String[]args){Students=newStudent();="George";//illegals.gender="male";//illegals.age=18;//illegal}}publicclassStudent{privateStringname;privateStringgender;privateintage;publicStudent(){}…}數(shù)據(jù)的隱藏this指向當前類或?qū)ο髉ublicclassStudent{privateStringname;privateStringgender;privateintage;……

publicvoidsetName(Stringname){=name;}publicStringgetName(){returnname;}

publicvoidsetGender(Stringgender){this.gender=gender;}publicStringgetGender(){returngender;}

publicvoidsetAge(intage){this.age=age;}publicintgetAge(){returnage;}……}this關(guān)鍵字基本數(shù)據(jù)類型按值傳遞引用類型按引用傳遞參數(shù)傳遞publicclassMethodInvoke2{publicstaticvoidmain(String[]args){Animala1=newAnimal(“xiaoqiang”,4);addAge(a1);System.out.println(a1.age);}publicstaticvoidaddAge(Animala){a.age++;}}main()addAge()nameage0x1a2d3c4fa10x1a2d3c4f4a1a方法的調(diào)用引用傳遞方法名相同參數(shù)類型一定不同返回值可以相同也可以不同packagesample;import.MalformedURLException;import.URL;publicclassOverloadingTest{publicvoidprint(inti){}publicvoidprint(floatf){}publicStringprint(){return"Hello";}protectedURLprint(Strings)throwsMalformedURLException{returnnewURL(s);}}方法的重載overloadingCalltothis(…)mustbethefirststatementinconstructorpackagesample;publicclassEmployee{privateStringname;privateintsalary;

publicEmployee(Stringn,ints){name=n;salary=s;}

publicEmployee(Stringn){this(n,0);}

publicEmployee(){//inta=0;//Illegalthis("Unknown");}}構(gòu)造方法的重載每個類都有構(gòu)造方法。如果程序員在定義類時沒有定義構(gòu)造方法的話,Java將自動為該類添加一個公開的空參空實現(xiàn)的構(gòu)造方法。如:publicAnimal(){}默認的構(gòu)造方法練習(xí)一:

寫個學(xué)生類有屬性nameageschoolNameclassRoom進行完全封裝!練習(xí)二:

寫個數(shù)學(xué)類MyMath內(nèi)有支持各種數(shù)據(jù)類型的相加相減操作練習(xí)是“isa”的關(guān)系聲明的形式

publicclassManagerextendsEmployee{…}Java是一個單一繼承的語言

一個類只有一個直接父類,如果沒有聲明父類,則默認的父類為java.lang.Object繼承Inheritance構(gòu)造方法不能被繼承方法和屬性可以被繼承子類的構(gòu)造方法隱含的調(diào)用父類的默認構(gòu)造方法如果父類中沒有默認的構(gòu)造方法,則應(yīng)該在子類的構(gòu)造方法的第一行明確的聲明調(diào)用父類中其他的構(gòu)造方法。如下形式:

super(…)繼承Inheritance代表指向父類的引用

super.agesuper.addAge()代表調(diào)用父類的構(gòu)造方法

super();super(“wangcai”,8);super關(guān)鍵字的兩種用法:super關(guān)鍵字當構(gòu)造一個對象的時候,系統(tǒng)先構(gòu)造父類對象,再構(gòu)造子類對象。構(gòu)造一個對象的順序:(注意:構(gòu)造父類對象的時候也是這幾步)

遞歸地構(gòu)造父類對象;順序地調(diào)用本類成員屬性賦初值語句;本類的構(gòu)造方法。繼承條件創(chuàng)建對象packagesample;publicclassInstanceofTest{publicstaticvoidmain(String[]args){Employeeunknown=newManager();Employeegzhu=newEmployee("gzhu");System.out.println("unknownisinstanceofmanager:"+(unknowninstanceofManager));System.out.println("unknownisinstanceofemployee:"+(unknowninstanceofEmployee));System.out.println("gzhuisinstanceofmanager:"+(gzhuinstanceofManager));System.out.println("gzhuisinstanceofemployee:"+(gzhuinstanceofEmployee));}}booleanoperatorTypeidentificationinstanceof運算符使用instanceof運算符確定對象的類型子類對象可以隱含擴展為父類型父類型必須明確聲明轉(zhuǎn)化為子類型不是所有的父類型對象都能轉(zhuǎn)化為子類型類型轉(zhuǎn)換方法名相同,參數(shù)類型相同,返回值也相同訪問權(quán)限不能更封閉拋出異常類型不能更寬泛方法的覆蓋某公司的雇員分為以下若干類:Employee:這是所有員工總的父類,屬性:員工的姓名和生日月份。方法:getSalary(intmonth)根據(jù)參數(shù)月份來確定工資,如果該月員工過生日,則公司會額外獎勵100元。SalariedEmployee:Employee的子類,拿固定工資的員工。屬性:月薪HourlyEmployee:Employee的子類,按小時拿工資的員工,每月工作超出160小時的部分按照1.5倍工資發(fā)放屬性:每小時的工資、每月工作的小時數(shù)SalesEmployee:Employee的子類,銷售人員,工資由月銷售額和提成率決定屬性:月銷售額、提成率BasePlusSalesEmployee:SalesEmployee的子類,有固定底薪的銷售人員,工資由底薪加上銷售提成部分屬性:底薪。練習(xí)多態(tài):多態(tài)指的是編譯時類型變化,而運行時類型不變。多態(tài)分兩種:編譯時多態(tài):編譯時動態(tài)重載.

運行時多態(tài):指一個對象可以具有多個類型。多態(tài)polymiorphism多態(tài)polymiorphism示例面向?qū)ο蟮幕靖拍?封裝,繼承和多態(tài)對象的建立和初始化對象的方法調(diào)用構(gòu)造方法方法的重載和覆蓋this關(guān)鍵字和super關(guān)鍵字總結(jié)

第二章:Java的集合什么是集合在創(chuàng)建Java數(shù)組時,必須明確指定數(shù)組長度,數(shù)組一旦創(chuàng)建,其長度就不能被改變。為了使程序能方便的存儲和操縱數(shù)目不固定的一組數(shù)據(jù),JDK類庫提供了Java集合集合的種類Set(集)List(列表)Map(映射)注:所有Java集合類都位于java.util包中JAVA集合架構(gòu)示例:List示例:Set示例:Map練習(xí)1.編程生成10個1~100之間的隨機數(shù),并統(tǒng)計每個數(shù)出現(xiàn)的概率2.使用HashMap類保存由學(xué)號和學(xué)生姓名所組成的鍵-值對,比如"200709188"和"JohnSmith",然后按學(xué)號的自然順序?qū)⑦@些鍵-值對一一打印出來3.編寫一個程序,使用Map實現(xiàn)對學(xué)生成績單的存儲和查詢,并將成績排序存儲到TreeSet中,求出平均成績、最高分和最低分。4.使用java.text.SimpleDateFormat類將系統(tǒng)日期格式化為“xxxx年X月XX日”的形式輸出。第三章:OracleSQL本章目標掌握創(chuàng)建表的語法Oracle的數(shù)據(jù)類型使用約束數(shù)據(jù)結(jié)構(gòu)一個Oracle數(shù)據(jù)庫包含下列幾種數(shù)據(jù)結(jié)構(gòu):

——Table存儲數(shù)據(jù)

——View從一個表或多個表的數(shù)句中得到的子集

——Sequence生成主鍵值

——Index提高查詢性能建表語法CREATETABLE[schema.]table (columndatatype[DEFAULTexpr] [column_constraint], ... [table_constraint]);Oracle的數(shù)據(jù)類型Char(size)定長字符型,字符長度不夠自動在右邊加空格符號Varchar2(size)可變長字符型,大小必須指定Number(m,n)數(shù)字型,可存放實數(shù)和整數(shù)Date日期類型Blob 2進制大對象其最大大小為4GB

此數(shù)據(jù)類型映射到Byte類型的Array。Clob2進制大對象其最大大小為4GB

此數(shù)據(jù)類型映射到String命名規(guī)范必須以字母開頭1-30個字符長度只允許包含A–Z,a–z,0–9,_,$,and#在一個數(shù)據(jù)庫保證命名的唯一不能使用Oracle內(nèi)部的關(guān)鍵字建表舉例CREATETABLE Mytest(idnumber,

namevarchar2(32));CREATETABLE Mytest(idnumberdeault11,

namevarchar2(32));建表使用約束舉例CREATETABLE Mytest(idnumbercheck(id>10),namevarchar2(32));CREATETABLE Mytest(idnumbercheck(id>10),namevarchar2(32)notnull);CREATETABLE Mytest(idnumberUNIQUE,namevarchar2(32)notnull);建表主鍵約束舉例CREATETABLE Mytest(idnumberprimarykey,namevarchar2(32)notnull);CREATETABLE Mytest(idnumber,namevarchar2(32)notnull,

primarykey(id));CREATETABLE Mytest(mnumber,nnumber,

primarykey(m,n));建表外鍵約束舉例CREATETABLE parent(idnumberprimarykey,namevarchar2(32));CREATETABLE child(idnumberprimarykey,p_idnumberreferencesparent(id));CREATETABLE child(idnumberprimarykey,p_idnumber,

foreignkey(p_id)referencesparent(id));約束命名CREATETABLE child(idnumberconstraintmytest_pkprimarykey,p_idnumber,foreignkey(p_id)referencesparent(id));查看表的約束SELECT*FROMuser_constraints

WHEREtable_name='CHILD'CONSTRAINT_TYPE

C

--check

P

--primarykey

R

--forgienkey

U

--unique級聯(lián)刪除CREATETABLE child(idnumberprimarykey,p_idnumberreferencesparent(id)ondeletecascade);CREATETABLE child(idnumberprimarykey,p_idnumberreferencesparent(id)ondeletesetnull);第四章:JDBCJDBC核心接口與類java.sql包Javax.sql包Java.sql包JDBC核心類庫包含在java.sql包中。以下是java.sql包中重要的接口與類:接口:java.sql.Driver:每個驅(qū)動程序類必須實現(xiàn)的接口。

java.sql.Connection:特定數(shù)據(jù)庫的連接(會話)。在連接上下文中執(zhí)行SQL語句并返回結(jié)果。

java.sql.PreparedStatement:表示預(yù)編譯的SQL語句的對象。

java.sql.Statement:用于執(zhí)行靜態(tài)SQL語句并返回它所生成結(jié)果的對象。

java.sql.ResultSet:表示數(shù)據(jù)庫結(jié)果集的數(shù)據(jù)表,通常通過執(zhí)行查詢數(shù)據(jù)庫的語句生成。

java.sql.CallableStatement:用于執(zhí)行SQL存儲過程的接口。類

java.sql.DriverManager:負責(zé)管理JDBC驅(qū)動程序。使用JDBC驅(qū)動程序之前,必須先將驅(qū)動程序加載并向DriverManager注冊后才可以使用,同時提供方法來建立與數(shù)據(jù)庫的連接。接口關(guān)系圖javax.sql包javax.sql包中重要的接口:

javax.sql.DataSourcejavax.sql.RowSet注意:javax.sql包中的類和接口最開始是作為JDBC2.0可選包引入的

編寫JDBC程序的一般過程JDBC接口詳解:Driver接口Driver接口:說明:每一個數(shù)據(jù)庫驅(qū)動程序如果要實現(xiàn)與JDBCAPI的對接,就需要實現(xiàn)Driver接口,也就是說每個驅(qū)動程序都應(yīng)該提供一個實現(xiàn)Driver接口的類,DriverManager會試著加載盡可能多的它可以找到的驅(qū)動程序,然后,對于任何給定連接請求,它會讓每個驅(qū)動程序依次試著連接到目標URL。在加載某一Driver類時,它應(yīng)該創(chuàng)建自己的實例并向DriverManager注冊該實例。這意味著用戶可以通過調(diào)用以下程序加載和注冊一個驅(qū)動程序。可以通過以下程序來加載和注冊一個驅(qū)動程序:Class.forName(“Driver類名”);以下是加載各種不同數(shù)據(jù)庫驅(qū)動程序的方法://SQLServer數(shù)據(jù)庫

Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);//Mysql數(shù)據(jù)庫

Class.forName(“com.mysql.jdbc.Driver”);//Oracle數(shù)據(jù)庫

Class.forName(“Oracle.jdbc.driver.OracleDriver”);DriverManager類DriverManager類作用:通常用來注冊了數(shù)據(jù)庫驅(qū)動程序后獲得一個數(shù)據(jù)庫連接對象。主要使用它的getConnection()方法。DriverManager會試著從初始化時加載的那些驅(qū)動程序以及使用與當前applet或應(yīng)用程序相同的類加載器顯式加載的那些驅(qū)動程序中查找合適的驅(qū)動程序。getConnection()方法常用的有如下的形式:StaticConnectiongetConnection(Stringurl)throwSQLException;StaticConnectiongetConnection(Stringurl,Stringuser,Stringpassword)throwSQLException;StaticConnectiongetConnection(Stringurl,java.util.Propertiesinfo)throwSQLException;注:參數(shù)user是指連接數(shù)據(jù)庫是使用的用戶名;參數(shù)password是指連接數(shù)據(jù)庫時的用戶user的登錄密碼;參數(shù)url是指連接數(shù)據(jù)庫的URL,參數(shù)info是作為連接參數(shù)的任意字符串標記/值對的列表,通常包括“user”和“password”屬性Connection接口(1)Connection接口作用:一個Connection對象表示與特定的數(shù)據(jù)庫的連接,主要用于執(zhí)行SQL語句并得到執(zhí)行的結(jié)果。默認情況下,Connection對象處于自動提交模式下,也就是說在執(zhí)行每個SQL語句后都會自動提交。注:如果禁用自動提交模式,為了提交更改就必須顯示的調(diào)用commit()方法,否則無法更改保存數(shù)據(jù)庫更改。Connection常用的方法有如下一些://創(chuàng)建一個Statement對象將SQL語句發(fā)送到數(shù)據(jù)庫。沒有參數(shù)的SQL語句通常使用Statement對象執(zhí)行。如果多次執(zhí)行相同的SQL語句,使用PreparedStatement對象可能更有效。StatementcreateStatement()throwsException;createStatement()方法還有帶有參數(shù)的形式:(a)StatementcreateStatement(intresultSetType,intresultSetConcurrency)throwsException;Connection接口(2)(b)StatementcreateStatement(intresultSetType,intresultSetConcurrency,intresultSetHoldability)throwsException;第一種形式用于創(chuàng)建一個Statement對象,該對象將生成具有給定類型和并發(fā)性的ResultSet對象,此方法與不帶參數(shù)的createStatement()方法功能類似,但它允許重寫默認結(jié)果記錄集類型,可以設(shè)置并發(fā)性。第一種形式用于創(chuàng)建一個Statement對象,該對象將生成具有給定類型、并發(fā)性和可保存性ResultSet對象,此方法與不帶參數(shù)的createStatement()方法功能類似,但它允許重寫默認結(jié)果記錄集類型,可以設(shè)置并發(fā)性和可保存性。resultSetType參數(shù)的值可以取一下ReasultSet常量之一:

ResultSet.TYPE_FORWORD_ONLYResultSet.TYPE_SCROLL_INSENSITIVEResultSet.TYPE_SCROLLL_SENSITIVE。resultSetConcurrency參數(shù)的值可以取一下ReasultSet常量之一:

ResultSet.CONCUR_READ_ONLYResultSet.CONCUR_UPDATABLEConnection接口(3)resultSetHoldability參數(shù)可以取以下ResultSet常量之一:

ResultSet.HOLD_CURSORS_OVER_COMMITResultSet.CLOSE_CURSORS_AT_COMMITStatement接口Statement接口作用:用于執(zhí)行靜態(tài)SQL語句并返回它所生成結(jié)果的對象。在默認情況下,同一時刻每個Statement對象只能打開一個ResultSet對象。Statement接口常用的方法有如下一些:

//addBatch()方法用于將給定的SQL命令添加到此Statement對象的當前列表中,此后通過調(diào)用executeBatch()方法可以批量執(zhí)行列表中的命令。

voidaddBatch(Stringsql)throwsException;

//執(zhí)行給定的SQL語句,該語句可能返回多個結(jié)果。

booleanexecue(Stringsql)throwsException;

//執(zhí)行給定的SQL語句,該語句返回單個ResultSet對象,通常是靜態(tài)SQLSelect

ResultSetexecuteQuery(Stringsql)throwsException;

//執(zhí)行給定的SQL語句,該語句可能為insert、update或delete語句,如果是不返回任何內(nèi)容或沒有被影響的行數(shù)則返回0。

intexecuteUpdate(Stringsql)throwsException;PreparedStatement接口PreparedStatement接口作用:表示預(yù)編譯的SQL語句的對象,SQL語句被預(yù)編譯并且存儲在PreparedStatement對象中。然后可以使用此對象高效地多次執(zhí)行該語句。注:用來設(shè)置IN參數(shù)值的setter方法(setShort、setString等等)必須指定與輸入?yún)?shù)的已定義SQL類型兼容的類型。例如,如果IN參數(shù)具有SQL類型int,那么應(yīng)該使用setInt方法。在以下設(shè)置參數(shù)的示例中,con表示一個活動連接:

Stringsql="insertintostudentvalues(?,?,?,?)";pstmt=conn.prepareStatement(sql);pstmt.setString(1,"小王");pstmt.setString(2,"ambow");注:PreparedStatement接口擴展了Statement接口,(extendStatement)常用方法:

//將SQL語句中給定的第parameterIndex個參數(shù)設(shè)為x。Xxxx表示數(shù)據(jù)類型

voidsetXxxx(intparameterIndex,xxxxx)throwsException;注:parameterIndex參數(shù)表示第幾個參數(shù),標號從1開始,也就是第一個參數(shù)的parameterIndex為1,第二個參數(shù)的parameterIndex為2。CallableStatement接口CallableStatement接口作用:用于執(zhí)行SQL存儲過程的接口。JDBCAPI提供了一個存儲過程SQL轉(zhuǎn)義語法,該語法允許對所有RDBMS使用標準方式調(diào)用存儲過程。此轉(zhuǎn)義語法有一個包含結(jié)果參數(shù)的形式和一個不包含結(jié)果參數(shù)的形式。如果使用結(jié)果參數(shù),則必須將其注冊為OUT型參數(shù)。其他參數(shù)可用于輸入、輸出或同時用于二者。參數(shù)是根據(jù)編號按順序引用的,第一個參數(shù)的編號是1。{call過程名[(?,?,...)]}返回結(jié)果參數(shù)的過程的語法{?=call過程名[(?,?,...)]}返回結(jié)果參數(shù)的過程的語法{call過程名}

不帶參數(shù)的已儲存過程的語法要得到儲存過程中的返回結(jié)果集一般使用PreparedStatement類的executeQuery()方法,而不必去注冊參數(shù),executeQuery()方法也是最為常見的得到輸出參數(shù)值的方法。CallableStatement接口聲明方式:

publicinterfaceCallableStatementextendsPreparedStatement;注:可見CallableStatement接口擴展了PreparedStatement接口,而PreparedStatement接擴展了Statement接口。ResultSet接口ResultSet接口作用:表示數(shù)據(jù)庫結(jié)果集的數(shù)據(jù)表,通常通過執(zhí)行查詢數(shù)據(jù)庫的語句生成。ResultSet對象具有指向其當前數(shù)據(jù)行的指針。最初,指針被置于第一行之前。next方法將指針移動到下一行;因為該方法在ResultSet對象中沒有下一行時返回false,所以可以在while循環(huán)中使用它來迭代結(jié)果集。默認的ResultSet對象不可更新,僅有一個向前移動的指針。因此,只能迭代它一次,并且只能按從第一行到最后一行的順序進行??梢陨煽蓾L動和/或可更新的ResultSet對象。以下代碼片段演示了如何生成可滾動且不受其他更新影響的、可更新的結(jié)果集。Statementstmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);ResultSetrs=stmt.executeQuery(“select字段名1,字段名2from表名”);

//rs可滾動且不受其他更新影響的、可更新的結(jié)果集可以用以下兩種方式使用更新方法:(1)更新當前行中的列值。在可滾動的ResultSet對象中,可以向前和向后移動指針,將其置于絕對位置或相對于當前行的位置。以下代碼片段更新ResultSet對象rs的第五行中的NAME列,然后使用方法updateRow更新用于派生rs的數(shù)據(jù)源表。rs.absolute(5);//將指針移動到結(jié)果集rs的第五條記錄rs.updateString(“NAME”,“AINSWORTH”);//將第五條記錄的NAME字段值設(shè)置為“AINSWORTH”rs.updateRow();//更新數(shù)據(jù)庫中的數(shù)據(jù)(2)將列值插入到插入行中。可更新的ResultSet對象具有一個與其關(guān)聯(lián)的特殊行,該行用作構(gòu)建要插入的行的暫存區(qū)域(stagingarea)。以下代碼片段將指針移動到插入行,構(gòu)建一個三列的行,并使用方法insertRow將其插入到rs和數(shù)據(jù)源表中。rs.moveToInsertRow();//移動當前的記錄指針標到insertrowrs.updateString(1,“AINSWORTH”);//將insertrow中第一列的值更新為“AINSWORTH”rs.updateInt(2,35);//將insertrow中第二列的值更新為“35”rs.updateBoolean(3,true);//將insertrow中第三列的值更新為“true”rs.insertRow();//更新數(shù)rs.moveToCurrentRow();

注:當生成ResultSet對象的Statement對象關(guān)閉、重新執(zhí)行或用來從多個結(jié)果的序列檢索下一個結(jié)果時,ResultSet對象會自動關(guān)閉。JDBC編程步驟1.LoadtheDriver

Class.forName()|Class.forName().newInstance()|newDriverName()

實例化自動向DriverManager注冊,不需要顯示的調(diào)用DriverManager.registerDriver方法2.ConnecttotheDatabase

DriverManager.getConnection(url,username、password)3.ExecutetheSQL

Connection.createStatement()Statement.executeQuery()Statement.executeUpdate()4.Retrievetheresultdate

循環(huán)取得結(jié)果while(rs.next())5.Showtheresultdata

將數(shù)據(jù)庫的各種類型轉(zhuǎn)換成為Java中的類型(getxxx)方法6.Close

Closetheresultset|closetheStatement|closetheConnection第五章:JSPJSP

程序結(jié)構(gòu)JSP語法概述JSP主要構(gòu)成

JSP元素

TemplateData(模版數(shù)據(jù))

JSP元素

指將由JSP引擎直接處理的部分,這一部分必須符合JSP語法,否則會導(dǎo)致編譯錯誤

TemplateDate

指的是JSP引擎不處理的部分,即標記<%……%>以外的部分,例如代碼中的HTML的內(nèi)容等,這些數(shù)據(jù)會直接傳送到客戶端的瀏覽器JSP例子(eg1.jsp)<html>

<head>

<title>Hi-JSP實驗</title>

</head>

<body>

<%

StringMsg="ThisisJSPtest.";

out.print("HelloWorld!");

%>

<h2><%=Msg%></h2>

</body></html>TemplatedataJSP元素JSP語法主要組成ScriptingElements(腳本元素)

由Java程序代碼構(gòu)成的JSP程序區(qū)塊,也就是JSP網(wǎng)頁中<%…%>符號之間的程序代碼

DirectiveElements(指令元素)

對網(wǎng)頁相關(guān)信息、屬性的存取與設(shè)定

ActionElements(動作元素)

以標簽型式存在的JSP網(wǎng)頁元素,主要用來進行與網(wǎng)頁加載、轉(zhuǎn)向甚至引用外部組件等相關(guān)操作

JSTL(JSP標準標簽庫)JSP預(yù)先定義的標簽函數(shù)庫,包含各種網(wǎng)頁運作所需的功能,例如循環(huán)、流程控制、輸入/出、文字格式化、XML文件處理和數(shù)據(jù)庫存取操作

ELElements(表達式語言)

JSP2.0的新規(guī)格,用來簡化上述ScriptingElements的網(wǎng)頁編寫模式JSP基本語法表達式<%=expression%>腳本段<%code%>HTML注釋<!--comment-->隱藏注釋<%--comment--%>聲明<%!declaration %>JSP表達式JSP表達式作用

在JSP頁面上計算或者輸出結(jié)果JSP表達式語法

<%=expression%>JSP表達式注意事項

<%=%>中的表達式必須是一個有明確結(jié)果的表達式表達式基本語法:<%=……%>“表達式”:<%=expression%>=后面必須是字符串變量或者可以被轉(zhuǎn)換成字符串的表達式不需要以;結(jié)束只有一行例:<%=“helloworld”%><%=i+1%><%=request.getParameter(“name”)%>JSP表達式(eg10.jsp)<%@pagelanguage="java"

import="java.util.*"%><html> <head><title>test</title></head> <body> <center> <%!Datedate=newDate();%> <%!inta,b,c;%> <%a=12;b=a;c=a+b;%> <fontcolor="blue"><%=date.toString()%></font><br> <b>a=<%=a%></b><br> <b>b=<%=b%></b><br> <b>c=<%=c%></b><br> </center> </body></html>eg10.jsp執(zhí)行結(jié)果JSP--Scriptlet基本語法:<%程序代碼區(qū)%>“腳本段”:<%code%>

可以放入任何的Java程序代碼例:<%for(inti=0;i<10,i++){ ……}%>JSP腳本程序JSP腳本作用

在JSP頁面中用Java語言編寫邏輯代碼JSP腳本語法

<%JavaCode%>JSP腳本注意事項

<%%>中的Java代碼段,可以使用Java中任意的類或者對象,在使用時要注意異常處理JSP腳本程序(eg11.jsp)<%@pagelanguage="java"import="java.util.*"%><%!intcondition;%><html><head><title>test</title></head><body><%condition=1;switch(condition){case0:out.println("Youmustselectcondition0!"+"<br>");break;case1:out.println("Youmustselectcondition1!"+"<br>");break;case2:out.println("Youmustselectcondition2!"+"<br>");break;default:out.println("Yourselectnotin\"0,1,2\",selectagain!!"+"<br>");}%></body></html>腳本執(zhí)行結(jié)果JSP注釋JSP注釋的作用

為在JSP頁面中的代碼添加注釋,方便程序的編寫和閱讀

JSP注釋的語法

<!--comment[<%=expression%>]-->//頁面端注釋

<%--comment--%>//服務(wù)器端注釋

JSP注釋注意事項

<!---->注釋的代碼,運行后在客戶端“查看源文件”時可以看到,用于注釋普通代碼

<%----%>注釋的代碼,運行后在客戶端“查看源文件”時不能看到,一般用于注釋關(guān)鍵代碼注釋格式:<%--……--%><%//……%><%/*……*/%>HTML注釋(eg7.jsp)<html><head><title>要多加練習(xí)</title></head><body><!—-Thispagewasloadedon<%=(newjava.util.Date()).toLocaleString()%>-->在源文件中包括當前時間。

</body></html>HTML注釋IE中的源程序有注釋隱藏注釋(eg8.jsp)<html><head><title>ACommentTest</title></head><body><h2>ATestofComments</h2><%--Thiscommentwillnotbevisibleinthepagesource--%></body></html>隱藏注釋在IE中查看源代碼JSP--Declaration基本語法:<%!%>“聲明”:<%!declaration;[declaration;]+...%>說明:在此聲明的變量、方法都會被保留成唯一的一份,直到JSP程序停止執(zhí)行例:<%!3inti;publicvoidsetName(){……}%>JSP聲明JSP中聲明的作用

為在JSP頁面中的Java代碼塊,定義公用的變量或方法JSP中定義變量或方法的語法

<%!declaration;[declaration;]...%>JSP中定義變量或方法注意事項

<%!----%>定義的變量在整個頁面中都有效,等價于Java類的成員變量

<%!----%>定義的方法,在頁面中可以被調(diào)用,等價于Java類中定義的方法聲明(eg9.jsp)<%@pagelanguage="java"import="java.util.*"%><html><head><title>eg9</title></head><body><%!inti=0;%><%!inta,b,c;%><%!Datedate;%></body></html>練習(xí)安裝,配置Tomcat服務(wù)器使用Eclipse,編寫課堂演示代碼,熟悉JSP語法總結(jié)

JSP概述

JSP運行環(huán)境

JSP語法

JSP表達式<%=….%>

JSP代碼段<%…..%>

JSP注釋<%----%><!---->

JSP聲明<%!%>第六章:ServletB/S編程模型B/S編程模型Browser(客戶端)代理客戶端發(fā)送http請求接收服務(wù)器端響應(yīng)顯示html文本客戶端-服務(wù)器端通信協(xié)議:http服務(wù)器(Server)端處理客戶端的請求發(fā)回http響應(yīng)客戶機Web服務(wù)器httpHTTP協(xié)議簡介HTTP:HyperTextTransferProtocol,超文本傳輸協(xié)議,在RFC2616中定義是Web應(yīng)用程序的基礎(chǔ),是應(yīng)用層協(xié)議,基于tcp/IP版本:HTTP1.1(RFC2616)Http的缺省端口是80Http特點是:無狀態(tài)、無連接HTTP協(xié)議HTTP通信的四個階段1.連接到服務(wù)器3.發(fā)送響應(yīng)4.關(guān)閉連接Web服務(wù)器客戶機2.發(fā)送請求HTTP–

舉例URL(UniformResourceLocator,統(tǒng)一資源定位符):協(xié)議名+DNS名+請求的文件名http:///home/index.html瀏覽器向DNS服務(wù)器詢問

的IP地址DNS的回復(fù)是63瀏覽器與63上的80端口建立一個TCP連接瀏覽器發(fā)送一個請求,要求獲取文件/home/index.html服務(wù)器發(fā)送文件/home/index.html(服務(wù)器的響應(yīng))TCP連接被釋放瀏覽器顯示/home/index.html中所有的文本瀏覽器取回并顯示該文件中的所有圖片Http請求瀏覽器代理用戶發(fā)出Http請求地址欄://search?complete=1&hl=zh-CN&q=google&meta=表單提交Http請求<fontsize="5"color="990000">請登錄</font><hr><formname=“frmManage”method="get"

action="loginValidator.jsp"><fontsize="3"color="990000"><label>用戶名</label>

<inputtype="text"name="UserName"

><br>

<label>密

碼</label>

<inputtype="password"name="Password"><br>

<inputtype="submit"

value="登錄"/>

<font></form>在js中:frmManage.submit();相當于:http://localhost:8080/myapp/loginValidator.jsp?UserName=tom&Password=1123456Http請求請求數(shù)據(jù)請求頭等:瀏覽器及客戶端相關(guān)信息,如:http協(xié)議版本(1.1)瀏覽器?支持哪些類型文檔類型?支持哪些字符集?客戶機地址是多少?用戶數(shù)據(jù)請求文件(資源)請求參數(shù)形式:名字=值兩種方法(method):

GetPostHttp請求Get方法與Post方法發(fā)送請求示例Get方法示例:GET/myapp/loginValidator.jsp?

UserName=tom&Password=123456HTTP/1.1Host:[其它請求頭]BODYEMPTYPost方法示例:POST/ibm-demo/loginValidator.jspHTTP/1.1Host[其它請求頭]BODYUserName=tom&Password=123456Http請求Get與Post方法的區(qū)別Get方法:用戶數(shù)據(jù)作為URL中

溫馨提示

  • 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論