計(jì)算機(jī)與IT入門第三講JAVA基礎(chǔ).ppt_第1頁(yè)
計(jì)算機(jī)與IT入門第三講JAVA基礎(chǔ).ppt_第2頁(yè)
計(jì)算機(jī)與IT入門第三講JAVA基礎(chǔ).ppt_第3頁(yè)
計(jì)算機(jī)與IT入門第三講JAVA基礎(chǔ).ppt_第4頁(yè)
計(jì)算機(jī)與IT入門第三講JAVA基礎(chǔ).ppt_第5頁(yè)
已閱讀5頁(yè),還剩169頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、SSD1: Introduction to Information Systems,計(jì)算機(jī)與IT入門第三講: JAVA基礎(chǔ),任課教師:林闖 講師 Email:linchuang_ 大連理工大學(xué)軟件學(xué)院網(wǎng)絡(luò)工程系,提 綱,程序設(shè)計(jì)語(yǔ)言概述 JAVA簡(jiǎn)介 Programming with Java,軟件的基本組成部分是完成其功能的程序。 程序是指按照時(shí)間順序依次安排的工作步驟。而程序設(shè)計(jì)則是對(duì)這些步驟的編排和優(yōu)化。 程序設(shè)計(jì)有著比計(jì)算機(jī)更長(zhǎng)的歷史,只不過(guò)計(jì)算機(jī)的出現(xiàn)使得程序設(shè)計(jì)有了更專用的領(lǐng)域計(jì)算機(jī)程序設(shè)計(jì),并得到空前的發(fā)展。 計(jì)算機(jī)程序設(shè)計(jì)又稱為編程(programming),是一門設(shè)計(jì)和編寫計(jì)

2、算機(jī)程序的科學(xué)和藝術(shù),程序設(shè)計(jì)語(yǔ)言,程序設(shè)計(jì)語(yǔ)言(也被稱為“編程語(yǔ)言”,Programming Language)是人們編制程序所使用的語(yǔ)言。 程序描述了計(jì)算機(jī)處理數(shù)據(jù)、解決問(wèn)題的過(guò)程,這是程序的實(shí)質(zhì)。 但程序的描述形式卻可以是多種多樣的,可以用不同的方式表述不同的程序設(shè)計(jì)語(yǔ)言,程序設(shè)計(jì)語(yǔ)言,程序與計(jì)算機(jī),現(xiàn)代計(jì)算機(jī)都是基于馮諾伊曼模型結(jié)構(gòu)的,此模型著眼于計(jì)算機(jī)的內(nèi)部結(jié)構(gòu),定義了處理機(jī)的運(yùn)行過(guò)程。該模型把計(jì)算機(jī)分為四個(gè)子系統(tǒng): 存儲(chǔ)器 算術(shù)/邏輯單元 控制單元 輸入/輸出單元 馮諾伊曼模型中,程序是由一組數(shù)量有限的指令組成,程序存儲(chǔ)在內(nèi)存中,程序依據(jù)算法完成運(yùn)算任務(wù),程序設(shè)計(jì)語(yǔ)言,程序設(shè)計(jì)語(yǔ)言

3、的種類: 機(jī)器語(yǔ)言:機(jī)器指令,直接執(zhí)行 匯編語(yǔ)言:符號(hào)化,匯編器(Assembler) 高級(jí)程序設(shè)計(jì)語(yǔ)言(編譯型) 高級(jí)程序設(shè)計(jì)語(yǔ)言(解釋型,程序中基本的動(dòng)作單位被稱為“語(yǔ)句”,不同的語(yǔ)句實(shí)現(xiàn)不同的功能。 用高級(jí)語(yǔ)言書寫的程序不可能直接地在計(jì)算機(jī)上執(zhí)行,程序設(shè)計(jì)語(yǔ)言 高級(jí)程序設(shè)計(jì)語(yǔ)言,要在計(jì)算機(jī)上執(zhí)行高級(jí)語(yǔ)言書寫的程序,有兩種基本方法: 編譯(Compilation)執(zhí)行:這種方法是設(shè)法預(yù)先把高級(jí)語(yǔ)言程序(也稱為“源程序”)轉(zhuǎn)換成為機(jī)器語(yǔ)言的可以由計(jì)算機(jī)直接執(zhí)行的程序,即轉(zhuǎn)變?yōu)椤翱蓤?zhí)行(Executable)程序” 。如:C+。 “解釋”(Interpretation)執(zhí)行:這種方法是即時(shí)的把

