Javaweb程序設計教案_第1頁
Javaweb程序設計教案_第2頁
Javaweb程序設計教案_第3頁
Javaweb程序設計教案_第4頁
Javaweb程序設計教案_第5頁
已閱讀5頁,還剩75頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Javaweb程序設計教案授課班級:11軟件1班授課教師:廖清遠湖南商務職業(yè)技術學院第1次課:項目一在網(wǎng)頁中輸出系統(tǒng)時間授課班級:11軟件1授課時間:教學地點:學時數(shù):2目的:技能目標:能進行JSP運行環(huán)境的搭建并能進行最簡單JSP程序的編寫及運行。。知識目標:了解JSP基本知識;掌握JSP運行環(huán)境;掌握最簡單JSP程序的編寫及運行方法。教學重點、難點:JSP運行環(huán)境;JSP語言的程序結(jié)構(gòu);教學方法:程序演示:讓學生對JSP程序獲取感性認識,激發(fā)興趣;實踐模仿;教學過程設計:1.討論,提問:了解學生對JSP的認識程度,激發(fā)學習熱情;2.任務一搭建JSP的運行環(huán)境;3.任務二輸出系統(tǒng)的當前時間;4.綜合案例;5.拓展練習小結(jié)及學生存在的問題:授課內(nèi)容:任務一搭建JSP運行環(huán)境(1)JDK下載、安裝及配置①下載及安裝JDK②配置JDK運行環(huán)境配置JDK運行環(huán)境主要有2個方面的工作,一是增加命令尋找路徑,修改系統(tǒng)變量path,增加指向Java常用工具安裝的路徑:例如C:\ProgramFiles\Java\jdk_03\bin;二是設置環(huán)境變量ClassPath,指向Java安裝的路徑下的庫文件所在目錄。(2)安裝TomcatTomcat提供了可執(zhí)行程序的安裝程序,可以從其官方網(wǎng)站免費下載。下載地址為:.html。下載后雙擊安裝程序采用默認安裝目錄及參數(shù)安裝直至結(jié)束。任務二輸出系統(tǒng)的當前時間程序?qū)崿F(xiàn)<%@pagecontentType="text/html;charset=Gb2312"import="java.util.*"%><HTML><BODY>現(xiàn)在時間是:<%out.print(newDate());%></BODY></HTML>相關知識1.Tomcat的目錄結(jié)構(gòu)2.建立自已的web目錄①在服務器上創(chuàng)建自已的目錄:創(chuàng)建一目錄D:\test\1。②配置web目錄:用記事本打開..\Tomcat6.0\conf目錄下的文件server.xml,在該文件末尾,有一標識符“</Host>”,在該標識符前面添加以下語句:<Contextpath="/1"docBase="d:/test/1"reloadable="true"></Context>3.修改服務端口號在默認情況下,Tomcat服務器的服務端口號是“8080”。假設希望將服務器端口號8080改為8090。使用記事本或其它文本編輯器打開server.xml文件,找到如下行:<Connectorport="8080"protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"/>課堂實驗:Tomcat服務器的安裝及配置1.相關知識點(1)安裝的Tomcat版本為:tomcat-。(2)執(zhí)行Tomcat安裝根目錄中bin文件夾中的startup.bat或tomcat6.exe來啟動Tomcat服務器。(3)JSP頁面文件保存到Tomcat服務器的某個Web服務目錄中,以便遠程的客戶使用瀏覽器訪問該Tomcat服務器上的JSP頁面。2.實驗目的本實驗的目的是讓學生掌握怎樣設置Web服務目錄、怎樣訪問Web服務目錄下的JSP頁面、怎樣修改Tomcat服務器的端口號。3.實驗要求(1)將下載的apache-tomcat-.zip解壓到硬盤某個分區(qū),比如D。(2)在硬盤分區(qū)D下新建一個目錄,名字為:student,將student設置為Web服務目錄,并為該Web服務目錄指定名字為friend的虛擬目錄。打開Tomcat安裝目錄中conf文件夾里的server.xml文件,找到出現(xiàn)</Host>的部分(server.xml文件尾部)。然后在</Host>的前面加入:<Contextpath="/friend"docBase="d:/student"debug="0"reloadable="true"/>(3)修改端口號為9999。在server.xml文件中找到修改端口號部分,將端口號修改為9999。(4)啟動Tomcat服務器(如果已經(jīng)啟動,必須關閉Tomcat服務器,并重新啟動)。(5)用文本編輯器編寫一個簡單的JSP頁面yes.jsp,并保存到Web服務目錄student中。(6)用瀏覽器訪問Web服務目錄student中的JSP頁面yes.jsp。4.JSP頁面效果示例yes.jsp運行效果根據(jù)實驗要求,您必須在瀏覽器的地址欄中輸入:Tomcat服務器的IP地址和端口號,并通過虛擬目錄frirend訪問Web服務目錄student下的JSP頁面。如果瀏覽器和Tomcat服務器駐留在同一計算機上,IP地址可以是。如圖1-1所示。綜合實訓:我們訪問一些網(wǎng)站時,有的注冊網(wǎng)站會出現(xiàn)問候語,問候語根據(jù)不同的時間顯示不同的問好內(nèi)容。設計一個程序,根據(jù)系統(tǒng)時間段對用戶輸出“上午好!”、“下午好!”、“晚上好!”這樣的問候語。參考答案:<%@pagecontentType="text/html;charset=Gb2312"import="java.util.*"%><%Dated=newDate();intt;t=d.getHours();if(t>=6&&t<=12)out.print("上午好!");if(t>12&&t<=18)out.print("下午好!");if(t>18&&t<24||t>=0&&t<6)out.print("晚上好!");%>拓展練習編寫一個簡單的JSP程序,在屏幕上輸出“我開始學JSP程序設計了!”。試編寫一個JSP程序,輸出表達式1+2+3+。。。+300的和。試編寫一個JSP程序,輸出50以內(nèi)所有的素數(shù)。課后記:1、tomcat6.0環(huán)境變量配置JAVA_HOME=C:\ProgramFiles\Java\jdk_10path=%JAVA_HOME%\binCATALINA_HOME:C:\ProgramFiles\ApacheSoftwareFoundation\Tomcat6.0classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\lib\servlet-api.jar;2、然后運行start.bat,即可啟動服務器,鍵入:8080查看服務器3、更改tomcat-users.xml,添加管理用戶及權限<tomcat-users><rolerolename="manager-gui"/><userusername="admin"password="admin"roles="manager-gui"/></tomcat-users>授課班級:11軟件1授課時間:教學地點:學時數(shù):4目的:技能目標:1.能利用HTML標記進行網(wǎng)頁內(nèi)容的格式控制,能把表單提交的數(shù)據(jù)接收并處理。知識目標:1.掌握常用的HTML標記及基本的CSS樣式用法;2.熟悉JSP腳本的表示;3.掌握out、request內(nèi)置對象的用法教學重點、難點:JSP腳本的標示Request內(nèi)置對象的用法;教學方法:1.程序演示;2.實踐模仿;3.項目案例法教學過程設計:1.依托項目介紹;2.任務一設計輸入個人信息的表單;3.課堂練習4.任務二獲取個人信息表單數(shù)據(jù)并顯示;5.課堂練習6.綜合實訓;7.拓展練習小結(jié)及學生存在的問題:第2-3次課:項目二表單數(shù)據(jù)處理授課內(nèi)容:依托任務在一個需要注冊的網(wǎng)站中,必須定義一個表單,并在表單中輸入個人的相關信息后提交給服務器,由服務器把接收的數(shù)據(jù)進行處理后再把結(jié)果發(fā)送給用戶。我們把整個從輸入到服務器接收到數(shù)據(jù)并處理處理看作一個任務任務一設計輸入個人信息的表單個人的信息包括:姓名、性別、籍貫、年齡、愛好、備注信息。輸入的界面:核心代碼:<formid="form1"name="form1"method="post"action="accept.jsp">//表單定義<inputtype="submit"name="button"value="提交"/>相關知識:1.常用的HTML標記表格標記表單標記框架CSS樣式課堂練習一:1設計如圖所示的表單,注意各組件的規(guī)范命名任務二獲取個人信息表單數(shù)據(jù)并顯示當客戶輸入信息后,我們?nèi)绾问占畔?,如何把信息反饋到用戶?lt;%request.setCharacterEncoding("gb2312");Stringxm=request.getParameter("xm");if(xm==null)xm="";Stringxb=request.getParameter("xb");if(xb==null)xb="";Stringjg=request.getParameter("jg");if(jg==null)jg="";Stringah[]=request.getParameterValues("ah");Stringbz=request.getParameter("bz");if(bz==null)bz="";out.println("姓名:"+xm+"<br>");out.println("性別:"+xb+"<br>");out.println("愛好:");Strings="";if(ah!=null)for(inti=0;i<ah.length;i++)s=s+ah[i]+"/";out.println(s+"<br>");out.println("備注:"+bz);%>相關知識:JPS腳本元素、out內(nèi)置對象、request內(nèi)置對象1.JSP腳本元素:聲明元素、腳本小程序元素、表達式元素(1)JSP聲明元素①聲明元素的基本語法格式<%!declaration(s)%>在<%!%>標記內(nèi)定義類成員變量、成員方法和內(nèi)部類等,其作用為整個JSP頁面。②用聲明元素聲明類成員變量例如:<%!intx1=100,a[]=newint[6];staticdoublex2;Stringstr=null;%>③用聲明元素聲明成員方法例如:<%!//定義adder()方法計算1+2+...+nintadder(intn){intsum=0;for(inti=1;i<=n;i++)sum=sum+i;returnsum;}%>(2)腳本小程序腳本小程序就是一段Java代碼。在JSP頁面中聲明腳本小程序的基本語法格式為:<%scriptlet%>(3)表達式元素表達式元素的基本功能是運行一條Java表達式,如果表達式有計算結(jié)果,則把結(jié)果顯示在表達式位置上。表達式元素的基本語法格式如下:<%=expression%>案例見書40頁out內(nèi)置對象Out對象主要用來向客戶端輸出各種數(shù)據(jù)類型的內(nèi)容,并且管理應用服務器上的輸出緩沖區(qū),其基類是JspWriter。Out對象的主要方法為:①out.print(數(shù)據(jù))或out.println(數(shù)據(jù)):將數(shù)據(jù)輸出到文檔中。②out.newLine():輸出一個換行符號。③out.clearBuffer():清除緩沖區(qū)里的數(shù)據(jù),并且把數(shù)據(jù)寫到客戶端去。④out.clear():清除緩沖區(qū)里的數(shù)據(jù),但不把數(shù)據(jù)寫到客戶端去。⑤out.flush():輸出緩沖區(qū)里的數(shù)據(jù)。out.flush()方法也會清除緩沖區(qū)中的數(shù)據(jù),但是此方法會先將之前緩沖區(qū)中的數(shù)據(jù)輸出至客戶端,然后再清除緩沖區(qū)中的數(shù)據(jù)。⑥out.close():關閉輸出流,從而可以強制終止當前頁面的剩余部分向瀏覽器輸出。案例見書41頁3.Request內(nèi)置對象Request內(nèi)置對象代表了客戶端的請求信息,主要用于接受客戶端通過HTTP協(xié)議傳送給服務器端的數(shù)據(jù)。在客戶端的請求中如果有參數(shù),則該對象就有一個參數(shù)列表。它通常是HttpServletRequest的子類,其作用域就是一次Request請求。Request對象包括很多方法,主要有:①getAttribute(Stringname):返回name指定的屬性值,若不存在指定的屬性,就返回null。②getAttributeNames():返回request對象所有屬性的名字,結(jié)果集是一個Enumeration(枚舉)類的實例。③getHeaderNames():返回所有requestheader的名字,結(jié)果集是一個Enumeration(枚舉)類的實例。④getHeaders(Stringname):返回指定名字的requestheader的所有值,結(jié)果集是一個Enumeration(枚舉)類的實例。⑤getMethod():返回客戶端向服務器端傳送數(shù)據(jù)的方法,一般方法有GET、POST、PUT等類型。⑥getParameter(Stringname):以字符串的形式返回客戶端傳來的某一個請求參數(shù)的值,該參數(shù)名由name指定。當傳遞給此方法的參數(shù)名沒有實際參數(shù)及之對應時,返回null。⑦getparameterNames():返回客戶端傳送給服務器端的所有的參數(shù)名,結(jié)果集是一個Enumeration(枚舉)類的實例。當傳遞給此方法的參數(shù)名沒有實際參數(shù)及之對應時,返回null。⑧getParameterValues(Stringname):以字符串數(shù)組的形式返回指定參數(shù)所有值。⑨getRequestURI():獲得發(fā)出請求字符串的客戶端地址。⑩getServletPath():獲得客戶端所請求的腳本文件的文件路徑。setAttribute(Stringname,Java.lang.Objecto):設定名字為name的request參數(shù)值,該值由Object類型的o指定。getServerName():獲得服務器的名字,如果沒有設定服務器名,則返回服務器IP地址。setCharacterEncoding(Stringname):定義返回客房信息的編碼標準。如果已經(jīng)用response.setContentType()定義了字符集,則調(diào)用此方法將重新設置字符集。setAttribute(Stringname,Objectobj):把一個屬性對象以指定的名字寫入request作用范圍中。getCookies(

):返回保存到客戶端的cookie對象,返回值是一個cookie數(shù)組。如無cookie返回,則返回null。案例見書43頁課堂練習二:1繼續(xù)完成課堂練習一,完成各按鈕的功能綜合實訓實訓目的:通過本實訓內(nèi)容使學生能較好第熟悉HTML標記的用法,掌握out、request對象的基本用法,并能編寫一般的動態(tài)網(wǎng)頁程序。個人信息調(diào)查網(wǎng)頁設計實訓情景設置:設計一個個人信息調(diào)查網(wǎng)頁,網(wǎng)頁中需要輸入的個人信息有姓名、年齡、學歷、E-mail、愛好、性別、說明信息輸入個人信息和所喜歡的球隊信息并顯示實訓情景設置:設計一個某足球網(wǎng)站用戶信息調(diào)查的網(wǎng)頁,用戶需要提交自己的姓名、性別、所喜歡的球隊等信息并在另一個網(wǎng)頁中顯示出來。知識點:1解決request亂碼問題:定義一個類,用來解決亂碼格式packagetest.filter;importjava.io.UnsupportedEncodingException;//stringstr:iso8859-1格式的字符串publicclassFilter{publicstaticStringfilter(Stringstr,Stringbianma) {try{returnnewString(str.getBytes("ISO-8859-1"),bianma); }catch(UnsupportedEncodingExceptione){ e.printStackTrace();returnnull; } }publicstaticStringfilter(Stringstr) {returnfilter(str,"utf-8"); }}獲取復選框的值String[]values=request.getParameterValues("love");for(inti=0;i<values.length;i++)out.println(values[i]);拓展練習:1.設計如圖所示形式的表單并完成按鈕的功能。設計一個用戶信息注冊網(wǎng)頁,注冊界面如下圖所示,并完成按鈕功能。編寫一個程序,統(tǒng)計訪問該網(wǎng)頁的人數(shù)。編寫一個網(wǎng)頁,界面中輸出幾個單選題目,根據(jù)用戶提交的答案輸出選擇正確題目的個數(shù),網(wǎng)頁界面的形式如下圖:課后記:第4-6次課:項目三購物網(wǎng)站的設計授課班級:11軟件1授課時間:教學地點:學時數(shù):6目的:技能目標:1.能使用Dreamweaver設計網(wǎng)頁,能實現(xiàn)頁面的跳轉(zhuǎn),能實現(xiàn)信息在網(wǎng)頁間的共享。知識目標:1.掌握常用的HTML標記;2.掌握JSP、include指令的用法;3.掌握response、session、cookie、application等內(nèi)置對象的用法。教學重點、難點:1.JSP、include指令的用法2.response、session、cookie、application等內(nèi)置對象的用法;教學方法:1.程序演示;2.實踐模仿;3.項目案例法教學過程設計:1.依托項目介紹;2.任務一制作商品展示網(wǎng)頁;3.任務二記錄選購商品信息;4.課堂練習5.任務三頁面間的跳轉(zhuǎn)實現(xiàn)6.課堂練習7.綜合實訓;8.拓展練習小結(jié)及學生存在的問題:授課內(nèi)容:依托任務在網(wǎng)上購物網(wǎng)站中,有很多的商品陳列于一個網(wǎng)頁中,而眾多的商品又要由若干網(wǎng)頁去展示,用戶購物時常需從分布在不同網(wǎng)頁中的眾多商品中挑選出自己喜愛的商品,這就需要我們設計的網(wǎng)站具備記憶用戶在不同網(wǎng)頁選購了哪些商品的能力。我們把購物網(wǎng)站的記憶功能當作一個任務任務一制作商品展示網(wǎng)頁設計一個商品展示網(wǎng)頁,網(wǎng)頁的內(nèi)容通常包含商品的圖片、名稱、單價等,如圖。分析:制作如圖的展示頁面,可以借助dreamweaver工具。任務二記錄選購商品信息我們要把選中的商品信息臨時記錄下來,并送到另外的網(wǎng)頁中進行處理,可以借助request、session、cookie、application對象對信息進行存放。也就是說商品信息記錄的載體是不同種類的對象。為使問題簡化,我們可假定在bag.jsp中記錄下了商品的名稱及單價,而在total.jsp中顯示用戶已購商品信息并計算出總價格。bag.jsp中的代碼如下:<%@pagecontentType="text/html;charset=gb2312"%><body><%Strings="";Stringsp1="電視機"+",3500";//假設得到了購買的第一種商品信息s=s+sp1;Stringsp2=",洗衣機"+",2800";//假設得到了購買的第二種商品信息s=s+sp2;Stringsp3=",電動車"+",1600";//假設得到了購買的第二種商品信息s=s+sp3;session.setAttribute("thing",s);%><p>已購買的商品如下:</p><tablewidth="200"border="1"><tr><td>電視機</td><td>2500</td></tr><tr><td>洗衣機</td><td>2800</td></tr><tr><td>電動車</td><td>1600</td></tr></table><p><ahref="total.jsp">我要結(jié)算</a></p></body></html>total.jsp文件中的代碼如下:<%@pagecontentType="text/html;charset=gb2312"%><html><body><%Strings=(String)session.getAttribute("thing");floattotal=0;StringTokenizerfenxi=newStringTokenizer(s,",");//用字符串分析器分解出子字符串while(fenxi.hasMoreTokens()){Stringstr1=fenxi.nextToken();out.print(str1+"");Stringstr2=fenxi.nextToken();out.print(str2+"<br>");total=total+Float.parseFloat(str2);}out.print("商品的總價格是"+total);%></body></html>相關知識:1.session對象session是一種服務器個別處理及記錄用戶端上網(wǎng)使用者信息的技術。session用來保存每個用戶信息,跟蹤每個用戶的操作狀態(tài)。session對象從使用者進入系統(tǒng)后由系統(tǒng)自動創(chuàng)建,當注銷退出系統(tǒng)時session對象自動銷毀。我們把session對象從創(chuàng)建到銷毀所經(jīng)歷的時間,稱為一個session通信周期。session對象的常用方法為:①getAttribute(Stringname):獲得指定名字的屬性,如果該屬性不存在,將會返回null。②getAttributeNames():返回session對象中存儲的每個屬性對象,結(jié)果集是一個Enumeration類的實例。③setAttribute(Stringname,java.lang.Objectvalue):設定指定名字的屬性值,并且把它存儲在session對象中。④isNew():判斷目前session是否為新的session,若是則返回true,否則返回false。⑤getId():返回session對象在服務器端的編號。每生成一個session對象,服務器都會給它一個編號,并且該編號不會重復,這樣服務器才能根據(jù)編號來識別session,并且正確的處理某一特定的session及其提供的服務。⑥getCreationTime():返回session對象被創(chuàng)建的時間,單位為毫秒。⑦getLastAccessedTime():返回當前session對象最后一次被操作的時間,時間的單位為毫秒。⑧getMaxInactiveInterval():獲取session對象的生存時間,時間的單位為秒。⑨setMaxInactiveInterval(intinterval):設置session的有效時間(也叫超時時間),時間的單位為秒。⑩removeAttribute(Stringname):刪除指定的屬性(包含屬性名、屬性值)。如果在有效時間內(nèi),用戶做出了新的請求,則服務器就會將其看作一個新的用戶,此時,服務器將創(chuàng)建一個新的session,舊的session信息將會丟失。例:通過session對象獲得頁面的訪問次數(shù)<%intNum=0;Objectobj=session.getAttribute("Num");//從session對象取得Numif(obj==null){session.setAttribute("Num",String.valueOf(Num));//設定session對象的Num變量的值}else{Num=Integer.parseInt(obj.toString());//取得session對象中的Num變量Num+=1;//來訪人數(shù)加1session.setAttribute("Num",String.valueOf(Num));//設定session對象的Num變量的值}%>session中的Num的值為:<%=Num%>2.cookie對象Cookie,或稱Cookies,在Web技術中指Web服務器暫存在客戶端瀏覽器內(nèi)存或硬盤文件中的少量數(shù)據(jù)。Web服務器通過HTTP報頭來獲得客戶端中的cookie信息。在JSP中使用cookie的基本過程為:①在服務器端生成cookie對象,把待保存信息寫入cookie對象中;②必要時設置cookie對象的生命期;③把cookie對象傳給客戶端瀏覽器保存;④服務器端程序需要cookie信息時,用代碼讀取cookie信息。javax.servlet.http.Cookie類用來生成一個cookie對象,這個類中常用的方法有:①構(gòu)造方法:Cookie(Stringname,Stringvalue):第一個形參是cookie數(shù)據(jù)的變量名,第二個形參是待保存的數(shù)據(jù),字符串類型。②setMaxAge(intexpiry):這個方法定義cookie對象的生命期,形參是生命時間數(shù),單位秒。如果生命周期為負整數(shù),表示這個cookie對象是臨時的,不要保存在硬盤文件中,關閉IE瀏覽器后cookie數(shù)據(jù)自動丟失。如果生命期為零,表示刪除這個cookie。默認值為-1。Cookie的生命期定義要在cookie對象傳回客戶端前進行。用publicintgetMaxAge()方法可讀取cookie對象的生命時間。③getName():返回當前cookie對象的變量名。④getValue():返回當前cookie對象的值。例:借助cookie把用戶名寫到客戶端<%Cookieuser=newCookie("login","tom");user.setMaxAge(60*60*24*10);response.addCookie(user);%>例:把保存到客戶端的cookie值逐一輸出Cookie[]c=request.getCookies();if(c!=null) {for(inti=0;i<c.length;i++) Out.print(c[i].getName()+”=”+c[i].getValue()+”<BR>”); else Out.print(“沒有返回cookie”);}3.application對象applicaton負責提供應用程序在服務器中運行的全局信息,當應用程序在服務器中啟動時該對象就一直存在,直到服務器關閉為止,所有客戶共享這個內(nèi)置的application對象。applicaton可用來在所有用戶間共享信息,并可以在Web應用程序運行期間持久地保持數(shù)據(jù)。application對象常用的方法:①getAttributeNames():返回當前上下文中所有可用的appliaction作用范圍變量名,并存儲在枚舉型對象中。②getAttribute(java.lang.Stringname):從application作用范圍中讀取指定名字的屬性值,返回的屬性值是Object類型,一般要進行強制類型轉(zhuǎn)換,還原其原本數(shù)據(jù)類型。如果指定的屬性值對象不存在,則返回null。③getInitParameterNames():返回初始化參數(shù)的變量名,并存儲在枚舉型對象中,如果沒有初始化參數(shù),則返回null。④getInitParameter(java.lang.Stringname):方法的形參是初始化參數(shù)的變量名,方法返回指定變量名的初始化參數(shù)值。⑤setAttribute(java.lang.Stringname,java.lang.Objectobject):把一個屬性寫入application作用范圍。第一個形參name是屬性名,第二個形參object是屬性值,它是一個Java對象。如果屬性值object為null,則相當于刪除一個屬性名為name的屬性。如果容器中已經(jīng)存在指定名字的屬性,寫入操作會用當前的屬性值替換原有的屬性值。⑥r(nóng)emoveAttribute(java.lang.Stringname):從Servlet容器中刪除指定名字的屬性。形參是屬性名,字符串形式。例:如何防止用戶通過刷新網(wǎng)頁來提高網(wǎng)頁的訪問次數(shù)<%if(application.getAttribute("counter")==null)//用戶第1次訪問.計數(shù)器設置為1{application.setAttribute("counter",newInteger(1));}else{if(session.isNew())//只有新用戶計數(shù)器才增1{inttimes=Integer.parseInt(application.getAttribute("counter").toString());application.setAttribute("counter",newInteger(times+1));}}%>用戶的訪問次數(shù)為:<%=application.getAttribute("counter")%>課堂練習一1.在一個網(wǎng)頁中設置request的username屬性值為tom,password的屬性值為123。在另一個網(wǎng)頁把當前request中的username、password屬性值輸出。任務三頁面間的跳轉(zhuǎn)實現(xiàn)用戶在購物時在一個網(wǎng)頁中選中自己的商品后可能還要到其他網(wǎng)頁繼續(xù)選購商品,這就涉及網(wǎng)頁間跳轉(zhuǎn)的問題。跳轉(zhuǎn)的方式有:通過request對象、request對象、超級鏈接實現(xiàn)網(wǎng)頁的跳轉(zhuǎn)。通過response對象實現(xiàn)網(wǎng)頁跳轉(zhuǎn)客戶訪問服務器使用的是HTTP請求包,系統(tǒng)將HTTP請求包封裝為request對象。服務器響應客戶時,即向客戶發(fā)送信息時,使用的是HTTP響應包

