版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
計算機網(wǎng)絡原理、技術及應用第1章Web技術基礎第2章標記語言與網(wǎng)頁制作第3章圖像處理技術第4章音頻與視頻處理第5章Flash動畫設計第6章客戶端開發(fā)
第7章服務端編程目錄計算機網(wǎng)絡原理、技術及應用第7章服務端編程7.1B/S三層體系結構與Web服務器腳本程序
7.2Java程序設計基礎7.3JavaBeans7.4JSP技術7.5JDBC與數(shù)據(jù)庫編程7.6綜合舉例7.7Java開發(fā)工具簡介計算機網(wǎng)絡原理、技術及應用7.1B/S三層體系結構與Web服務器腳本程序B/S三層體系結構腳本引擎與服務端腳本程序計算機網(wǎng)絡原理、技術及應用B/S三層體系結構B/S三層體系結構瀏覽器層Web服務器層.數(shù)據(jù)庫服務器層三層體系架構的特點瘦客戶端應用突破局域網(wǎng),分布到整個Internet計算機網(wǎng)絡原理、技術及應用服務端腳本程序什么是腳本引擎腳本引擎就是指腳本程序的運行環(huán)境,負責腳本程序的解釋,來具體處理用相應腳本語言書寫的腳本命令。例如:ASP結構的,IIS組件JSP機構的,Tomcat應用服務器服務端腳本程序界定符<%…%>計算機網(wǎng)絡原理、技術及應用服務端腳本程序舉例<%@pagecontentType="text/html;charset=gb2312"%><html><head><title>Hello,JSP</title><%!Stringdatestr="";%></head><body><%out.println("你好,JSP!");%><br><%java.text.DateFormatdf=newjava.text.SimpleDateFormat("yyyy-MM-ddHH:mm");java.util.Datenowdate=newjava.util.Date();datestr=df.format(nowdate);datestr=datestr.substring(0,16);%>現(xiàn)在的時間是:<%=datestr%></body></html>計算機網(wǎng)絡原理、技術及應用7.2Java程序設計基礎
Java程序設計語言類與對象接口包(package)Java基礎類庫JavaApplet客戶端程序JavaServlet服務器程序計算機網(wǎng)絡原理、技術及應用Java程序設計語言程序設計語言過程式,20世紀80年代以前Pascal,F(xiàn)ortran,C,etc面向對象,20世紀90年代以后C++JavaJava的特點Java技術編寫一次,到處運行Java程序設計語言特點Java沒有主函數(shù)和全局函數(shù)Java沒有全局變量Java沒有結構和聯(lián)合Java用包(Package)來分解命名空間Java沒有獨立的頭文件沒有執(zhí)針計算機網(wǎng)絡原理、技術及應用類與對象類與對象的概念類(class)是包含數(shù)據(jù)和處理這些數(shù)據(jù)的過程的數(shù)據(jù)結構。對象(object)是用類來聲明的數(shù)據(jù)結構,如果將類比作數(shù)據(jù)類型,對象就是相應數(shù)據(jù)類型的變量。計算機網(wǎng)絡原理、技術及應用類的定義[修飾符]class<類名>[extends<父類名>][implements<接口名列表>]{成員變量聲明;成員函數(shù)定義;}abstract,抽象類,抽象類必須包含至少一個抽象成員函數(shù)。抽象類不能夠創(chuàng)建對象,需要用其派生類創(chuàng)建。final,最終類,說明一個類不能再派生子類。public,能被其他類訪問的公有類,在其它包(package)里要使用該類,需要先用import導入,否則只能在他定義的package里使用。synchronicable,表示所有類的成員函數(shù)都是同步的。計算機網(wǎng)絡原理、技術及應用成員變量定義的一般形式成員變量定義的一般形式[修飾符]<類型><成員變量列表>;訪問級別聲明符privatepublicprotectedfinal(最終,初始化后不能再改變其值的變量)volatile(多線程變量)。靜態(tài)成員變量修飾符static,此變量稱為類變量,不加static的變量稱為對象變量。計算機網(wǎng)絡原理、技術及應用成員函數(shù)定義的一般形式成員變量定義的一般形式[修飾符]返回值類型<方法名>([形式參數(shù)列表])[throws異常列表]{//函數(shù)體(Java程序代碼)}修飾符privatepublicprotectedabstract(抽象方法,無方法體)synchronized(線程同步的方法)native(本機方法)靜態(tài)成員函數(shù)static來聲明靜態(tài)成員函數(shù),表明此方法為類方法,無static修飾的方法為對象方法。計算機網(wǎng)絡原理、技術及應用構造函數(shù)概念構造函數(shù)(constructor)是一種特殊的成員函數(shù),用來在內(nèi)存中建立具體的對象。構造函數(shù)的名稱和類名稱相同,一個類可以擁有幾個帶有不同參數(shù)的構造函數(shù)。構造函數(shù)的激活(invoke)注意事項構造函數(shù)不能描述為const和volatile構造函數(shù)不能是static,因為構造函數(shù)需要初始化類的成員變量,但靜態(tài)構造函數(shù)不能訪問成員變量。構造函數(shù)不能被繼承。構造函數(shù)不能有返回值,也不可以是void。定義一個類時,必須明確定義除缺省構造函數(shù)和拷貝構造函數(shù)以外的所有其它構造函數(shù)。計算機網(wǎng)絡原理、技術及應用創(chuàng)建對象創(chuàng)建對象對象變量=new類(參數(shù))激活構造函數(shù)計算機網(wǎng)絡原理、技術及應用類的定義舉例定義了一個三角形圖形類CTriangle(文檔名為exa01.java)classCTriangle{privatedoublea,b,c,t;publicdoubles=0;CTriangle(doublex,doubley,doublez){a=x;b=y;c=z;}//計算三角形的面積publicdoubleArea(){t=(a+b+c)/2;s=Math.sqrt(t*(t-a)*(t-b)*(t-c));returns;}publicvoidout1(){Area();System.out.println("Area="+s);}}classMyTest01{publicstaticvoidmain(String[]args){CTrianglemyobj=newCTriangle(10,20,15);myobj.out1();}}計算機網(wǎng)絡原理、技術及應用類的定義舉例—運行在Dos提示符下,執(zhí)行javacexa01.java命令,編譯,生成每個類的.class文件執(zhí)行javaMyTest01,運行上述程序計算機網(wǎng)絡原理、技術及應用類的構造函數(shù)激活次序舉例定義了三個類A、B、C,其中C中包含兩個對象成員,來展示對象構造函數(shù)的激活次序,文檔名為exa02.javaclassA{intx,y;A(inta,intb){x=a;y=b;}A()//默認構造函數(shù){x=0;y=0;System.out.println("Aconstructor\n");}}classB{B(){System.out.println("Bconstructor\n");}}classC{publicAa=newA();publicBb=newB();C(){System.out.println("Cconstructor\n");}}classMyTest02{publicstaticvoidmain(String[]args){CmyObj=newC();}}計算機網(wǎng)絡原理、技術及應用類的構造函數(shù)激活次序舉例—運行執(zhí)行javaMyTest02,輸出結果為:AconstructorBconstructorCconstructor上述輸出結果表明,如果一個類含有成員對象,則在創(chuàng)建類的對象時,將先創(chuàng)建類的成員對象,最后才是類的對象本身。計算機網(wǎng)絡原理、技術及應用封裝和抽象封裝(Encapsulation)是指對象可以擁有私有元素,將內(nèi)部細節(jié)隱藏起來的能力。封裝將對象封閉起來,管理著對象的內(nèi)部狀態(tài)。抽象則和對象的外部狀態(tài)緊密相關,它通常用來描述對象所表示的具體概念、對象所完成的任務以及處理對象的外部接口。抽象處理的是對象的可見外部特征。訪問級別修飾符關鍵詞public,類中所有public成員構成類的接口,它們是類的抽象性的表現(xiàn)。關鍵詞private,類中的private成員只能被類的成員函數(shù)、友元類或外部友元函數(shù)訪問。從而實現(xiàn)類的封裝性。關鍵詞protected,類的protected成員可以被類的派生類成員訪問。計算機網(wǎng)絡原理、技術及應用類成員訪問規(guī)則類成員訪問規(guī)則計算機網(wǎng)絡原理、技術及應用靜態(tài)成員概念支持封裝和抽象的另外機制還包括關鍵詞static。當一個成員被說明成static時,則該成員在程序中只有一個拷貝存在,而不是在每個對象中都有一個拷貝。所有的對象共享類中的靜態(tài)成員。在一些面向對象的程序設計語言中,靜態(tài)成員被稱為類變量,或類屬變量。舉例classCS{staticinta;intb,c,d;};CSobjs[3];計算機網(wǎng)絡原理、技術及應用類的繼承性與派生類概念從現(xiàn)存的對象出發(fā)建立一種新的對象類型,使它繼承原對象的特點和功能,這就是對象的繼承性。繼承是許多層次對象的自然描述。從現(xiàn)存類派生出新類時,現(xiàn)存類稱為基類(baseclass),派生出的新類稱為派生類。派生類可以對基類作如下變化增加新的成員變量增加新的成員函數(shù)重新定義已有的成員函數(shù),即:子類可以對父類的方法覆蓋(overriding)或重載(overloading)。計算機網(wǎng)絡原理、技術及應用多態(tài)子類可以對父類的方法覆蓋(overriding)所謂覆蓋,是指在子類中定義了與父類中同名的函數(shù),這時將根據(jù)當前的對象類型執(zhí)行子類中的代碼,即父類中的代碼被覆蓋。運行時多態(tài)重載(overloading)所謂方法重載是類中含有同名,但特征參數(shù)(參數(shù)數(shù)量,參數(shù)類型)不同的方法,編譯時通過形式參數(shù)確定要調用的方法。編譯時多態(tài)計算機網(wǎng)絡原理、技術及應用改變現(xiàn)有成員函數(shù)的屬性派生類不能刪除基類的成員變量和成員函數(shù),實際上派生類往往是基類的擴充,是一種具體化和完善的過程類的派生是一種演化過程,即通過擴展、更改和特殊化從一個已知類出發(fā)來建立一個新的類。已知基類A建立一個派生類B,一般形式為:classBextendsA{//派生類B的成員說明};讀作“類B由A派生”,它告訴編譯器類B是一種A,對基類A所作的修改和添加在括號內(nèi)給出。計算機網(wǎng)絡原理、技術及應用調試Java程序每個java文件有且只能有一個公有類,即public類,文件名必須和這個公有類的類名大小寫完全一樣。在要運行的類中有且只能有一個publicstaticvoidmain(String[]args)方法,這個方法就是主程序。運行一個Java程序,應該是在java命令后跟包含main函數(shù)的類名,而不是Java程序的文件名,即java<包含main方法的java類>,類名后面不能有.class等擴展名。如果在編譯或運行時出現(xiàn)問題,還可能是類的路徑問題。我們來看一下Java程序的運行過程,首先通過javac命令,將Java程序編譯生成.class文件,即虛擬機要執(zhí)行的代碼,稱之為字節(jié)碼(bytecode)。然后,通過java命令,即通過java虛擬機來解釋運行class文件。虛擬機通過classloader來裝載這些字節(jié)碼,即通常意義上的類。問題是,classloader從哪里知道java本身的類庫及用戶自己的類在什么地方呢?要解決這個問題,通常是通過系統(tǒng)環(huán)境變量種的類路徑(classpath)來設置的。計算機網(wǎng)絡原理、技術及應用接口(interface)C++與多重繼承Java沒有多重繼承,可以通過接口來實現(xiàn)相應的功能。接口(Interface)是一組沒有給出實現(xiàn)細節(jié)的操作(方法)的集合計算機網(wǎng)絡原理、技術及應用創(chuàng)建接口一般形式publicinterface<Interfacename>[extends<Superinterface列表>]{成員變量聲明(常量);成員函數(shù)(方法)聲明;}public指示了接口可以在任何的包中任何的類中使用。如果你沒有指定接口為public,那么接口就只能在定義接口的包中的類中使用。常量聲明在接口中的常量可以是public、static和final方法聲明接口中的方法不需要給出具體的實現(xiàn)代碼。因此,所有定義在接口中的方法可以隱含地為publicabstact方法計算機網(wǎng)絡原理、技術及應用接口和類接口的定義和類的定義類似,但是接口不是一個類,而是對符合接口要求的類的一套規(guī)范。接口說明了實現(xiàn)接口的類該做什么而不指定如何去做,一個類可以實現(xiàn)一個或多個接口。實現(xiàn)一個接口聲明類需要實現(xiàn)的接口,聲明一個類實現(xiàn)一個接口需要使用implements關鍵字。提供接口中的所有方法的定義。實現(xiàn)接口的類繼承了定義在接口中的常量,這些類可以使用簡單的名字來引用接口定一中的常量。計算機網(wǎng)絡原理、技術及應用包(package)什么是包?管理大型名字空間,避免名字沖突,引入包(Package)的概念Java中的包其實指的就是目錄,它可以更好地管理Java類(Class)和接口(Interface)計算機網(wǎng)絡原理、技術及應用定義包使用package語句可以將一個編譯單元(源程序文件)定義成包。如果使用package語句,編譯單元的第一行必須無空格,也無注釋,格式如下:package<包名>;舉例例如:有一個java文件,文件名為B.java,內(nèi)容如下:packagehao.yy;publicclassB{B(intyy,intmm,intdd){System.out.println("Year:"+yy+"Month:"+mm+"Date"+dd);}}編譯執(zhí)行javac-dd:\B.java命令,其中參數(shù)-d<目錄>為指定輸出文件的目錄。因此,上述編譯命令執(zhí)行后將在d:\目錄下,創(chuàng)建一個d:\hao\yy文件夾,該文件夾中包含了編譯后的類文件B.class。計算機網(wǎng)絡原理、技術及應用使用包中的類和接口使用import語句,導入類或接口,或包含它們的包。例如:importjava.util.*;或者:importjava.util.Date;importjava.text.SimpleDate;publicclassmydate{publicstaticvoidmain(String[]args){//CreateadateformatterthatcanparsedatesoftheformMM-dd-yyyy.SimpleDateFormatbartDateFormat=newSimpleDateFormat("MM-dd-yyyy");//Createastringcontainingatextdatetobeparsed.Stringdd="6-22-2008";Datedate=bartDateFormat.parse(dd);//Sendtheparseddateasalongvaluetothesystemoutput.System.out.println(date.getTime());}}在每個引用的類和接口前面給出它們所在的包的名字包名.類名obj=new包名.<類名|接口名>();計算機網(wǎng)絡原理、技術及應用Java基礎類庫java.lang包java.util包java.awt包java.swing包java.io包java.applet包java.beans包包計算機網(wǎng)絡原理、技術及應用JavaApplet客戶端程序概念JavaApplet是指用Java編寫的能夠在Web頁中運行的小應用程序在java.applet包中,定義了Applet類,它是所有Applet應用的基類,所有的Applet小應用程序都必須繼承該類。功能被Flash代替計算機網(wǎng)絡原理、技術及應用JavaServlet服務器程序概念Servlet是專門為在Web服務器機器上運行而設計的Java程序,相當于運行于服務端的applet,與CGI程序一樣,用于充當連接前端Web請求與后端數(shù)據(jù)資源的中間層組件。編寫Servlet非常麻煩,正在被JSP技術取代計算機網(wǎng)絡原理、技術及應用6.3JavaBeans什么是JavaBeansJavaBean的屬性、方法和事件計算機網(wǎng)絡原理、技術及應用什么是JavaBeansJavaBeans是符合一定規(guī)范的Java類這樣的Java類將對應于一個獨立的.java文件,在絕大多數(shù)情況下,他是一個public類型的類。JavaBeans是一種規(guī)范,一種在Java(包括JSP)中可重復使用的Java組件的技術規(guī)范。使用JavaBeans可以充分利用組件的可重復使用的特性并增加程序的可讀性。計算機網(wǎng)絡原理、技術及應用JavaBean的屬性JavaBean有四種類型的屬性,分別是:單值屬性、索引屬性、關聯(lián)屬性和限制屬性單值屬性,定義一個包含一個值的數(shù)據(jù)成員,并為其定義一對設置(set)/獲?。╣et)屬性的方法,以便于外部與其發(fā)生聯(lián)系。publicvoidset<PropertyName>(<PropertyType>propertyValue)//設置器public<PropertyType>get<PropertyName>()//獲取器索引屬性,類似于Java中的數(shù)組,包括若干個數(shù)據(jù)類型相同的元素,可以通過整數(shù)索引值訪問其中的屬性,因此稱索引屬性。關聯(lián)屬性,當修改這類屬性時,將發(fā)送一個通知給其他元素(如:Applet、application或其他JavaBean),如果與該JavaBean中的某個屬性相關聯(lián),就會注冊該屬性。外部部件稱為監(jiān)聽器。限制屬性,當需要修改一個限制屬性值時,接受屬性的外部部件首先要件檢查這個屬性的合理性再決定是否接受修改。計算機網(wǎng)絡原理、技術及應用JavaBean的方法JavaBean歸根到底是一個Java類,所有的public方法都可以通過對象外部直接調用。JavaBean中常用的方法是單值屬性設置器/獲取器,set屬性值get屬性值。計算機網(wǎng)絡原理、技術及應用JavaBean的事件JavaBean和其他軟件組件交流信息的主要手段是發(fā)送和接受事件AWT事件模型一個事件源可以注冊事件監(jiān)聽器對象,當事件源檢測到某種事件發(fā)生時,將激活檢測器對象中一個相應的事件處理方法。事件的監(jiān)聽原理是:首先事件源必須對需要發(fā)送的事件進行注冊,然后注冊事件監(jiān)聽器,并說明該事件源所發(fā)生的事件向什么組件發(fā)送,也就是說,在事件源組件中實現(xiàn)方法并在監(jiān)聽組件中注冊該事件源。計算機網(wǎng)絡原理、技術及應用JavaBean應用舉例一個NameCard的JavaBean代碼如下(文件名NameCard.java):packagecards;publicclassNameCard{StringName,Address;publicNameCard(){this.Name="John";this.Address="No,Road,City,Country";}publicvoidsetName(StringmyName){this.Name=myName;}publicStringgetName(){return(this.Name);}publicvoidsetAddress(StringmyAddress){this.Address=myAddress;}publicStringgetAddress(){return(this.Address);}}計算機網(wǎng)絡原理、技術及應用JavaBean應用舉例—編譯與調試存儲在Web應用特定的文件夾中,即Web應用根目錄中“WEB-INF\classes\cards”下,用javacNameCard.java編譯生成NameCard.class,該文件將存儲在cards包中,即cards子文件夾中。當JavaBean完成后,為了測試JavaBean的功能,可以在bean類中臨時增加main方法,借用main()方法來調試beanJavaBean的主要應用是將JavaBean應用于JSP頁面中計算機網(wǎng)絡原理、技術及應用6.4JSP技術JSP的運行環(huán)境JSP的語法結構JSP中的數(shù)據(jù)類型及其轉換JSP內(nèi)置對象在JSP中使用JavaBeanJSP中的文件與文件夾操作JSP中的參數(shù)傳遞方法計算機網(wǎng)絡原理、技術及應用什么是JSP?什么是JSP?使用Servlet開發(fā)服務端中間層邏輯,實在是太復雜了。為此,Sun公司于1999年推出JSP(JavaServerPages)技術。JSP是一種Java平臺技術,它是在傳統(tǒng)的HTML文檔(*.htm,*.html)中加入Java腳本程序(Scriptlet)和JSP標記來構成的,它包裝了JavaServlet系統(tǒng)界面,用戶可以在JSP頁面上直接書寫Java代碼,這樣就大大簡化了Java和Servlet的使用難度。作為一種服務器腳本語言,JSP是在編譯成Servlet后才能實際運行。當用戶瀏覽.jsp網(wǎng)頁時,首先在服務器端執(zhí)行.jsp文檔中服務端代碼,然后把執(zhí)行結果傳送到客戶端瀏覽器,基本上與瀏覽器無關。計算機網(wǎng)絡原理、技術及應用JSP的運行環(huán)境運行與開發(fā)環(huán)境安裝Java環(huán)境安裝JavaVM(JRE),Tomcat需要JavaVM的支持。安裝Tomcat應用服務器。Apache服務器可以根據(jù)需要安裝Apache服務器。計算機網(wǎng)絡原理、技術及應用建立一個JSP程序的測試站點建立測試站點的主目錄修改Tomcat的默認設置將Tomcat默認的Web服務將端口號為8080改為80。定義虛擬目錄增加新Web應用的上下文<Contextpath="/myjsp"docBase="d:\MyJSP\"debug="0"reloadable="true"privileged="true"/>運行jsp程序/myjsp/1.jsp。計算機網(wǎng)絡原理、技術及應用JSP的語法結構JSP元素JSP文檔是通過在HTML文檔中加入Java腳本程序構成的。Java腳本程序代碼用“<%”和“%>”標記括起來JSP元素的類型腳本元素規(guī)范JSP中所使用的Java代碼指令元素針對JSP引擎控制轉譯后的Servlet的整個結構動作元素主要連接到用到的組件(如JavaBeans和Plugin),另外它還可以控制JSP引擎的行為。計算機網(wǎng)絡原理、技術及應用JSP指令概念JSP指令是JSP的引擎。他們不直接產(chǎn)生任何可視的輸出,只是指示引擎如何處理JSP頁面中的內(nèi)容。JSP指令由<%@…%>標記,一般形式是:<%@指令名屬性1=“屬性值”屬性2=“屬性值”...屬性n=“屬性值”%>控制JSP引擎的行為。主要的兩種指令是page和include計算機網(wǎng)絡原理、技術及應用Page指令一般形式<%@page
[language="java"]
[extends="package.class"]
[import="{package.class|package.*},..."]
[session="true|false"]
[buffer="none|8kb]
[autoFlush="true|false"]
[isThreadSafe="true|false"]
[info="text"]
[errorPage="relativeURL"]
[contentType="mimeType[;charset=characterSet]"|
"text/html;charset=ISO-8859-1"]
[isErrorPage="true|false"]
%>
可選項language屬性,所使用的腳本語言。例如,<%@pagelanguage=“Java”%>。import屬性,腳本元素中使用的類,與Java中的import聲明作用相同,應是類的全名,或者類所在的包。例如:<%@pageimport="java.util.Date"%><%@pageimport="java.io.*"%>(java.io包中的所有類在本頁中都可以使用)計算機網(wǎng)絡原理、技術及應用Page指令(續(xù)1)可選項session屬性,是否使用session對象。errorPage屬性,設置異常處理網(wǎng)頁。IsErrorPage屬性,當前網(wǎng)頁是否是另一個JSP網(wǎng)頁的異常處理網(wǎng)頁。contentType屬性,輸出到客戶端的MIME類型和字符集。默認的字符集是ISO-8859-1。例如,使用中文字符集:<%@pagecontentType="gb2312"%>計算機網(wǎng)絡原理、技術及應用Page指令舉例可以在幾乎所有的JSP頁面頂部找到指令page,使用page指令(atpage)可以定義網(wǎng)頁的處理方式,如到何處尋找Java類支持等。例如:<%@pageimport="java.util.Date"%><%@pageerrorPage="errorPage.jsp"%>(當出現(xiàn)錯誤時的錯誤處理網(wǎng)頁)<%@pagesession="true"%>計算機網(wǎng)絡原理、技術及應用include指令概念在JSP網(wǎng)頁中包含其他文件的指令,它是在JSP引擎將它轉譯成Servlet時產(chǎn)生作用的指令一般形式<%@includefile="插入文件的url"%>被包含進的文件必須符合JSP的語法,應是靜態(tài)文本、指令元素、腳本元素和動作元素。計算機網(wǎng)絡原理、技術及應用變量聲明概念JSP的聲明用于定義頁面級的變量,如果代碼太多的話,最好寫入一個單獨的Java類中。聲明由<%!…%>定義。必須通過分號來結束變量聲明,同時任何內(nèi)容必須是有效的Java語句,例如:<%!inti=0;%>。注意,聲明后面的分號不能省略。計算機網(wǎng)絡原理、技術及應用表達式概念表達式是常量、變量、函數(shù)、運算符、括號連接而成的式子。在程序設計中,通過表達式完成對數(shù)據(jù)的運算,以及為變量賦值。在JSP文檔中,可以將表達式的結果直接輸出到頁面中。一般形式是:<%=表達式%>。舉例<%=i%>(輸出變量i的值)<%="Hello"%>(輸出字符串常量)計算機網(wǎng)絡原理、技術及應用代碼段/腳本片段JSP代碼段或腳本片段包含在“<%…%>”標記對內(nèi)舉例<%for(inti=1;i<=4;i++){%><h<%=i%>>你好</h<%=i%>><%}%>計算機網(wǎng)絡原理、技術及應用注釋在文檔中加入HTML注釋,用戶可以通過查看頁面源代碼來看到這些注釋的內(nèi)容。如果不想讓用戶看到注釋內(nèi)容,應將其嵌入到<%--…--%>標記對中,一般形式是:<%--注釋內(nèi)容--%>計算機網(wǎng)絡原理、技術及應用舉例編寫一個jsp文檔,顯示網(wǎng)頁的訪問次數(shù)首先定義一個統(tǒng)計訪問次數(shù)的文檔,文檔名為mycount.jsp<%!privateintaccessCount=0;%><tableborder="0"width="100%"height="60"bgcolor="#FFFF00"><tr><tdwidth="20%"height="53">主機名:<%=request.getRemoteHost()%></td><tdwidth="20%"height="53">訪問次數(shù):<%=++accessCount%></td><tdwidth="60%"height="53">當前時間:<%=newDate()%></td></tr></table>計算機網(wǎng)絡原理、技術及應用舉例(續(xù))定義一個jsp頁面,包含上述文件,輸出一個隨機數(shù),mypage.jsp文檔內(nèi)容如下:<%@pageimport="java.util.*"%><html><head><title>JSP中的文件包含</title></head><body><%!RandomRdmNumber=newRandom();%><%@includefile="mycount.jsp"%><%out.println(RdmNumber.nextInt(100));//輸出100以內(nèi)的隨機整數(shù)%></body></html>計算機網(wǎng)絡原理、技術及應用JSP中的數(shù)據(jù)類型及其轉換整數(shù)類型和字符串類型的轉換字符串類型和和日期型數(shù)據(jù)的轉換字符串類型和字符串數(shù)組類型的轉換數(shù)組類型和集合類計算機網(wǎng)絡原理、技術及應用整數(shù)類型和字符串類型的轉換將字串String類型轉換成整數(shù)int類型通過Integer類可以將字符串轉化為某種進制的整數(shù)數(shù)據(jù),一般形式是:inti=Integer.parseInt([String]);或inti=Integer.parseInt([String],[intradix]);或inti=Integer.valueOf(my_str).intValue();將整數(shù)int類型數(shù)據(jù)轉換成字串String類型數(shù)據(jù)Strings=String.valueOf(i);或Strings=Integer.toString(i);或Strings=""+i;對于Double,F(xiàn)loat,Long類型數(shù)據(jù)和字符串類型之間的轉換方法大同小異longln=java.lang.Long.parseFloat(“123.5”);,或floatf=Float.valueOf("123.5").floatValue()。計算機網(wǎng)絡原理、技術及應用字符串類型和和日期型數(shù)據(jù)的轉換在數(shù)據(jù)庫中,通常有Datetime類型的數(shù)據(jù)字段。在MySQL或MSSQL中,可以直接把字符串插入日期類型的列中,SQL會隱式做格式轉換,將字符串類型轉為日期類型。但是,字符串的格式必須是yyyy-mm-dd或yyyymmdd形式,例如:2008-12-10或20081210。計算機網(wǎng)絡原理、技術及應用字符串類型和字符串數(shù)組類型的轉換在JSP頁面中,一種常用的操作就是將一個字符串split成一個字符串數(shù)組,或者將一個字符串數(shù)組合并成一個字符串。例如,將string=“aa,bb,cc”轉換成Vector數(shù)據(jù)類型,分別包含三個字符串元素“aa”、“bb”、“cc”。StringstrData="aa,bb,cc";Stringstrlist[]=newString[20];strlist=strData.split(",");計算機網(wǎng)絡原理、技術及應用數(shù)組類型和集合類數(shù)組類型使用數(shù)組避免了同步、額外的方法調用和不必要的重新分配空間所帶來的消耗。Vector類當數(shù)組中元素的個數(shù)不確定時,可以使用java.util.Vector類Vector集合只能存放java.lang.object對象,不能用于存放基本類型數(shù)據(jù)ArrayList類ArrayList和Vector都是使用數(shù)組來控制集合中的對象,當從一個指定的位置(通過索引)查找數(shù)據(jù)或是在集合的末尾增加、移除一個元素時,兩者所花費的時間相同。Vector是同步的,它的一些方法保證了Vector中的對象是線程安全的。ArrayList則是異步的,因此ArrayList中的對象并不是線程安全的。因為同步的要求會影響執(zhí)行的效率,所以如果不需要線程安全的集合那么使用ArrayList是一個很好的選擇,這樣可以避免由于同步帶來的不必要的性能開銷。計算機網(wǎng)絡原理、技術及應用JSP內(nèi)置對象什么是內(nèi)置對象內(nèi)置對象是由開發(fā)環(huán)境所定義的具有特定功能的對象,在JSP腳本段中,用戶可以直接使用。常用內(nèi)置對象request對象response對象out對象session對象application對象config對象page對象exception對象計算機網(wǎng)絡原理、技術及應用request對象功能通過該對象可以獲取客戶端的輸入信息。可以得到請求的參數(shù)、請求類型(GET、POST、HEAD等)以及HTTPheaders(cookies、referer等)等信息。這是一個javax.servlet.HttpServletRequest對象。常用的方法getCookie()、getHeaders()、getAttribute()、getMethod()、getParameter()和getParameterName()等例如:<%Stringname=request.getParameter("userName");out.println(name);%>計算機網(wǎng)絡原理、技術及應用response對象功能向客戶端返回請求。返回請求信息時,輸出流要進行緩存。它是一個javax.servlet.HttpServletResponse對象。常用方法addCookie()、addHeader()、sendError()和sendRedirect()等計算機網(wǎng)絡原理、技術及應用out對象功能將結果輸出到客戶端。常用方法print(),println(),newLine()例如:<%out.println("Hello");%>計算機網(wǎng)絡原理、技術及應用session對象功能Session對象是JSP為每一個會話而建立的個人對象,可以存儲及提供個別用戶獨享的永久或半永久信息。它是一個與request相關的javax.servlet.http.HttpServletSession對象。會話(session)是指一個用戶和Web服務器之間的一次鏈接。當用戶使用瀏覽器登錄到Web服務器、并初次瀏覽一個JSP應用的某個網(wǎng)頁開始、直到用戶離開網(wǎng)站或超時未繼續(xù)瀏覽該網(wǎng)站網(wǎng)頁為止,之間的瀏覽操作算作一次會話(Session)。計算機網(wǎng)絡原理、技術及應用application對象功能可存儲并提供給一組JSP應用所有用戶的共享信息,有效范圍為構成該JSP應用的所有JSP頁面。是一個javax.servlet.ServletContext對象會話(session)是指一個用戶和Web服務器之間的一次鏈接。當用戶使用瀏覽器登錄到Web服務器、并初次瀏覽一個JSP應用的某個網(wǎng)頁開始、直到用戶離開網(wǎng)站或超時未繼續(xù)瀏覽該網(wǎng)站網(wǎng)頁為止,之間的瀏覽操作算作一次會話(Session)。計算機網(wǎng)絡原理、技術及應用其他對象config對象用于傳遞在Servlet程序初始化時所需的信息。pageContext對象該對象提供了對頁面上的所有對象以及命名空間的訪問,用于管理網(wǎng)頁屬性。page對象當前頁面,相當于Java中的this。exception對象錯誤處理對象,用于處理捕捉到的異常。計算機網(wǎng)絡原理、技術及應用舉例—用戶登錄頁面編寫一個jsp文檔,完成一個登錄界面,輸入用戶名和密碼,如果輸入guest則轉移到一個默認的首頁,如果不輸入用戶名,則重新回到該頁,直到輸入正確的用戶名和密碼,此時重定向到合法的網(wǎng)頁。計算機網(wǎng)絡原理、技術及應用舉例—用戶登錄頁面(代碼)<!--login.jsp--><html><head><title>login</title></head><body><%StringuserName=request.getParameter("userName");if(userName!=null){if(userName.equals("guest"))response.sendRedirect("/");elseresponse.sendRedirect("/");}%>計算機網(wǎng)絡原理、技術及應用舉例—用戶登錄頁面(代碼)<tableborder="0"cellpadding="0"width="100%"height="100%"><tr><tdwidth="100%"> <tableborder=2cellspacing=0cellpadding=0width=300align=center> <formaction="login.jsp"method="GET"> <trheight=50> <tdalign=centerstyle="font-size:20;font-weight:bold;color:#000075">用戶登錄</td> </tr> <tr><tdstyle="font-size:16">用戶名<inputtype=textname=userName></td></tr> <tr><tdstyle="font-size:16">密碼<inputtype=textname=userPassword></td></tr> <tr><tdalign=center><inputtype="submit"value=登錄></td></tr> </form> </table></td></tr></table></body></html>計算機網(wǎng)絡原理、技術及應用舉例—顯示在線人數(shù)編寫一個統(tǒng)計會話人數(shù)的java類,代碼內(nèi)容如下(文檔名SessionCounter.java)packagepub;importjavax.servlet.*;importjavax.servlet.http.*;publicclassSessionCounterimplementsHttpSessionListener{privatestaticintactiveSessions=0;publicvoidsessionCreated(HttpSessionEventse){activeSessions++;}publicvoidsessionDestroyed(HttpSessionEventse){if(activeSessions>0)activeSessions--;}publicstaticintgetActiveSessions(){returnactiveSessions;}}計算機網(wǎng)絡原理、技術及應用舉例—顯示在線人數(shù)(續(xù)1)編寫調用該SessionCounter.java的jsp文檔,文檔名myonline.jsp,內(nèi)容如下:<html><head><metahttp-equiv="refresh"content="60"></head><body><%@pageimport="pub.SessionCounter"%>在線人數(shù):<%=SessionCounter.getActiveSessions()%></body></html>計算機網(wǎng)絡原理、技術及應用舉例—顯示在線人數(shù)(續(xù)2)修改d:\MyJSP\WEB-INF\web.xml,在<web-app>…</web-app>內(nèi),添加如下內(nèi)容:<!--Listeners--><listener><listener-class>pub.SessionCounter</listener-class></listener>計算機網(wǎng)絡原理、技術及應用在JSP中使用JavaBean使用JavaBean可以更好的將業(yè)務邏輯代碼和JSP的HTML標記進行分離,便于系統(tǒng)的維護一般形式<jsp:useBeanid="實例名"class="包.類"scope="page|request|session|application"/>參數(shù)id指定一個JavaBean類的實例名,如果這個實例已經(jīng)存在,將直接引用這個實例;如果這個實例不存在,將通過后面class參數(shù)中的定義新建一個類的實例。Class參數(shù)設置存儲JavaBean的路徑和類的名稱,例如class=“cards.NameCard”,則表明要使用Web應用根目錄中“WEB-INF\classes\cards”下的一個NameCard.class文件,其中cards是包名,NameCard為JavaBean對應的Java類名。Scope用于定義id這個實例存在的范圍計算機網(wǎng)絡原理、技術及應用舉例--JavaBean應用舉例一個NameCard的JavaBean代碼如下(文件名NameCard.java):packagecards;publicclassNameCard{StringName,Address;publicNameCard()//默認構造函數(shù){this.Name="John";this.Address="No,Road,City,Country";}publicvoidsetName(StringmyName){this.Name=myName;}publicStringgetName(){return(this.Name);}publicvoidsetAddress(StringmyAddress){this.Address=myAddress;}publicStringgetAddress(){return(this.Address);}}計算機網(wǎng)絡原理、技術及應用舉例--JavaBean應用舉例(續(xù))使用JavaBean:<%@pagelanguage="java"%><jsp:useBeanid="mycard"class="cards.NameCard"scope="application"/><html><body><%mycard.setName("HaoXW");mycard.setAddress("No.27ShandaSouthernRoad,Jinan,China");%>姓名:<%=mycard.getName()%><br>地址:<%=mycard.getAddress()%><br></body></html>計算機網(wǎng)絡原理、技術及應用JSP中的文件與文件夾操作在基于Web的作業(yè)管理系統(tǒng)中,在Web應用的根目錄下,包含一個homeworkdata文件夾,該文件中包含了不同的子文件夾,每一個子文件夾對應一門課程,課程子文件夾中又包含不同的子文件夾,每個子文件夾對應一位任課教師,在每個任課教師子文件夾中,有一系列子文件夾,每個子文件夾保存一名同學的課程作業(yè)。計算機網(wǎng)絡原理、技術及應用JSP中的文件與文件夾操作--示例代碼1<%@pagecontentType="text/html;charset=GBK"%><%@pageimport="java.sql.*"%><%@pageimport="java.io.*"%><jsp:useBeanid="workE"scope="page"class="pub.connedu"/><jsp:useBeanid="workhomework"scope="page"class="pub.connhomework"/><jsp:useBeanid="workc"scope="page"class="pub.ISOtoGb2312"/><%!ResultSetrs1=null,rs2=null;Stringcoursedm="dxjc";//課程代碼Stringteacher_account="ll01",teacher_accountx="ll02";//教師帳號Stringstudentid="20080102016";//學生賬號Stringpath1="",path2="";//文件(夾)物理絕對路徑String[]temp=null;//存放當前目錄中所有的文件和子目錄的絕對路徑名字的字符串String[]dlist=null,flist=null;//分別存放子文件夾和文件的集合%>計算機網(wǎng)絡原理、技術及應用JSP中的文件與文件夾操作--示例代碼2<%path1=request.getRealPath("");//取Web應用的根目錄path1+="\\homeworkdata\\"+coursedm;//將進行文件復制的目錄path1+="\\"+teacher_accountx;path1+="\\"+studentid+"\\";Filed1=newFile(path1);//建立代表Sub目錄的File對象,并得到它的一個引用
path2=request.getRealPath("");path2+="\\homeworkdata\\"+coursedm;//將path1目錄下的所有文件復制到path2中path2+="\\"+teacher_account;//和path1不同的地方,即對應的教師子目錄不同path2+="\\"+studentid+"\\";Filed2=newFile(path2);if(!d2.exists()){d2.mkdirs();//新建path2對應的子目錄out.println("newafolder"+path2+"<br>");}計算機網(wǎng)絡原理、技術及應用JSP中的文件與文件夾操作--示例代碼3//將path1目錄下的所有文件復制到path2中FileoldFile,newFile,tempFile;if(d1.exists())//檢查path1對應的子目錄是否存在
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版農(nóng)業(yè)技術推廣合同3篇
- 2024年度房地產(chǎn)交易新?lián):贤侗?篇
- 2024版家政服務合同范本6篇
- 上海市寶山區(qū)淞浦中學2025屆高三第二次聯(lián)考數(shù)學試卷含解析
- 2025屆湖南省長望瀏寧四縣高考仿真卷數(shù)學試卷含解析
- 2024版集團公司內(nèi)部合作項目借款合同范本:共贏發(fā)展3篇
- 安徽省“江南十?!?025屆高三最后一卷英語試卷含解析
- 2024年度房地產(chǎn)銷售合同范本2篇
- 2024年協(xié)議離婚原因調查與法律咨詢合同2篇
- 2024年度教師薪酬福利與勞動合同2篇
- 分包商質量和安全和進度管理
- 我不是藥神電影賞析
- 2024年四川遂寧開祺資產(chǎn)管理有限公司招聘筆試參考題庫含答案解析
- 有機肥料及微生物肥料行業(yè)的環(huán)境影響與生態(tài)保護
- 提高檢驗標本合格率的品管圈課件
- 幼兒園教育的德育培養(yǎng)
- 順豐SHL在線測評題庫
- 貴州省黔東南州2022-2023學年八年級上學期期末文化水平測試數(shù)學試卷(含答案)
- 快消品招商方案
- 河南省洛陽市2022-2023學年高一上學期期末語文試卷(含答案)
- 切割機安全培訓
評論
0/150
提交評論