4、源程序轉(zhuǎn)換為機(jī)器可執(zhí)行的指令。有時(shí)為了提高效率,也可以先編譯成一種中間代碼。如:Java,程序設(shè)計(jì)語(yǔ)言 高級(jí)程序設(shè)計(jì)語(yǔ)言,對(duì)于“編譯執(zhí)行”方式,人們實(shí)現(xiàn)了高級(jí)語(yǔ)言“編譯器”(Compiler)完成這種轉(zhuǎn)換工作。編譯器把高級(jí)語(yǔ)言程序看成是符合一定語(yǔ)法結(jié)構(gòu)的符號(hào)串,對(duì)它進(jìn)行加工變換。 編譯器對(duì)源程序的加工一般分為兩個(gè)階段: 首先,源程序被翻譯成機(jī)器語(yǔ)言,這種翻譯結(jié)果稱為“目標(biāo)碼”(object code),目標(biāo)碼構(gòu)成的程序片段稱為目標(biāo)模塊。 第二步,這些目標(biāo)模塊被與其他一些基本模塊(由編譯軟件提供)連接在一起,最終形成“可執(zhí)行程序”(executable program),這樣的程序就可以在計(jì)算機(jī)

5、上實(shí)際運(yùn)行了。 第一個(gè)加工步驟稱為“編譯”(compiling),第二個(gè)步驟稱為“連接”(linking,程序設(shè)計(jì)語(yǔ)言 高級(jí)程序設(shè)計(jì)語(yǔ)言,編 譯 過(guò) 程,程序設(shè)計(jì)語(yǔ)言 高級(jí)程序設(shè)計(jì)語(yǔ)言,對(duì)于“解釋執(zhí)行” 方式,人們實(shí)現(xiàn)了一種稱為“解釋器”(Interpreter)的軟件來(lái)完成轉(zhuǎn)換工作。解釋器在工作方式上與編譯器不同,它不對(duì)源程序進(jìn)行翻譯,而是直接對(duì)源程序的語(yǔ)句進(jìn)行分析和解釋,實(shí)現(xiàn)源程序所描述的功能,解 釋 過(guò) 程,程序設(shè)計(jì)語(yǔ)言 高級(jí)程序設(shè)計(jì)語(yǔ)言,高級(jí)語(yǔ)言寫出的程序是獨(dú)立于任何具體的計(jì)算機(jī)的。但是“編譯器”和“解釋器”則是與機(jī)器相關(guān)的。同一種語(yǔ)言,對(duì)于不同的機(jī)器,需要不同的“編譯器”和“解釋器”

6、。 人們已經(jīng)開發(fā)出了許多不同的高級(jí)程序設(shè)計(jì)語(yǔ)言,不同的語(yǔ)言有各自不同的規(guī)范,因此需要專門的“編譯器”和“解釋器,程序設(shè)計(jì)語(yǔ)言 高級(jí)程序設(shè)計(jì)語(yǔ)言,FORTRAN(FORmular TRANslation)語(yǔ)言,HPF:IBM,1950 Pascal語(yǔ)言:N.Wirth,1968,(Delphi,Borland) COBOL(COmmon Business Oriented Language)語(yǔ)言: 美國(guó)國(guó)防部,1960 C和C+語(yǔ)言:Dennis Retchie, 1972; Bjarne Stroustrup,1983, Bell Basic(Beginners All-purpose Sym

7、bolic Instruction Code)語(yǔ)言:美國(guó)國(guó)防部,1964 Ada語(yǔ)言:軍用程序設(shè)計(jì)語(yǔ)言, 美國(guó)國(guó)防部, 1983 Java語(yǔ)言: 1991年,SUN MicroSystem公司,程序設(shè)計(jì)語(yǔ)言 高級(jí)程序設(shè)計(jì)語(yǔ)言,JAVA簡(jiǎn)介 -Java歷史及發(fā)展,Java是一種解釋型的、面向?qū)ο蟮木幊陶Z(yǔ)言。 歷史:1991年,SUN MicroSystem公司的Jame Gosling、Bill Joe等人為在電視、控制烤箱等家用消費(fèi)類電子產(chǎn)品上進(jìn)行交互式操作而開發(fā)了一個(gè)名為Oak的軟件。 Oak Java:互聯(lián)網(wǎng)給Java帶來(lái)新的生機(jī) 1995年Sun向公眾推出Java并引起業(yè)界的轟動(dòng) 發(fā)展:

8、面向網(wǎng)絡(luò)應(yīng)用,類庫(kù)不斷豐富,性能不斷提高,應(yīng)用領(lǐng)域不斷拓展。(1995年以來(lái)) 應(yīng)用:Java是當(dāng)今最流行的軟件開發(fā)語(yǔ)言之一,Sun推出了 Java2 ,JAVA的IDE(集成開發(fā)環(huán)境) 主要有:Netbeans(支持底層編程,有的版本需要附加JDK),Eclipse(開源),Myeclipse(需要key,對(duì)網(wǎng)絡(luò)等應(yīng)用有較好的支持,2.1 Programming with Java,Programming with Objects Java Program Development First Look at Java Element of a Java Servlet Planning Se

9、rvlet Development Guidelines for Java Development,2.1.1 Programming with Objects,Programming with Java Fundamentals of Object-Oriented Programming Fundamentals of Java,參考教材內(nèi)容,Introduction to Programming Using Java: An Object-Oriented Approach 2nd Edition,Programs,Programs are texts that can make a c

10、omputer do a task. Programs are written in a specialized language, called a programming language. The content of a program is called code. When a computer carries out or runs a program we say that it executes the code. Java is one of the hundreds of programming languages. Its a object-oriented langu

11、age,Programs Example,public class Program public static void main(String arg) System.out.println(“Welcome to Java!”);,Programs and Models(程序與模型,A model is a simplified representation. It includes features that are considered important to its user while neglecting others. 將實(shí)際的問(wèn)題進(jìn)行抽象,得到一個(gè)模型,模型包含了事物基本的

12、重要特性。 Every model shares following characteristics Elements of the model represent other, more complex things. These model elements exhibit consistent behavior. The model elements can be grouped into different categories based on their common behaviors. Action external to a model element cause the b

13、ehavior of the model element,Example 1,假設(shè)有一個(gè)軟件公司。該公司有一個(gè)總裁(president)和多個(gè)副總(vice president)。每個(gè)副總管理一些項(xiàng)目經(jīng)理(project manager)。每個(gè)項(xiàng)目經(jīng)理手下有很多程序員(Programmer)。 How to model it ,面向?qū)ο笾械幕靖拍?對(duì)象(Object) Java程序中模擬的元素稱為對(duì)象 如為示例建立Java對(duì)象:一個(gè)President object、多個(gè)VicePresident object、多個(gè)Programmer object。 行為(Behavior) 多個(gè)對(duì)象可能具

14、有相同的行為。 如不同的程序員在不同的項(xiàng)目里面做不同的事情,但是他們具有一些相同的行為(common behavior):編寫代碼、向合作的同事索要項(xiàng)目需要的數(shù)據(jù)、生成項(xiàng)目報(bào)告等,面向?qū)ο笾械幕靖拍?消息(Message) Each message sent must specify which object is to receive it, what task that object should perform in response, and further details that must be supplied to describe the task adequately.

15、消息在不同的對(duì)象之間建立連接,使得多個(gè)對(duì)象彼此之間可以互動(dòng),即對(duì)象通過(guò)彼此間互通消息來(lái)形成互動(dòng)。 如副總向項(xiàng)目經(jīng)理分配任務(wù),項(xiàng)目經(jīng)理將任務(wù)安排給手下的多個(gè)程序員。程序員需要定期的將項(xiàng)目進(jìn)度報(bào)告提交給項(xiàng)目經(jīng)理,面向?qū)ο笾械幕靖拍?Java程序(Java Program) A collection of objects that correspond to the important problem elements of the problem being solved or the computation being performed. 程序是為了完成一個(gè)任務(wù)(解決問(wèn)題)的多個(gè)對(duì)象的一個(gè)集

16、合。對(duì)象之間使用消息(message)進(jìn)行聯(lián)系(進(jìn)行消息的傳遞,面向?qū)ο笾械幕靖拍?類(Class) A category of model elements is called a class in Java.( Java中某一類別模型元素稱為類class) The fundamental job of a Java programmer is providing class definitions, or descriptions of how objects in each class must behavior.(Java程序員的基本工作就是定義類,或描述每個(gè)類的對(duì)象的行為) 當(dāng)程序

17、中類已經(jīng)被定義了,程序運(yùn)行時(shí)可以產(chǎn)生類(class)的多個(gè)對(duì)象(object)。每個(gè)對(duì)象稱為是該類的一個(gè)實(shí)例(instance)。 如在example 1中,可以定義老總類,副總類,項(xiàng)目經(jīng)理類,程序員類。項(xiàng)目經(jīng)理類可以產(chǎn)生多個(gè)項(xiàng)目經(jīng)理對(duì)象、程序員類產(chǎn)生多個(gè)程序員對(duì)象,面向?qū)ο笾械幕靖拍?預(yù)先定義的類(Predefined Objects and Classes) 不同程序在執(zhí)行時(shí)有許多相同的行為,如:在屏幕上打印字符。這些功能可以由預(yù)先定義好的類實(shí)現(xiàn)。 Java中提供了許多這樣的類,程序員在編寫新的程序時(shí)可以利用這樣的類和對(duì)象,Object-Oriented Programs,Java pr

18、ogram typically consists of a group of objects that communicate by sending messages. Java程序由一組對(duì)象組成,對(duì)象間通過(guò)消息來(lái)通信。 When the program runs on a computer, it creates objects from class definitions provided by the Java programmer. Java程序在計(jì)算機(jī)中運(yùn)行時(shí),它將根據(jù)程序員定義的類來(lái)創(chuàng)建對(duì)象,Object-Oriented Programs,A class definition f