,系統(tǒng)將HTTP響應包封裝為response對象。在JSP頁面中,可以使用response對象的方法動態(tài)控制響應方式,向客戶端發(fā)送數(shù)據(jù)。response對象的用法如下:①setCharacterEncoding(Stringcharset):定義返回客戶端信息的編碼標準。如果已經(jīng)用response.setContentType()定義了字符集,則調(diào)用此方法將重新設置字符集。②setContentType(Stringtype):用來設定網(wǎng)頁的文件格式及編碼方式,及page指令的contentType屬性功能相同。格式為:response.setContentType("text/html;charset=GB2312");③setHeader(Stringname,Stringvalue):第一個形參為報頭名,第二個形參是報頭值。HTTP報頭中有一個名為“Refresh”的響應報頭,它的作用是使IE瀏覽器在若干秒后自動刷新當前網(wǎng)頁或跳轉(zhuǎn)至指定的URL資源。這個報頭的語法為:response.setHeader(“Refresh”,“秒數(shù);url=目標地址”);④sendRedirect(Stringurl):方法用來重新定向新網(wǎng)頁。⑤addCookie(Cookiecookie):把cookie傳送到客戶端.例:在網(wǎng)頁中實時顯示系統(tǒng)的當前時間:<%out.print(""+newDate());response.setHeader("refresh","1");%>例:在登陸網(wǎng)頁中輸入用戶名后登陸,如果在目標網(wǎng)頁發(fā)現(xiàn)接收的用戶名為空,則返回登陸頁;如果不為空,則輸出:XXX;歡迎您來到本網(wǎng)站。2.通過request對象實現(xiàn)網(wǎng)頁間跳轉(zhuǎn)兩個Servlet程序間要利用request作用范圍變量來傳遞數(shù)據(jù)時,要用轉(zhuǎn)發(fā)跳轉(zhuǎn)操作實現(xiàn)從第一個Servlet程序A跳轉(zhuǎn)到第二個Servlet程序B,跳轉(zhuǎn)時,程序A中的request和response隱含對象會被自動轉(zhuǎn)發(fā)給程序B。request轉(zhuǎn)發(fā)器(RequestDispatcher)的作用是獲得目標網(wǎng)頁的轉(zhuǎn)發(fā)器,通過轉(zhuǎn)發(fā)器將當前Servlet程序的request和response對象轉(zhuǎn)發(fā)給目標網(wǎng)頁,并跳轉(zhuǎn)至目標網(wǎng)頁上運行程序,這樣,目標網(wǎng)頁就可通過request對象讀取上一網(wǎng)頁傳遞給它的request屬性。獲得目標網(wǎng)頁的用法為:RequestDispatchertarget=request.getRequestDispatcher(Stringpath)形參是當前Web應用目標網(wǎng)頁的URI,可以使用相對路徑或絕對路徑??梢酝ㄟ^RequestDispatcher對象調(diào)用forward()方法實現(xiàn)網(wǎng)頁的跳轉(zhuǎn),用法為:target.forward(request,response);該用法能夠把當前Servlet程序的request和response隱含對象轉(zhuǎn)發(fā)給目標網(wǎng)頁,并跳轉(zhuǎn)至目標網(wǎng)頁運行代碼。形參是當前Servlet程序的request和response隱含對象。例利用request實現(xiàn)數(shù)據(jù)在兩個網(wǎng)頁間傳遞數(shù)據(jù)Source.jsp<%request.setAttribute("name","tom");request.setAttribute("sex","male");RequestDispatchertarget=request.getRequestDispatcher("target.jsp");target.forward(request,response);%>Target.jsp:<%out.print("從source2.jsp中傳來的數(shù)據(jù)為:<br>");Strings1=(String)request.getAttribute("name");Strings2=(String)request.getAttribute("sex");out.print("name="+s1+"<br>");out.print("sex="+s2);%>3.通過超級鏈接實現(xiàn)網(wǎng)頁的跳轉(zhuǎn)在網(wǎng)頁中通過超級鏈接進行網(wǎng)頁的跳轉(zhuǎn)我們都不默生,但在做靜態(tài)網(wǎng)站時超級鏈接都是不帶參數(shù)的,但在JSP中可以通過超級鏈接借助參數(shù)把一些數(shù)據(jù)從一個網(wǎng)頁傳遞到另一個網(wǎng)頁。通過超級鏈接傳遞參數(shù)的格式為:<ahref=”鏈接目標”參數(shù)名=值>鏈接文本</a>當需要通過超級鏈接傳遞多個參數(shù)時參數(shù)之間用“&”連接。格式為:<ahref=”鏈接目標”參數(shù)名=值&參數(shù)名=值>鏈接文本</a>案例見書67頁知識拓展在JSP中的指令有page、include和taglib,其中page指令描述及頁面相關的指示信息,include指令用于包含文件,taglib指令用于指示JSP頁面所使用的標記庫。page指令page指令定義JSP文件中的全局屬性,描述及頁面相關的指示信息。例如:<%@pageimport="java.util.Date"%>page指令也可以在出現(xiàn)Java運行錯誤時,指示將用戶導向何處。例如:<%@pageerrorPage="errorPage.jsp"%>page指令的一般語法格式如下:<%@page[language="java"][import="{package.class|package.*},..."][session="true|false"][buffer="none|8kb|sizekb"][autoFlush="true|false"][errorPage="relativeURL"][contentType="mimeType[;charset=characterSet]"|"text/html;charset=ISO-8859-1"][isErrorPage="true|false"]%>2.include指令include指令的作用是包含另一個文件,其語法相當簡單,使用格式如下:<%@includefile="文件名"%>在這個指令中應該使用JSP的相對路徑。被include指令所包含的文件必須符合JSP語法,可以是靜態(tài)的HTML文件、腳本元素、指令元素和動作元素。在將網(wǎng)頁編譯為Servlet時,JSP引擎將對所包含的文件進行語法分析。如果包含的是JSP文件,則就會執(zhí)行這個被包含的JSP文件中的代碼。如果只是用include指令來包含一個靜態(tài)文件,則這個包含的文件所執(zhí)行的結(jié)果將會插入到JSP文件中include指令所在的位置。一旦執(zhí)行完了包含文件,則主JSP文件的過程將會恢復,繼續(xù)執(zhí)行下一行。綜合實訓:實訓目的:熟悉內(nèi)置對象的用法,掌握信息在網(wǎng)頁間傳遞的方法,并對網(wǎng)上購物的實現(xiàn)建立基本的思路利用Cookie實現(xiàn)用戶登陸一般的網(wǎng)址都具備登陸功能,每次進入網(wǎng)站都需要輸入用戶名和口令,但利用cookie可實現(xiàn)在最近的某個時間段登陸記憶功能,即用戶直接跳過登陸頁進入網(wǎng)站。核心代碼:Cookie[]cookies=request.getCookies(); //è?μ?Cookiesêy×éif(cookies!=null) {for(inti=0;i<cookies.length;i++) { Cookieck=cookies[i]; if("username".equals(ck.getName())) { username=ck.getValue(); cf=true;//éè??±ê??cf?atrue£??′ó??§o?·¨ } }}網(wǎng)上購物信息暫存的實現(xiàn)在購物網(wǎng)站中,列出商品信息以及購物提示。當用戶選中某商品的購買按鈕時,就把該商品加入到購物車中,在購物車中既可以看到訂購的商品,還可以繼續(xù)購物或清空購物車。商品列表及購物車列表分別如下圖:拓展練習在一個網(wǎng)頁中設置session的username屬性值為tom,password的屬性值為123,設置session的有效時間為5秒,利用response對象在本網(wǎng)頁經(jīng)過6秒時間后自動轉(zhuǎn)到另一個網(wǎng)頁,查看session中的username、password屬性值。然后把6秒改為3秒,看看結(jié)果有什么不同。設計一個下拉列表,列表中提供了幾個網(wǎng)站,當用戶選中了某個網(wǎng)站并單擊其后的“GO”按鈕則轉(zhuǎn)至相應的網(wǎng)站。實驗三請編寫一個頁面(exam.jsp),頁面界面如下,單擊提交按紐,進入answer.jsp頁面請編寫一個頁面(answer.jsp),頁面界面如下:課后記:第7-8次課:項目四用戶輸入信息的封裝及使用授課班級:11軟件1授課時間:教學地點:學時數(shù):6目的:技能目標:1.能熟練定義JavaBean,能正確部署及使用JavaBean。知識目標:1.掌握JavaBean的定義;2.掌握JavaBean的部署;3.掌握通過JSP動作標記引用JavaBean教學重點、難點:JavaBean的定義及使用;JavaBean的部署教學方法:1.程序演示;2.實踐模仿;3.項目案例法教學過程設計:1.依托項目介紹;2.任務一建立JavaBean;3.任務二使用JavaBean;4.課堂練習;5.綜合實訓;6.拓展練習小結(jié)及學生存在的問題:授課內(nèi)容:依托任務在動態(tài)網(wǎng)站中,經(jīng)常出現(xiàn)一些諸如用戶信息調(diào)查的網(wǎng)頁,用戶根據(jù)提示把調(diào)查信息錄入后提交給服務器處理。在這個任務中我們現(xiàn)在要做的是完成把表單中的用戶輸入信息作為一個整體即封裝在一個JavaBean中供服務器使用任務一任務一建立JavaBean建立一個標準JavaBean。該JavaBean能記錄學生的姓名、編號、身高、體重。具體見教師代碼操作相關知識:1.JavaBean概述JavaBean是一個軟件組件,被設計成可以在不同的環(huán)境里重復使用。Bean的功能沒有限制。2.編寫JavaBean①定義的JavaBean類必須是public類。②如果JavaBean的屬性xxx,則應通過setXxx()方法設置xxx的值,通過getXxx()方法取得屬性xxx的值。3.JavaBean的部署上面的JavaBean經(jīng)過編譯后,生成一個mypackage包,在該包中生成了字節(jié)碼文件Student.class。為了能在JSP中使用該mypackage,我們應把該JavaBean及所屬的包放置到ROOT\WEB-INF\classes文件夾中任務二使用JavaBean1.在JSP頁面中導入要使用的bean類如果要在JSP頁面中訪問某個bean,則必須在JSP頁面中導入相應的JavaBean類。如,訪問學生JavaBean,則在JSP頁面中使用下面的語句導入學生Student類:<%@pageimport="mypackage.*"%>2.通過動作標記獲得一個JavaBean對象使用動作標記useBean創(chuàng)建一個JavaBean,供JSP頁面訪問。以學生JavaBean為例,創(chuàng)建一個變量名為sut,有效范圍是page的JavaBean。語句格式如下:<jsp:useBeanclass="mypackage.Student"id="stu"scope="page"></jsp:useBean>如果使用的JavaBean不帶參數(shù),則上述兩行可合并為一行。如下;<jsp:useBeanclass="mypackage.Student"id="stu"scope="page"/>3.使用JSP動作標記訪問Bean屬性(1)讀取Bean屬性的值該標記的作用是獲得bean屬性值,并將這個值以字符串方式在客戶端顯示。使用該標記之前,必須使用useBean標記創(chuàng)建一個bean。下面是getProperty標記的語法格式:<jsp:getPropertyname="bean的名字"property="bean的屬性名"/>其中,name取值是bean的名字,用來指定要獲取哪個bean的變量名,它的值必須是useBean標記中id屬性的值,property取值是bean的屬性名。(2)設置Bean屬性的值該標記的作用是設置bean屬性值。使用該標記之前,必須使用useBean標記創(chuàng)建一個bean。下面是setProperty標記的語法格式:<jsp:setPropertyname="bean的名字"property="屬性名字"value=屬性值/>其中,name取值是Bean的名字,用來指定被使用的Bean,它的值必須是useBean標記中id屬性的值,property取值是Bean的屬性名,將value的取值賦給Bean類的屬性。使用setProperty動作標簽,有三種方式給bean屬性賦值:①使用字符串或表達式直接給bean屬性賦值這種賦值方式要求表達式的值類型及Bean屬性的值類型相同,其語句格式如下:<jsp:setPropertyname="Bean的名字"property="Bean的屬性"value="<%expression%>"/>②使用表單參數(shù)給Bean屬性賦值這種賦值方式要求表單中提供參數(shù)的數(shù)據(jù)組件名字及Bean的成員變量名字相同,其語句格式如下:<jsp:setPropertyname="Bean的名字"property="*"/>該標簽不用具體指定每個Bean屬性名字,系統(tǒng)會自動根據(jù)表單中數(shù)據(jù)組件名字及Bean的成員變量名字一一對應賦值,這種賦值方式也稱為表單的反射機制。注意,這種方式,在標簽中沒有使用屬性value。③使用表單參數(shù)給Bean屬性賦值的另一種方式這種方式及第二種賦值方式基本類似,但區(qū)別是用這種方式為Bean屬性賦值時不要求表單數(shù)據(jù)控件名稱及Bean屬性名稱一致。這種賦值格式為:<jsp:setPropertyname="Bean的名字"property="Bean的屬性"param="參數(shù)名字"/>Bean的屬性是指Bean類中的成員變量名,參數(shù)名字是指表單中的數(shù)據(jù)組件名字,這樣可把指定數(shù)據(jù)組件的值賦給指定的屬性。練習:1.在jsp網(wǎng)頁中使用學生JavaBean<%@pagecontentType="text/html;charset=gb2312"import="mypackage.*"%><html><body><jsp:useBeanclass="mypackage.Student"id="stu"scope="page"/><%stu.setName("Tom");stu.setNumber(1);stu.setHeight(1.76);stu.setWeight(145);out.print("name:"+stu.getName()+"<br>");out.print("name:"+stu.getNumber()+"<br>");out.print("name:"+stu.getHeight()+"<br>");out.print("name:"+stu.getWeight()+"<br>");%></body></html>2通過表達式給JavaBean屬性賦值。<%@pagecontentType="text/html;charset=gb2312"%><%@pageimport="mypackage.*"%><HTML><BODY><jsp:useBeanid="goods"class="mypackage.Goods"scope="page"/><jsp:setPropertyname="goods"property="name"value="汽車"/><jsp:setPropertyname="goods"property="goodsNumber"value="1201"/><jsp:setPropertyname="goods"property="price"value="98000"/><BR>商品的名稱:<jsp:getPropertyname="goods"property="name"/><BR>商品的代號:<jsp:getPropertyname="goods"property="goodsNumber"/><BR>商品的價格:<jsp:getPropertyname="goods"property="price"/></BODY></HTML>3利用表單反射機制使用JavaBean<%@pagecontentType="text/html;charset=gb2312"%><%@pageimport="mypackage.*"%><jsp:useBeanid="goods"class="mypackage.Goods"scope="page"/><HTML><BODY><%request.setCharacterEncoding("Gb2312");%><FORMaction=""Method="post">輸入商品的名稱:<Inputtype=textname="name"><BR>輸入商品的代號:<Inputtype=textname="goodsNumber"><BR>輸入商品的價格:<Inputtype=textname="price"><Inputtype=submitvalue="提交"></FORM><P>提交表單才能設置商品的信息<jsp:setPropertyname="goods"property="*"/><BR>商品的名稱:<jsp:getPropertyname="goods"property="name"/><BR>商品的代號:<jsp:getPropertyname="goods"property="goodsNumber"/><BR>商品的價格:<jsp:getPropertyname="goods"property="price"/></BODY></HTML>4表單組件名及JavaBean屬性名不同時的賦值<%@pagecontentType="text/html;charset=gb2312"%><%@pageimport="mypackage.*"%><jsp:useBeanid="goods"class="mypackage.Goods"scope="page"/><HTML><BODY><%request.setCharacterEncoding("Gb2312");%>商品信息:<BR><FORMaction=""Method="post">輸入商品的名稱:<Inputtype=textname="mc"><BR>輸入商品的代號:<Inputtype=textname="bh"><BR>輸入商品的價格:<Inputtype=textname="jg"><Inputtype=submitvalue="提交"></FORM><jsp:setPropertyname="goods"property="name"param="mc"/><jsp:setPropertyname="goods"property="goodsNumber"param="bh"/><jsp:setPropertyname="goods"property="price"param="jg"/><P>提交表單才能設置商品的信息<BR><BR>商品的名稱:<jsp:getPropertyname="goods"property="name"/><BR>商品的代號:<jsp:getPropertyname="goods"property="goodsNumber"/><BR>商品的價格:<jsp:getPropertyname="goods"property="price"/></BODY></HTML>綜合實訓:實訓目的:更好地掌握JavaBean的編寫及使用,同時進一步加深把邏輯功能的實現(xiàn)定義成JavaBean,可以更好地實現(xiàn)Java腳本及HTML標記的分離。利益javaBean實現(xiàn)四則運算在一個網(wǎng)頁中輸入兩個數(shù),選擇進行的算術運算后在網(wǎng)頁中輸出運算結(jié)果。利用JavaBean實現(xiàn)購物車網(wǎng)上購物時,可以根據(jù)需要向購物車中添加商品,也可隨時移除商品。拓展練習:1.定義一個圓類,定義圓的半徑屬性為r,在類中有設置、獲取半徑的方法,也有獲取圓的周長及面積的方法。定義JSP網(wǎng)頁,在網(wǎng)頁中設置圓的半徑,并輸出圓的周長及面積。2.定義一個JavaBean類,用于描述描述三角形,其中的屬性有三個邊長;在類中有判斷三角形形狀的方法,該方法返回代表三角形形狀的整型數(shù),如0、1、2分別代表一般三角形、等腰三角形、等邊三角形。編寫JSP網(wǎng)頁,在網(wǎng)頁中借助表單輸入三角形三條邊的邊長,并在網(wǎng)頁中輸出三角形的形狀。3.編寫一個JavaBean,該JavaBean及一個屬性n,屬性方法有sum(),該sum的作用是返回1+2+。。。+n的和,編寫一個jsp網(wǎng)頁輸入要求累加和的數(shù),提交后輸出累加和。4.定義一個JavaBean,該JavaBean中有記錄學生姓名、學號、身高、體重的屬性。定義一個網(wǎng)頁,在網(wǎng)頁中輸入姓名、學號、身高、體重值后這些數(shù)據(jù)將自動保存在JavaBean中,并利用JavaBean輸出數(shù)據(jù)。第9-11次課:項目五網(wǎng)站中的民意調(diào)查設計授課班級:11軟件1授課時間:教學地點:學時數(shù):6目的:技能目標:1.能利用File類處理文件及目錄,能用、等類向文件讀寫數(shù)據(jù)。知識目標:1.掌握File類的基本用法;2.理解數(shù)據(jù)流的概念;3.掌握利用字節(jié)流、字符流讀寫文件的用法;4.掌握利用Bean組件進行文件上傳及下載教學重點、難點:字節(jié)流、字符流讀寫文件的用法;利用Bean組件進行文件上傳及下載教學方法:1.程序演示;2.實踐模仿;3.項目案例法教學過程設計:1.依托項目介紹;2.任務一設計輸入個人信息的表單;3.課堂練習4.任務二獲取個人信息表單數(shù)據(jù)并顯示;5.課堂練習6.綜合實訓;7.拓展練習小結(jié)及學生存在的問題:授課內(nèi)容:依托任務在許多網(wǎng)站中加入了民意調(diào)查功能,比如調(diào)查支持某觀點的人有多少、反對某觀點的人有多少、不愿發(fā)表觀點的有多少。我們的任務是通過文件隨時保存用戶對觀點的投票情況,當然這樣的民意調(diào)查也比較多地采用一些圖片來吸引瀏覽者的目光,因此應具備文件上傳功能。任務一文件及目錄操作在對某觀點的民意調(diào)查的統(tǒng)計網(wǎng)站中,只要用戶表明了自己的立場,則應馬上把持此觀點的人數(shù)在原人數(shù)基礎上加1然后保存到文件中。1.創(chuàng)建File類對象創(chuàng)建一個File對象的構(gòu)造方法有3個:);directoryPath,String);f,String);其中,是文件名字,directoryPath是文件的路徑,f是指定成一個文件的目錄。使用)創(chuàng)建文件時,該文件被認為是及當前應用程序在同一目錄中。2.使用File對象獲取文件本身的一些信息在File類中有很多方法可以獲得文件本身的一些信息,常用的獲取文件本身信息的方法如下:①StringgetName():獲取文件的名字。②booleancanRead():判斷文件是否是可讀的。③booleancanWrite():判斷文件是否可被寫入。④booleanexits():判斷文件是否存在。⑤longlength():獲取文件的長度(單位是字節(jié))。⑥StringgetAbsolutePath():獲取文件的絕對路徑。⑦booleanisHidden():判斷文件是否是隱藏文件。⑧booleanisFile():判斷文件是否是一個正常文件,而不是目錄。⑨booleanisDirectroy():判斷文件是否是一個目錄。3.使用File對象創(chuàng)建目錄booleanmkdir():創(chuàng)建一個目錄,如果創(chuàng)建成功返回true,否則返回false(如果該目錄已經(jīng)存在將返回false)。4.使用File對象列出目錄中的文件如果File對象是一個目錄,則該對象可以調(diào)用下述方法列出該目錄下的文件和子目錄:①String[]list():用字符串形式返回目錄下的全部文件。②File[]listFiles():用File對象形式返回目錄下的全部文件。我們有時需要列出目錄下指定類型的文件,比如.java、.txt等擴展名的文件??梢允褂肍ile類的下述兩個方法,列出指定類型的文件:①String[]list(obj):該方法用字符串形式返回目錄下的指定類型的所有文件。②File[]listFiles(obj):該方法用File對象返回目錄下的指定類型所有文件。5.文件的創(chuàng)建及刪除當使用File類創(chuàng)建一個文件對象后,例如File("c:\\myletter","letter.txt");如果c:\myletter目錄中沒有名字為letter.txt文件,文件對象f調(diào)用方法createNewFile()可以在c:\myletter目錄中建立一個名字為letter.txt的文件。文件對象調(diào)用方法delete()可以刪除當前文件。案例1:在e:/test目錄下,創(chuàng)建一個new.txt文件,輸出該文件的屬性<%newFile("E:/test","new.txt");f1.createNewFile();//創(chuàng)建文件new.txt%><p>文件new.txt存在嗎:<%=f1.exists()%><BR><P>new.txt的父目錄是:<%=f1.getParent()%><BR><P>文件new.txt是可讀的嗎<%=f1.canRead()%><BR><P>文件new.txt的長度:<%=f1.length()%>字節(jié)<BR>案例2:列出C盤根目錄下的所有子目錄和文件<%newFile("c:/");[]=dir.listFiles();%><BR>目錄列表:<%for(inti=0;i<){if(file[i].isDirectory())out.print("<BR>"+file[i].toString());}%><P>文件列表:<%for(inti=0;i<){if(file[i].isFile())out.print("<BR>"+file[i].toString());}%>任務二讀寫文件數(shù)據(jù)當用戶發(fā)表自己的觀點后,網(wǎng)站會把用戶的觀點也寫入到文件中。1.文件字節(jié)輸入流類稱為文件字節(jié)輸入流類。文件字節(jié)輸入流按字節(jié)讀取文件中的數(shù)據(jù)。為了創(chuàng)建類的對象,可以使用下列構(gòu)造方法:①(Stringname)②()第一個構(gòu)造方法使用給定的文件名name創(chuàng)建一個對象。第二個構(gòu)造器使用File對象創(chuàng)建對象。構(gòu)造方法參數(shù)指定的文件稱作輸入流的源,輸入流通過使用read()方法從輸入流讀出源中的數(shù)據(jù)。輸入流的唯一目的是提供通往數(shù)據(jù)源的通道,程序可以通過這個通道讀取數(shù)據(jù),read方法給程序提供一個從輸入流中讀取數(shù)據(jù)的基本方法。read方法的格式如下:intread();read方法從輸入流中順序讀取單個字節(jié)的數(shù)據(jù)。該方法返回字節(jié)(0~255之間的一個整數(shù)),讀取位置到達文件末尾,則返回-1。read方法還有其它一些形式。這些形式能使程序把多個字節(jié)讀到一個字節(jié)數(shù)組中:intread(byteb[]);intread(byteb[],intoff,intlen);其中,off參數(shù)指定read方法把數(shù)據(jù)存放在字節(jié)數(shù)組b中的什么地方樣,len參數(shù)指定該方法將讀取的最大字節(jié)數(shù)。上面所示的這兩個read方法都返回實際讀取的字節(jié)個數(shù),如果它們到達輸入流的末尾,則返回-1。案例3:把e:/test/text.txt文件內(nèi)容讀出顯示在網(wǎng)頁上<%rf=new("e:/test/test.txt");intn=512;bytebuffer[]=newbyte[n];while((rf.read(buffer,0,n)!=-1)&&(n>0))//讀取輸入流{out.print(newString(buffer));}rf.close();%>

2.類及類相對應的類是類。提供了基本的文件寫入能力。類是OutputStream的子類,稱為文件字節(jié)輸出流。文件字節(jié)輸出流按字節(jié)將數(shù)據(jù)寫入到文件中。為了創(chuàng)建類的對象,可以使用下列構(gòu)造方法:(Stringname)()第一個構(gòu)造方法使用給定的文件名name創(chuàng)建一個對象。第二個構(gòu)造方法使用File對象創(chuàng)建對象。構(gòu)造方法參數(shù)指定的文件稱作輸出流的目的地,輸出流通過使用write()方法把數(shù)據(jù)寫入輸出流到達目的地。對象可以使用write方法把字節(jié)發(fā)送給輸出流。write的用法如下:publicvoidwrite(byteb[]):寫b.length個字節(jié)到輸出流。publicvoidwrite(byteb[],intoff,intlen):從給定字節(jié)數(shù)組中起始于偏移量off處寫len個字節(jié)到輸出流,參數(shù)b是存放了數(shù)據(jù)的字節(jié)數(shù)組。流順序地寫文件,只要不關閉流,每次調(diào)用writer方法就順序地向文件寫入內(nèi)容,直到流被關閉。如果輸出流要寫入數(shù)據(jù)的文件已經(jīng)存在,該文件中的數(shù)據(jù)內(nèi)容就會被刷新;如果要寫入數(shù)據(jù)的文件不存在,該文件就會被建立。案例4:向某文件寫入字符串<%intcount;Stringstr="thisisatest.";bytebuffer[]=str.getBytes();//將字符串轉(zhuǎn)換成字節(jié)數(shù)據(jù)count=buffer.length;wf=new("e:\\test\\Write1.txt");wf.write(buffer,0,count);wf.close();out.print("寫入成功!");%>3.文件字符輸入流為了創(chuàng)建類的對象,可以使用下列構(gòu)造方法:(Stringname)()第一個構(gòu)造方法使用給定的文件名name創(chuàng)建一個對象。第二個構(gòu)造方法使用File對象創(chuàng)建對象。構(gòu)造方法參數(shù)指定的文件稱作輸入流的源,輸入流通過使用read()方法從輸入流讀出源中的數(shù)據(jù)。以下是read方法的功能解釋:intread():輸入流調(diào)用該方法從源中讀取一個字符,該方法返回一個整數(shù)(0~65535之間的一個整數(shù),Unicode字符值),如果未讀出字符就返回-1。intread(charb[]):輸入流調(diào)用該方法從源中讀取b.length個字符到字符數(shù)組b中,返回實際讀取的字符數(shù)目。如果到達文件的末尾,則返回-1。intread(charb[],intoff,intlen):輸入流調(diào)用該方法從源中讀取len個字符并存放到字符數(shù)組b中,返回實際讀取的字符數(shù)目。如果到達文件的末尾,則返回-1。其中,off參數(shù)指定read方法從符數(shù)組b中的什么地方存放數(shù)據(jù)。案例5:利用字符輸入流讀取文件內(nèi)容<%rf=new("e:/test/test2.txt");charch[]=newchar[20];intn;while((rf.read(ch,0,20)!=-1))//讀取輸入流{out.print(newString(ch));}rf.close();%>4.文件字符輸出流提供了基本的文件寫入能力。類是Writer的子類,稱為文件字符輸出流。文件字符輸出流按字符將數(shù)據(jù)寫入到文件中。為了創(chuàng)建類的對象,可以使用下列構(gòu)造方法:(Stringname)()第一個構(gòu)造方法使用給定的文件名name創(chuàng)建一個對象。第二個構(gòu)造方法使用File對象創(chuàng)建對象。構(gòu)造方法參數(shù)指定的文件稱作輸出流的目的地,輸出流通過使用write()方法把字符數(shù)據(jù)寫入輸出流到達目的地。對象可以使用write方法把字符數(shù)據(jù)寫入輸出流。write的用法如下:publicvoidwrite(charb[]):寫b.length個字符到輸出流。publicvoid