19、or a class is a template for creating objects of that class. 一個(gè)類的定義情況將被作為創(chuàng)建該類的對(duì)象實(shí)例的模板(template) It describes how objects of that class must behave in terms of the types of messages they can receive and how they respond to those messages. 類的定義描述了類的對(duì)象將會(huì)如何對(duì)其收到的消息產(chǎn)生相應(yīng)的行為和反應(yīng),Example1,VicePresident,name -

20、department,provideFinacialData(,ProjectManager,name -team,writeProjectProposal(,Classes to model Vice President and Project Manager,小 結(jié),程序設(shè)計(jì)語(yǔ)言的基本概念 Java發(fā)展歷史 Java的特點(diǎn) Java程序和面向?qū)ο蟮幕靖拍?1個(gè)示例,2.1 Programming with Java,Programming with Objects Java Program Development First Look at Java Element of a Java

21、Servlet Planning Servlet Development Guidelines for Java Development,2.1.2 Java Program Development,Writing Java Source Code Compiling Java Source Code Creating an HTML Form Running a Java Program,Java程序的生成與執(zhí)行,Editor (編輯器,如記事本,Java compiler (編譯器,Java程序(.java文件,Java字節(jié)碼(.class文件,Java字節(jié)碼 (.class文件,Java

22、 解釋器,計(jì)算機(jī)硬件,Java程序的編譯與執(zhí)行,安裝Java平臺(tái)和設(shè)置環(huán)境變量 安裝JDK 環(huán)境變量path和classpath 使用cmd進(jìn)入命令行模式 使用javac命令對(duì)需要編譯的.java源碼文件進(jìn)行編譯,得到編譯后的結(jié)果.class文件 執(zhí)行java程序 使用java命令執(zhí)行 或?qū)?class文件放在合適的位置供其他程序調(diào)用,如:將servlet程序Welcome.class放在workbench中處理客戶端發(fā)送的數(shù)據(jù),Java程序的編譯,有些servlet需要使用已經(jīng)寫好的Java源代碼,而這個(gè)源代碼又不是J2SE SDK的一部分,如需要workbench的lib目錄下的javax

23、.servlet.jar。 注意: 將D:workbenchlibjavax.servlet.jar;. 加入到環(huán)境變量中的classpath中去,Java程序的編寫,Java規(guī)則(Java Rule) Java語(yǔ)法,即使用Java編寫程序需要遵循的語(yǔ)法規(guī)則。 標(biāo)識(shí)符(identifier) 類或者行為需要有個(gè)名字,這個(gè)名字就是一個(gè)標(biāo)識(shí)符。 Java對(duì)大小寫敏感,即標(biāo)識(shí)符“system”和“System”是不同的標(biāo)識(shí)符 Java中類的名字通常以大寫字母開頭;其他的標(biāo)識(shí)符(如方法的名字)以小寫字母開頭,Java程序的編寫,關(guān)鍵字(keyword) Java語(yǔ)言中預(yù)先定義好的字,如class, p

24、ublic, static等 Java語(yǔ)句(statement)的順序 Java語(yǔ)言編寫的順序也是它們被處理執(zhí)行的順序。 程序格式(format) 單詞和單詞之間使用空格分開。 沒(méi)行寫一句代碼(statement),如果這局代碼太長(zhǎng)再分行。 所有的語(yǔ)句用;結(jié)束。 使用tab鍵實(shí)現(xiàn)縮進(jìn),使得所寫的java代碼美觀易讀。 注釋(comment) 使用/*和*/進(jìn)行注釋一段文字;使用/注釋一行文字。 好的習(xí)慣:在定義類之前,使用注釋描述類的作用和行為。 壞的習(xí)慣:整個(gè)程序基本沒(méi)有注釋,Java程序的編寫,關(guān)于Java程序名 對(duì)于大多數(shù)計(jì)算機(jī)語(yǔ)言,保護(hù)程序源代碼的文件名是隨意的,但對(duì)于Java不行。

25、Java中,所有的代碼都必須駐留在類中,每個(gè)源程序文件被稱為一個(gè)編譯單元(compile unit)。 類名必須與源程序的文件名相同。 確保文件名的大小寫與類名一樣,Creating an HTML Form,Running a Java Program,將相關(guān)的網(wǎng)頁(yè)Load入Workbench 將網(wǎng)頁(yè)所需的servlet程序Load入Workbench 從Workbench中調(diào)用網(wǎng)頁(yè),測(cè)試servlet的使用 實(shí)例1:Welcome 實(shí)例2:Catfish,一些基本的概念,類(class):共享相同行為的對(duì)象的類別, Java中一類模型元素稱為類。 對(duì)象(object):Java中模擬某事物

26、的一個(gè)實(shí)體,是類的一個(gè)實(shí)例。 行為(behavior):對(duì)象可能進(jìn)行的任何動(dòng)作。 消息(message):調(diào)用對(duì)象行為的機(jī)制。 引用(reference):一個(gè)值或者一個(gè)表達(dá)式,它引用到一個(gè)對(duì)象,因而可以由此向?qū)ο蟀l(fā)送消息,一些基本的概念,語(yǔ)句(statement):Java語(yǔ)言的一個(gè)句子,一條語(yǔ)言表達(dá)一個(gè)要執(zhí)行的動(dòng)作。 標(biāo)識(shí)符(identifier):一個(gè)字符序列,可以用作Java程序中的名字。 關(guān)鍵字(keyword):Java中具有預(yù)定義的特殊含義的單詞或標(biāo)識(shí)符。 注釋(comment):出現(xiàn)在源代碼中的解釋性的文字,2.1 Programming with Java,Programmi

27、ng with Objects Java Program Development First Look at Java Element of a Java Servlet Planning Servlet Development Guidelines for Java Development,2.1.3 First Look at Java,以Catfish為例,說(shuō)明Java的使用 實(shí)例:Catfish.class 類的定義(class definition) Catifish.類的屬性(attribute) Catfish類的行為(behavior) If語(yǔ)句的用法,Java的標(biāo)識(shí)符,Jav

28、a程序設(shè)計(jì)中,標(biāo)識(shí)符用來(lái)對(duì)程序中的變量、方法、對(duì)象、類、接口、以及包等進(jìn)行命名 Java語(yǔ)言的標(biāo)識(shí)符命名必須遵循以下原則: 標(biāo)識(shí)符必須是以字母、下劃線(_)、美元符($)開始的一個(gè)字符序列; 除第一個(gè)字符外,標(biāo)識(shí)符可以由字母、數(shù)字、下劃線(_)、美元符($)構(gòu)成的一個(gè)字符序列; 標(biāo)識(shí)符對(duì)大小寫敏感 標(biāo)識(shí)符沒(méi)有最大長(zhǎng)度限制 標(biāo)識(shí)符中間不能有空格和連字符(-) Java語(yǔ)言的關(guān)鍵字不能用作標(biāo)識(shí)符,Java的關(guān)鍵字,Java語(yǔ)言中,有一部分標(biāo)識(shí)符是系統(tǒng)定義的,有著專門的意義和用途,不能用于一般的標(biāo)識(shí)符,這些標(biāo)識(shí)符就叫做保留字或關(guān)鍵字,abstract assert boolean break byt

29、e case catch char class const continue default do double else extends final finally float for goto if implements import instanceof int interface long native new package private protected public return short static strictfp super switch synchronized this throw throws transient try void volatile while

30、,在Java中,true(真)、false(假)和null(空值)都是小寫的,它們不是Java的關(guān)鍵字,但是在程序中不能把它們作為名字使用,Java的標(biāo)識(shí)符,Java標(biāo)識(shí)符 StudentName get_up _sys_path $pay $9test 7go %super Iam public get-name,類的定義,Catfish.java給出了對(duì)類Catfish的定義 The description is provided by the source code enclosed within the opening brace and the closing brace. 類的定義

31、中給出內(nèi)容 attributes(屬性值) behaviors(行為,類的定義的格式,類修飾符 class 類名 extends 父類名implements 接口名, 接口名 類體,public class Catfish 類的主體,public類標(biāo)識(shí)符:如果一個(gè)類被聲明為是public的,則與它不在同一個(gè)包中的類也可以通過(guò)引用它所在的包來(lái)使用這個(gè)類。否則這個(gè)類就只能被同一個(gè)包使用,類的定義的格式(續(xù),類修飾符 class 類名 extends 父類名implements 接口名, 接口名 類體,public class Welcome extends HttpServlet 類的主體,類中的

32、屬性,類中包含的內(nèi)容(以Catfish類為例) 屬性值 private int row; private int column; private String imageFileName; private:是java的一個(gè)關(guān)鍵字。標(biāo)識(shí)這些屬性只能由Catfish對(duì)象訪問(wèn)。 int和String標(biāo)識(shí)Java中數(shù)據(jù)的類型 int row表示變量row是一個(gè)整數(shù) String表示變量imageFileName是一個(gè)字符串,類中的行為,getRow getColumn getImage swimRightIfPossible swimLeftIfPossible swimUpIfPossible sw

33、imDownIfPossible,以swimLeftIfPossible()為例,屬性(attribute,消息(message,Student Activity,教材中的2.1.3中的Student Acitivity 使用提供的例子Alife-Basic學(xué)習(xí)如何建立一個(gè)Java類。 首先從下載Alife-Basic.zip 然后將教材表1(listing 1)中的內(nèi)容存為Catfish.java,可以修改其中的內(nèi)容。 編譯Catfish.java 使用workbench運(yùn)行Catfish.class,If 語(yǔ)句,If 語(yǔ)句,If語(yǔ)句的執(zhí)行順序,判斷條件,當(dāng)條件為真時(shí)執(zhí)行的語(yǔ)句,true(真

34、,false(假,1.需求分析 (對(duì)整個(gè)系統(tǒng)的分析,2.系統(tǒng)需要描述的對(duì)象和對(duì)象 之間的關(guān)系,3.將所需對(duì)象分類,并確定 一類對(duì)象的屬性和行為,6.完成整個(gè)系統(tǒng),5.從類定義中生成多個(gè)對(duì)象, 每個(gè)對(duì)象都具有類定義中定義 的屬性和行為,4.類定義(屬性和行為,軟件系統(tǒng)開發(fā)的基本過(guò)程,2.1 Programming with Java,Programming with Objects Java Program Development First Look at Java Element of a Java Servlet Planning Servlet Development Guideline

35、s for Java Development,2.1.4 Elements of a Java Servlet,The Welcome Servlet More Servlets Getting User Input Debugging a Servlet,Servlet的定義:Servlet是一種獨(dú)立于操作系統(tǒng)平臺(tái)和網(wǎng)絡(luò)傳輸協(xié)議的服務(wù)器端的Java應(yīng)用程序,它用來(lái)擴(kuò)展服務(wù)器端的功能,可以生成動(dòng)態(tài)頁(yè)面。 Servlet與傳統(tǒng)的Java應(yīng)用程序不同的是:它不是從命令行啟動(dòng)的,而是由包含Java虛擬機(jī)的Web服務(wù)器進(jìn)行加載。 Servlet與Applet的區(qū)別: Applet是運(yùn)行于客戶端瀏覽器的

36、Java程序,Servlet運(yùn)行于服務(wù)器端。它們都沒(méi)有main()函數(shù);都不是用戶調(diào)用,而是由另一個(gè)應(yīng)用程序(容器)調(diào)用;它們都有一個(gè)生命周期,包含init()和destroy()方法,import java.io.*; import javax.servlet.*; import javax.servlet.http.,關(guān)鍵字,public class extends void throws import,標(biāo)識(shí)符,Welcome HttpServlet doPost HttpServletRequest HttpServletResponse PrintWriter ServletExcep

37、tion IOException request response out setContentType getWriter println,引入java.io包中所有的類,servlet用這些類實(shí)現(xiàn)輸入輸出,Welcome類的定義, dopost處理服務(wù)器收到的表單數(shù)據(jù),并作出響應(yīng),使用setContentType設(shè)定servlet生成的文件的格式: “text/plain”表示生成一個(gè) 純文本文件; “text/html” 表示生成一個(gè) HTML Web網(wǎng)頁(yè); “ text/gif”表示生成一個(gè) GIF文件,More Servlets,HtmlWelcome servlet Persona

38、lWelcome servlet,調(diào)試servlet (Debugging a Servlet,在servlet源代碼中加入System.out.println(“ 調(diào)試提示信息); 參見2.1.4節(jié)listing 4的Welcom.java 在servlet運(yùn)行時(shí),可以在workbench的窗口中看到調(diào)試提示信息,Servlet運(yùn)行時(shí),調(diào)試提示信息顯示在workbench的信息提示窗口,2.1 Programming with Java,Programming with Objects Java Program Development First Look at Java Element o

39、f a Java Servlet Planning Servlet Development Guidelines for Java Development,2.1.5 Planning Servlet Development,Thinking Ahead Defining the Problem Planning the Solution Coding the Servlet Testing and Evaluating,Thinking ahead,是否安裝了Java平臺(tái) J2SE 環(huán)境變量path和classpath是否設(shè)置正確 是否安裝了workbench Workbench安裝目錄下l

40、ib目錄下的javax.servlet.jar是否添加到classpath中,Defining the Problem,定義網(wǎng)頁(yè)中所需控件的類型、數(shù)目以及名字(name) 定義servlet的名稱,如何在網(wǎng)頁(yè)中被調(diào)用 定義servlet處理信息得到的結(jié)果 示例:下載在線教材2.1.5節(jié)中的TravelRequest.zip 其中的TravelRequest.java 給出了服務(wù)器端處理程序的代碼框架,參照該節(jié)的教程,逐步實(shí)現(xiàn)完整的程序代碼,Planning the Solution,定義響應(yīng)返回的頁(yè)面的內(nèi)容類型(Indicate the content type being returned

41、by the response) 獲取一個(gè)輸出流,使用這個(gè)輸出流將數(shù)據(jù)傳送給客戶(Retrieve an output stream to send data to the client) 獲取用戶在表單中的輸入(Get user input from the form: name and destination) 建立網(wǎng)頁(yè)的header(Start by building the Web page header) 加入圖片(Add the image) 加入文本信息,并將從請(qǐng)求那里得到的姓名放入到信息中(Add the confirmation message, with the name)

42、 結(jié)束網(wǎng)頁(yè)(End by building the Web page footer,import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class TravelRequest extends HttpServlet public void doPost( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException /* * Indicate the content

43、 type (for example, text/html), * being returned by the response */ response.setContentType(text/html); /* * Retrieve an output stream to use to send * data to the client */ PrintWriter out = response.getWriter(,TravelRequest.java文件,* * Get the user input from the form : * name and destination */ St

44、ring destination = request.getParameter(Destination); String name = request.getParameter(Name); /* * Start by building the web page header */ out.println( ); out.println(); out.println(); out.println(iCarnegie Travel Agency); out.println(); out.println(,TravelRequest.java文件(2,* * Add the image */ ou

45、t.println(); /* * Add the confirmation message, with the name */ out.println(Hello, + name + !); out.println( Thanks for your request. You will be contacted shortly.); /* * End by building the web page footer */ out.println(); out.println(); / end-doPost,TravelRequest.java文件(3,Coding a Servlet,選擇編輯工

46、具編輯.java文件 編譯.java文件得到.class文件,Debugging a Servlet,在servlet源代碼中加入System.out.println(“ 調(diào)試提示信息); 在servlet運(yùn)行時(shí),可以在workbench的窗口中看到調(diào)試提示信息,2.1 Programming with Java,Programming with Objects Java Program Development First Look at Java Element of a Java Servlet Planning Servlet Development Guidelines for Jav

47、a Development,2.1.6 Guidelines for Java Development,The process of Programming The Java API Documentation Coding Style Commenting Source Code Javadoc,開發(fā)網(wǎng)頁(yè)的步驟,定義網(wǎng)頁(yè)內(nèi)容 規(guī)劃網(wǎng)頁(yè)的布局和所需的鏈接 一步步實(shí)現(xiàn)網(wǎng)頁(yè)內(nèi)容 評(píng)估網(wǎng)頁(yè) 使用瀏覽器看網(wǎng)頁(yè)的效果以測(cè)試HTML是否正確 是否滿足規(guī)范,編程步驟(The process of Programming,定義階段(Definition Phase) 定義和/或重定義問(wèn)題 計(jì)劃階段(Plann

48、ing Phase) 計(jì)劃實(shí)現(xiàn)問(wèn)題的解決方案 編碼階段(Coding Phase) 編碼實(shí)現(xiàn)解決方案 評(píng)估階段(Evaluation Phase) 評(píng)估和測(cè)試,編程步驟(The process of Programming,define /redefine,code,plan,evaluate/test,Programming is not coding. Coding is not programming,Java API 文檔(documentation,Java程序員可能需要使用多個(gè)Java API 所有的Java API文檔可以參見http:/,編碼的風(fēng)格,Java編程習(xí)慣(conve

49、ntion) http:/ 注釋你的代碼 All Java source files you submit should be commented,Javadoc,Java SDK提供了一個(gè)為代碼生成文檔的工具:Javadoc. 如果你的注釋滿足所規(guī)定的格式,則可以運(yùn)行Javadoc自動(dòng)生成一個(gè)HTML文檔描述你的代碼 關(guān)于Javadoc的更多信息可以參見: http:/,Summary2.1Programming with Java,Programming with Objects Java Program Development First Look at Java Element of

50、a Java Servlet Planning Servlet Development Guidelines for Java Development,補(bǔ)充Java Servlet編程,在Servlet技術(shù)出現(xiàn)之前,Java服務(wù)器端編程使用C或Perl編程 缺點(diǎn):比較復(fù)雜 Java Servlet API的出現(xiàn),簡(jiǎn)化了在服務(wù)器端編程的復(fù)雜性,Servlet是什么,Servlet是一種獨(dú)立于平臺(tái)和協(xié)議的服務(wù)器端的Java應(yīng)用程序 Servlet支持動(dòng)態(tài)Web頁(yè)面的生成,Java Servlet開發(fā)環(huán)境,JSDK + 支持Servlet的服務(wù)器 Tomcat 也可以通過(guò)安裝JRun,來(lái)使得微軟的I

51、IS支持Servlet,本課程環(huán)境,JDK 1.6 里面包含了對(duì)Java Servlet的支持 Tomcat Server,Servlet的基本類,GenericServlet類 程序員要編寫Servlet應(yīng)用程序,一般要繼承GenerticServlet類或它的子類HttpServlet,Servlet與客戶端的交互和跟蹤,1、與客戶端交互 2、客戶端跟蹤,1、 與客戶端交互,HTTP servlet與客戶端的交互 通過(guò)service方法處理客戶端的請(qǐng)求 service方法根據(jù)請(qǐng)求(request)類型的不同,調(diào)用不同的方法 對(duì)于GET請(qǐng)求,調(diào)用doGet( )方法進(jìn)行處理 對(duì)于POST請(qǐng)求

52、,調(diào)用doPost( )方法進(jìn)行處理,1 、提取Servlet信息,注冊(cè)的servlet都有相關(guān)的很多初始化參數(shù) 這些初始化參數(shù)寫在web.xml中,具體語(yǔ)法格式請(qǐng)參閱Tomcat文檔 getInitParameter()方法 可以得到servlet初始化的一些參數(shù) 返回一個(gè)指定參數(shù)的值(String類型) 如果指定參數(shù)不存在,則返回null getInitParameterNames()方法 可以得到初始化參數(shù)名稱 返回String類型的Enumeration類型數(shù)據(jù) 如果不存在初始化參數(shù),則返回一個(gè)null的Enumeration,通過(guò)servlet初始化參數(shù)建立一個(gè)數(shù)據(jù)庫(kù)連接的程序段如下

53、 java.sql.Connection con = null; public void init(ServletConfig config) throws ServletException super.init(config); String host = getInitParameter(host); int port = Integer.parseInt(getInitParameter(port); String db = getInitParameter(db); String user = getInitParameter(user); String password = getI

54、nitParameter(password); String proxy = getInitParameter(proxy); con = establishConnection(host, port, db, user, password, proxy);,1 、提取Servlet信息(續(xù)) 通過(guò)初始化建立數(shù)據(jù)庫(kù)連接,輸出全部初始化參數(shù)名稱 import java.io.*; import java.util.*; import javax.servlet.*; public class PrintInitParaNames extends GenericServlet public voi

55、d service(ServletRequest req, ServletResponse res) throws ServletException, IOException res.setContentType(text/plain); PrintWriter out = res.getWriter(); out.println(Init Parameters As Following:); Enumeration enum = getInitParameterNames(); while (enum.hasMoreElements() String name = (String) enum

56、.nextElement(); out.println(name : + getInitParameter(name);,1、 提取Servlet信息(續(xù)) PrintInitParaNames.java,2 、提取服務(wù)器信息,servlet可以得到很多服務(wù)器相關(guān)的信息,同時(shí)可以將這些信息發(fā)送到客戶端 getServerName()返回服務(wù)器名稱 getServerPort()返回服務(wù)器監(jiān)聽端口 getServerInfo()輸出服務(wù)器程序和版本,之間用“/”分開 getAttribute()返回服務(wù)程序的屬性 得到路徑相關(guān)的信息 public String HttpServletReques

57、t.getPathInfo() public String HttpServletRequest.getPathTranslated(,提取服務(wù)器信息舉例 import java.io.*; import java.util.*; import javax.servlet.*; public class ServerSnoop extends GenericServlet public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException res.setContent

58、Type(text/plain); PrintWriter out = res.getWriter(); out.println(req.getServerName() output: + req.getServerName(); out.println(req.getServerPort() output: + req.getServerPort(); out.println(getServletContext().getServerInfo() output: + getServletContext().getServerInfo() ); out.println(getServletCo

59、ntext().getAttribute(attribute) output: + getServletContext().getAttribute(attribute) );,2 、提取服務(wù)器信息(續(xù),3 、提取客戶端信息,服務(wù)器可以從request得到很多客戶端的信息 getRemoteAddr():得到IP地址 getRemoteHost():得到客戶端機(jī)器的名稱 利用InetAddress.getByName()方法可以將IP地址或客戶端機(jī)器名稱轉(zhuǎn)換成一個(gè).InetAddress類型的對(duì)象 InetAddress remoteInetAddress = InetAddress.getB

60、yName(req.getRemoteAddr(); 通過(guò)獲取客戶端的地址,并判斷是否隸屬某個(gè)范圍,可以限制某個(gè)地區(qū)的用戶訪問(wèn)你的網(wǎng)站,3 、提取客戶端信息(續(xù),服務(wù)器可以得到客戶想做的事情 客戶請(qǐng)求表現(xiàn)為表單數(shù)據(jù),由“名/值”對(duì)組成。當(dāng)提交某一個(gè)網(wǎng)頁(yè)的時(shí)候常常在瀏覽器地址欄中看到類似格式的數(shù)據(jù)格式 name/value,每對(duì)之間用 import .*; import javax.servlet.*; import javax.servlet.http.*; public class QueryServlet extends HttpServlet public void doGet(Http

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論