write(charb[],intoff,intlen):從給定字符數(shù)組中起始于偏移量off處寫len個字符到輸出流,參數(shù)b是存放了數(shù)據(jù)的字符數(shù)組。voidwrite(Stringstr):把字符串中的全部字符寫入到輸出流。voidwrite(Stringstr,intoff,intlen):從字符串str中起始于偏移量off處寫len個字符到輸出流。案例6:通過字符輸出流向某文件寫數(shù)據(jù)<%intcount;Stringstr="JSP程序設計案例教程";wf=new("e:\\test\\Write2.txt");wf.write(str);wf.close();out.print("寫入成功!");%>5.BufferedReader類BufferedReader類創(chuàng)建的對象稱為緩沖輸入流,該輸入流的指向必須是一個Reader流,稱作BufferedReader流的底層流,底層流負責將數(shù)據(jù)讀入緩沖區(qū),BufferedReader流的源就是這個緩沖區(qū),緩沖輸入流再從緩沖區(qū)中讀取數(shù)據(jù)。BufferedReader的構(gòu)造方法是:BufferedReader(Readerin)BufferedReader流能夠讀取文本行,方法是readLine(),當從文件中讀不到數(shù)據(jù)時返回null。案例7:利用輸入緩沖流讀取文件的數(shù)據(jù)<%rf=new("e:/test/test2.txt");BufferedReaderbuf=n

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論