JSP程序設計課件_第1頁
JSP程序設計課件_第2頁
JSP程序設計課件_第3頁
JSP程序設計課件_第4頁
JSP程序設計課件_第5頁
已閱讀5頁,還剩190頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

JSP程序設計本課程主要講述內容:JSP技術基礎環(huán)境配置HTML基礎JSP語法JSP內置對象JSP文件操作JSP中訪問數(shù)據(jù)庫ServletJavaBean需要具備的相關知識:數(shù)據(jù)庫基本知識網(wǎng)絡基礎知識Dreamweaver的使用Eclipse3.2Java語言(成為JSP高手必備)

本課程以實戰(zhàn)為導向。課后認真自學上述相關基礎知識。布置的思考與練習題目,盡可能課后認真上機實踐(經(jīng)濟管理學院機房已經(jīng)具備JSP環(huán)境)。如何成為一個優(yōu)秀的jsp程序員3、學習

JavaScript

學習怎么將

JavaScript在HTML中驗證輸入的Form元素。也學習

JavaScript怎么能在一

HTML

頁以內修改Form的元素。最后要求你能從一

HTML

頁內的事件中觸發(fā)

JavaScript

Function。

訓練時間:1~

2

個星期。4、學習并且理解你的Web

Server的更多細節(jié)。

熟悉Web

Server的特征,這是很重要的。

訓練時間:2

天。如何成為一個優(yōu)秀的jsp程序員5、建立你的

JSP

Server

推薦以Tomcat開始。它可以很好地運行JSP程序。當你不能在生產(chǎn)使用Tomcat時,學習盡可能多的知識以便于更好的運行程序。另外,

許多

JSP

程序員使用Tomcat。因此當你遇到一個問題時,你將容易發(fā)現(xiàn)幫助。

安裝時間:1~

2

天。6、開始學習

JSP

基本的

JSP

學習通過的步驟

1到步驟6可以完成,

然后使用

JSP

對象和腳本寫

JSP

程序來聯(lián)系。學習

JSP

的另外一個方面可以學習怎么創(chuàng)建一個分布式的應用程序。

訓練時間:4

6

個星期。如何成為一個優(yōu)秀的jsp程序員7、學習更多的

JSP

server。

沒有關于更多的

JSP

Server當然也可以運行jsp程序。然而,

許多

JSP

server都由自己特殊的特征,可以讓你更好的理解你的JSP

工程。

學習更多的Jsp

server如何處理jsp程序是有必要的。同樣也可以優(yōu)化你的

JSP

應用程序,并且使之運行得更快而不出任何問題。

訓練時間:2

7

天。

到現(xiàn)在,你已經(jīng)成為了熟練的

JSP

程序員。仍然有很多需要學習,你可以考慮擴展你的知識比如

DHTML

,

XML

,java證書,

JSP

Tag

Libraries

Servlets

,

看你想要造什么類型的網(wǎng)站而決定了。

這些訓練是JSP

的核心。你不必都學習上面所有的,

取決于你在工程中分配到什么任務和你已經(jīng)有什么知識。但是這是成功地訓練程序員的時間表。關鍵的單元是時間。平均的說,

5

個月時間確實能夠訓練一個人

(

從開始到完成

)

成為一個對jsp熟悉程序員。5

個月時間似乎很長,但要成為一個資深的WEB程序員所學的東西遠遠不止這一些。本課程涉及的軟件Java開發(fā)工具包JDK1.5Tomcat5.5.7、resin2.xDreamweaver2004MXmySQL4.x、mySQL-Front3.1Eclipse3.2其它參考書籍:1.《JSP深入編程》希望電子出版社2.《網(wǎng)絡編程語言JSP實例教程》電子工業(yè)出版社3.《JSP/HTML編程實作教程

》希望電子出版社4..《JSP程序設計指南--初級程序員的基本技能》清華大學出版社5.《JSP入門與提高》清華大學出版社

4。安裝mySQL數(shù)據(jù)庫、mySQL-front管理程序MySQL是一個精巧的SQL數(shù)據(jù)庫管理系統(tǒng)。由于它的強大功能、靈活性、以及精巧的系統(tǒng)結構,受到了廣大自由軟件愛好者甚至是商業(yè)軟件用戶的青睞,特別是與Apache結合,為建立基于數(shù)據(jù)庫的動態(tài)網(wǎng)站提供了強大動力!MySQL有瑞典的T.c.X公司負責開發(fā)和維護。MySQL是一個真正的多用戶、多線程SQL數(shù)據(jù)庫服務器。MySQL

主要目標是快速、健壯和易用。它可媲美任何昂貴的大型數(shù)據(jù)庫,但速度更快。自1996年以來,許多機構一直都在使用MySQL。MySQL建立的基礎是業(yè)已用在高要求的生產(chǎn)環(huán)境多年的一套實用例程。盡管MySQL仍在開發(fā)中,但它已經(jīng)提供一個豐富和極其有用的功能集。MySQL的官方發(fā)音是“MyEssQueEll”(不是

MY-SEQUEL

)。5。安裝Eclipse

目前為止,大多數(shù)Java?程序員都聽說過Eclipse,它正迅速成為最流行的Java編程環(huán)境。在目前所有的IDE中,Eclipse可以說是最有發(fā)展前途的產(chǎn)品之一。Eclipse最初由OTI和IBM兩家公司的IDE產(chǎn)品開發(fā)組創(chuàng)建,起始于1999年4月。目前由IBM牽頭,圍繞著Eclipse項目已經(jīng)發(fā)展成為了一個龐大的Eclipse聯(lián)盟,有150多家軟件公司參與到Eclipse項目中,其中包括Borland、Rational

Software、Red

Hat及Sybase,最近Oracle也計劃加入到Eclipse聯(lián)盟中。Eclipse是否與其他花錢的IDE一樣好?答案非常確定!對于編碼、調試、重構、單元測試等等,Eclipse可以與任何一種IDE匹敵,甚至比它們還要好。與昂貴的JBuilder2005版本相比,您可能會發(fā)現(xiàn)Eclipse對很多特性的支持都比JBuilder更好。6。下載MyEclipseEclipse插件,收費軟件。使Eclipse支持EJB、JSP、Servlet等等。功能強大!下載后安裝即可。..用戶..用戶..用戶...WEB服務器數(shù)據(jù)庫服務器ODBC/JDBC數(shù)據(jù)請求返回數(shù)據(jù)數(shù)據(jù)請求返回數(shù)據(jù)Lan連接HTTP連接2.2JSP技術介紹

2.2.1Web編程技術

Web編程技術隨著計算機技術的進步而不斷發(fā)展。早期的web技術主要以獲取靜態(tài)文本、信息為主。隨著互聯(lián)網(wǎng)技術的發(fā)展,靜態(tài)頁面不能適應需求,動態(tài)網(wǎng)站技術應運而生。動態(tài)網(wǎng)站特性:

后臺數(shù)據(jù)庫支持

站點信息及時更新

動態(tài)顯示效果

補充說明:靜態(tài)網(wǎng)頁是預先編寫好的HTML文件,當瀏覽器訪問時,WEB服務器將文件傳送給瀏覽器,整個過程中網(wǎng)頁內容不被改變。HTML的表單、動態(tài)GIF圖、FLASH、Applet和瀏覽器端腳本不等于動態(tài)網(wǎng)頁。動態(tài)網(wǎng)頁可以看作是預先編寫好的HTML模板文件。當瀏覽器訪問動態(tài)網(wǎng)頁時,WEB服務器根據(jù)一定的程序邏輯填寫模板,并將最終生成的內容傳送給瀏覽器。特點:適用于任何平臺、支持者眾多程序的執(zhí)行效率高擁有Java優(yōu)勢強大的服務器組件強大的數(shù)據(jù)庫支持Writeonce,runanywhere!錢途無量的JSP!提示:在國外,JSP+Servlet+J2EE已經(jīng)成為開發(fā)電子商務的主流技術。2.2JSP與主流動態(tài)網(wǎng)頁技術比較2.3JSP的運行環(huán)境2.3.1JSP運行環(huán)境需要的組件Java2軟件開發(fā)工具箱??梢栽趕un公司免費下載。JSP引擎(JSP應用服務器)。Resin、Tomcat、JRun、 JSWDK、Weblogic等等。2.3.3JSP執(zhí)行過程執(zhí)行過程:瀏覽器IETomcat2.3.4JSP程序的初步體驗一個簡單的JSP程序:<%@pagecontentType="text/html;charset=gb2312"language="java"errorPage=""%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"><title>我的第一個JSP程序</title></head><body><%out.println(“Helloworld!”);%></body></html>3.2HTML文檔的基本結構 一個基本的HTML文檔通常包含以下三對頂級標記。1.HTML標記<HTML>...</HTML>2.首部標記<HEAD>...</HEAD> 首部標記用于提供與Web頁有關的各種信息。在首部標記中,可以使用:<TITLE>和</TITLE><STYLE>和</STYLE><SCRIPT>和</SCRIPT>等等。3.正文標記<BODY>...</BODY> 正文標記包含了文檔的內容,文字、圖像、動畫、超鏈接以及其他HTML元素均位于該標記中。正文標記有下列屬性。(1)BACKGROUD:指定文檔背景圖像的URL地址,圖像平鋪在頁背景上。(2)BGCOLOR:指定文檔的背景顏色。(3)TEXT:指定文檔中文本的顏色。(7)ONLOAD:指定文檔首次加載時調用的事件處理程序。(8)ONUNLOAD:用于指定文檔卸載時調用的事件處理程序。顏色屬性的值有兩種表示方法:使用顏色名稱:例如紅色、綠色和藍色分別用red、green和blue表示;使用十六進制格式數(shù)值:#RRGGBB來表示,RR、GG和BB分別表示顏色中的紅、綠、藍三基色的兩位十六進制數(shù)據(jù)。4.HTML文檔的基本結構HTML文檔的基本結構可以表示如下:<HTML><HEAD><TITLE>標題文字</TITLE><HEAD><BODY>文本、圖像、動畫、HTML指令等</BODY></HTML>5添加注釋 注釋由開始標記<!--和結束標記-->構成。3.3設置文本格式3.3.1分段與換行 段落是文檔的基本信息單位。將文檔劃分為段落,可以通過使用分段標記、換行標記、標題標記或插入水平線來實現(xiàn)。1.分段標記P2.換行標記BR<BR>標記強行規(guī)定了當前行的中斷,使后續(xù)內容在下一行顯示。3.標題標記Hn其中n的取值是1到6;<H1>...</H1>標記表示字體最大的標題,<H6>…</H6>標記表示字體最小的標題。4.水平線標記HR HR標記在文檔中添加一條水平線,用來分開文檔的兩個部分。該標記有以下屬性: (1)ALIGN:指定線的對齊方式,取值為left(左對齊)、center(居中對齊)或right(右對齊),默認值為center。 (2)COLOR:指定線的顏色。 (3)NOSHADE:若指定該項,則顯示一條無陰影的實線。 (4)SIZE:指定線的寬度,以像素為單位。 (5)WIDTH:指定線的長度,單位可以是像素或百分比(占頁面寬度的百分比)。3.3.2設置段落對齊方式 使用ALIGN屬性來設置段落的對齊方式。ALIGN屬性的取值可以是:left(左對齊)、center(居中對齊)、right(右對齊)以及justify(兩邊對齊)。3.3.3設置字體、字號和顏色 字體標記<FONT>...</FONT>來設置文本的字符格式,并通過FACE、SIZE和COLOR屬性來設置文本的字體、字號和顏色。例如:<FONTFACE="楷體_GB2312,仿宋_GB2312,宋體">超文本標記語言</FONT>3.3.4設置字符樣式<B>...</B> 粗體

<BIG>...</BIG> 大字體 <I>...</I> 斜體

<S>...</S> 刪除線 <SMALL>...</SMALL> 小字體<STRIKE>...</STRIKE> 刪除線<SUP>...</SUP> 上標<SUB>...</SUB> 下標<TT>...</TT> 固定寬度字體<U>...</U> 下劃線3.3.5插入特殊字符可以使用兩種方式來輸入特殊符號:即使用字符實體名稱或數(shù)字表示方式。例如,若要在網(wǎng)頁中輸入一個無間斷空格,可以輸入“ ”或“ ”,等等。表2.3列出了常用特殊符號的實體名稱或數(shù)字表示。3.4使用圖像 使用IMG標記在網(wǎng)頁中插入一個圖像。1.SRC和ALT屬性IMG標記有許多屬性,其中最常用的是SRC和ALT屬性SRC屬性給出圖像文件的URL地址,圖像可以是JPEG文件、GIF文件或PNG文件。ALT屬性給出圖像的簡單文本說明。2.指定圖像的高和寬當使用IMG標記在網(wǎng)頁中插入一個圖像時,可以通過HEIGHT和WIDTH屬性來設置圖像的高度和寬度3.5使用字幕和背景音樂3.5.1插入字幕

<MARQUEE>要滾動顯示的文本信息</MARQUEE>MARQUEE標記的主要屬性有:(1)ALIGN:指定字幕與周圍文本的對齊方式,其取值可以是top、middle或bottom。(2)BEHAVIOR:指定文本動畫的類型,其取值可以是scroll、slide或alternate。(3)BGCOLOR:指定字幕的背景顏色。(4)DIRECTION:指定文本的移動方向,其取值可以是down、left、right或up。(5)HEIGHT:指定字幕的高度,以像素或百分比為單位。(6)HSPACE:整數(shù),指定字幕的外部邊緣與瀏覽器窗口之間的左右邊距(像素)。(7)SCROLLAMOUNT:整數(shù),指定字幕文本每次移動的距離,以像素為單位。(8)SCROLLDEALY:整數(shù),指定與前段字幕文本延遲多少ms后重新開始移動文本。(9)VSPACE:整數(shù),指定字幕的外邊緣與瀏覽器窗口之間的上下邊距(像素)。3.5.2插入背景音樂 使用<BGSOUND>標記在網(wǎng)頁中添加背景音樂,該標記只允許放置在HEAD部分。<BGSOUND>標記的屬性:(1)BALANCE:整數(shù),指定如何將聲音分成左聲道和右聲道。取值為-10,000~+10,000,默認值為0。(2)LOOP:整數(shù),指定聲音播放的次數(shù)。如果設置為0,則播放一次;如果設置為大于0的整數(shù),則播放指定的次數(shù);如果設置為-1,則聲音反復播放,直到頁面卸載。(3)SRC:指定要播放的聲音文件的URL。常用的聲音文件類型是波形文件(.wav)、MIDI文件(.mid)、AIFF文件(.aif)、AU文件(.au)以及MP3文件(*.mp3)等。(4)VOLUME:整數(shù),指定音量高低,其取值為-10,000~0,默認值為0。3.6使用表格 <TABLE> <CAPTION>表格標題文字<CAPTION> <TR> <TD>標題</TD><TD>標題</TD>…<TD>標題</TD> </TR> <TR> <TD>數(shù)據(jù)</TD><TD>數(shù)據(jù)</TD>…<TD>數(shù)據(jù)</TD> </TR> <TR> <TD>數(shù)據(jù)</TD><TD>數(shù)據(jù)</TD>…<TD>數(shù)據(jù)</TD> </TR> …… <TR> <TD>數(shù)據(jù)</TD><TD>數(shù)據(jù)</TD>…<TD>數(shù)據(jù)</TD> </TR> </TABLE>3.7使用超鏈接1.理解超鏈接

超鏈接是由源端點到目標端點的一種跳轉。主要形式:(1)文件鏈接:這種鏈接的目標端點是的一個文件,它可以位于當前網(wǎng)頁所在的服務器,也可以位于其他服務器。<ahref=“”>名稱</a>(2)E-mail鏈接:通過這種鏈接可以啟動電子郵件客戶端程序(如Outlook或FoxMail等),并允許訪問者向指定的地址發(fā)送郵件。<AHREF="mailto:?subject=關于ASP動態(tài)網(wǎng)頁設計">給我寫信</A>2.理解路徑 路徑是指從站點根文件夾或當前文件夾起到目標文件所經(jīng)過的路線。路徑有以下幾種類型:(1)絕對路徑:也稱為絕對URL,它給出目標文件的完整URL地址,包括傳輸協(xié)議在內。如果要鏈接的文件位于外部服務器上,則必須使用絕對路徑。(2)相對路徑:也稱為相對URL,是指以當前文檔所在位置為起點到目標文檔所經(jīng)過的路徑。3.8使用表單什么是表單? 表單是用來收集站點訪問者信息的域集。3.8.1創(chuàng)建表單在HTML語言中,表單通過FORM標記來定義,基本語法格式如下:<FORMNAME="字符串"METHOD="get|post"ACTION="字符串">……</FORM>FORM標記具有以下屬性:(1)NAME:指定表單的名稱,以標識表單。命名表單后,可以使用腳本語言(如VBScript或JScript)來引用或控制該表單(2)METHOD:post、get。(3)ACTION:指定將要接收表單數(shù)據(jù)的服務器端程序或動態(tài)網(wǎng)頁的網(wǎng)址。(4)onSubmit:指定提交表單時調用的事件處理程序。(5)onReset:指定重置表單時調用的事件處理程序。(6)TARGET:指定一個目標窗口,其取值為:_blank、_parent、_self、_top。3.8.2使用輸入型表單控件1。input輸入域格式:<inputtype=“”name=“”value=“”>姓名<inputname=“xm"type="text"size="60"maxlength="60">籍貫<inputname=“jg"type="text"size="60"maxlength="100"><inputtype=“submit”name=“Submit”value=“提交”>此外:type的取值還可能是:password、checkbox、radio、image、hidden、reset等。2。下拉列表框用于列表選擇。例如:<selectname="select"><optionvalue="湖北"selected>湖北</option><optionvalue="湖南">湖南</option><optionvalue="江蘇">江蘇</option><optionvalue="浙江">浙江</option><optionvalue="福建">福建</option></select>3。多行文本框

格式:

<textareaname=“”rows=“”cols=“”>

例如:

<textareaname="practice"cols="92"rows="8"id="practice"class="intxt"></textarea>

3.9JavaScript用法:<scriptlanguage=javascript>…</script>或者:<scriptlanguage=javascriptsrc=“myfuncs.inc"></script>示例1數(shù)字的確認functionisDigit(theNum){vartheMask=‘0123456789’;if(theNum==null||theNum.length==0)returnfalse;iftheMask.indexOf(theNum)==-1)returnfalse;returntrue;}示例2檢查輸入是否為空

4.3.2檢查輸入是否為空(包括空格)

functionisEmail(theEmail){

varemail=theEmail;

email=email.replace(/(^\s*)|(\s*$)/g,"");

if(email==""){

alert(“請輸入您的Email地址,地址不能為空!");

returnfalse;

}}

注意:如何實現(xiàn)光標自動定位?示例3電子郵件地址格式的確認functionisEmail(theEmail){varemail=theEmail;email=email.replace(/(^\s*)|(\s*$)/g,"");if(email==""){alert(“請輸入您的Email地址,地址不能為空!");

returnfalse;}if(email!==""){varnotValid=false;varuseremail=email;if(useremail.indexOf("@")<=0)notValid=true;if(useremail.charAt(useremail.length-1)=="@")notValid=true;if(useremail.indexOf(".")<=0||useremail.indexOf(".")<=useremail.indexOf("@"))notValid=true;if(useremail.indexOf(".")<=useremail.indexOf("@")+1)notValid=true;if(useremail.indexOf(".")==(useremail.length-1))notValid=true;if(notValid){alert("您的Email地址不正確,請重新輸入!");

return(false);}}}思考與練習:

1.如何實現(xiàn)不規(guī)則表格?

2.如何使用表單提交進行客戶端確認?

4.1.1開始和結束標記

以<%開頭,以%>結尾,格式:

<%程序內容%>例如:<%out.println(“歡迎訪問本網(wǎng)站!”);%>4.1.2注釋注釋是幫助自己或別人閱讀程序。注釋可以有兩種形式,HTML注釋、JSP注釋。HTML注釋:<!--注釋內容-->第四章JSP語法基礎

4.1JSP基本語法規(guī)則HTML注釋:<!--注釋內容

-->注釋的內容會在客戶端的HTML源代碼中出現(xiàn)。例如:<!--這是個用戶登錄程序login.jsp--><!--編寫者:張三-->JSP注釋客戶端查看源代碼時看不到(安全考慮)。格式:<%--注釋內容

--%>

示例:<%@pagecontentType="text/html;charset=gb2312"language="java"errorPage=""%><%--文件名:comms.jsp編寫者:張三說明:測試程序--%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"><title>用戶留言</title></head><body><!--這是一個測試程序--><%--顯示helloworld!--%><%out.println(“Helloworld!”);%></body></html>4.1.3基本數(shù)據(jù)類型1)整型三種形式:十進制、八進制(0開頭)、十六進制(0x開頭)。具體類型如下:byte類型有符號,范圍-128~127。例如:bytea,b=12;short類型(很少使用)有符號,范圍-32768~32767。例如:shortd,e=234;int類型有符號,范圍-2147483684~2147483683。例如:intx,y=12;long類型有符號,范圍-264~264-1。例如:longx,y=-0x12;2)實型Float類型(單精度)例如:floatx,y=123.56;double類型(雙精度)例如:floatx,y=123.56;3)布爾型boolean只有true和false兩種值例如:booleanx,y,z=false;3)字符型char用單引號括起來。例如:charxx=’123’;思考:charrtn=’\n’;表示什么?4)字符串型String用雙引號括起來的一串字符。例如:StringmyStr=“xyz”;注意:是對象,而非數(shù)據(jù)!有以下重要方法:length()、booleanequals(Stringstr)Stringsubstring(int

beginIndex)Stringsubstring(intbeginIndex,intendIndex)booleanstartsWith(Stringprefix)intindexOf(Stringstr)向后intindexOf(Stringstr,intfromIndex)向后StringtoLowerCase()StringtoUpperCase()Stringtrim()StringreplaceAll(Stringregex,Stringreplacement)該方法用字符串replacement的內容替換當前字符串中遇到的所有和字符串regex相一致的子串,并將產(chǎn)生的新字符串返回。思考:如何判斷一個字符串是否是一個合法的email地址?

4.1.4運算符關系運算符用來比較兩個值,并返回布爾型的值true或false。布爾邏輯運算符進行布爾邏輯運算,包括&&、||、!等intx=12,y=85;booleanz=(x<21)&&(y>78);算術運算符進行加、減等運算。inti=6,j,k,s;k=(j=++i);i,j,k=?s=(j=i--);i,j,s=?三目條件運算符格式:

x?y:z;

上面的三目條件運算的規(guī)則是:先計算表達式x的值,若x為真,則整個三目運算的結果是表達式y(tǒng)的值;若x為假,則整個三目運算的結果是表達式z的值。下面的例子實現(xiàn)了從兩個數(shù)中找出較大的數(shù)的功能。

inta=3,b=4;intmax=a>b?a:b;

三目條件運算是可以嵌套的,如有以下的語句,則max表示的是a、b、c三個數(shù)中的最大值,其值為5。

inta=3,b=4,c=5;intmax=(a>b?a:b)>c?(a>b?a:b):c;4.2JSP聲明1、格式:<%declaration;declaration;…%>例如:<%intx=10;Stringy=”ok”;%>2、JSP表達式和程序段Jsp表達式的語法形式:<%=表達式%>例如:<%intnum=100;%>數(shù)值為:<%=num%>Jsp程序段包含在<%和%>之間的有效程序段。具體形式:<%你的程序代碼%>例如:<%If(sex==null)out.println(”請輸入性別信息!”);Elseif(sex.equals(”男”))out.println(”男!”);%>4.3.1結構化程序設計的三種基本流程

1.自頂向下2.逐步求精3.模塊化

除了以上的原則,結構化程序設計還有一個重要的規(guī)定,那就是只能使用“順序結構”、“選擇結構”、“循環(huán)結構”這三種基本結構(或由它們派生出來的結構)來定義程序的流程。三種基本流程控制結構示意圖分別如圖3-1所示。4.3JSP流程控制語句4.3.2選擇結構選擇結構又稱為分支結構,是在兩種或兩種以上的多條執(zhí)行路徑中選擇一條執(zhí)行的控制結構。1.if—else語句if(條件表達式){語句組1;}else{語句組2;}在if—else語句中,else部分是選擇性的。經(jīng)常可以看到只有if語句,而沒有else語句的情況。在這種情況下,當測試條件為假時如不需做任何事,else部分可被省略。這時,其語法形式如下:if(條件表達式){語句組;}思考:求3個數(shù)中的最大者?2.switch語句

switch語句(又稱開關語句)是和case語句一起使用的,其功能是根據(jù)某個表達式的值在多個case引導的多個分支語句中選擇一個來執(zhí)行。它的一般格式如下:switch(表達式){case判斷值1:語句塊1case判斷值2:語句塊2 ……case判斷值n:語句塊ndefault:語句塊n+1}

switch后面括號中表達式的值必須是符合byte,char,short,int類型的常量表達式,而不能用浮點類型或long類型,也不能為一個字符串。一個switch語句可以代替多個if—else語句組成的分支結構,而switch語句從思路上顯得更清晰。 floata=9,b=3,result=0; charop='+'; switch(op) { case'+': result=a+b; case'-': result=a-b; case'*': result=a*b; case'/': result=a/b; default: result=0;} out.println("result="+result);4.3.3循環(huán)結構循環(huán)結構是程序中一種重要的基本結構,是指在一定的條件下反復執(zhí)行某段程序,被反復執(zhí)行的這段程序稱為“循環(huán)體”。Java中有三種語句來實現(xiàn)循環(huán)結構,分別是while,do-while和for語句。1.while語句while語句的格式如下:while(條件表達式){ 循環(huán)體語句;}例:用while語句計算10! intn=10; longresult=1;

while(n>=1)result*=n--;//改寫該語句? out.println("10!="+result);2.do-while語句

do-while語句的格式如下:do{ 循環(huán)體語句;}while(條件表達式)

例:用do-while語句計算10的階乘 intn=10; longresult=1; do result*=n--; while(n>=1); System.out.println("10!="+result);3.for語句for(表達式1;表達式2;表達式3){ 循環(huán)體語句;}for語句的執(zhí)行過程:(1)在循環(huán)剛開始時,先計算表達式1。(2)根據(jù)表達式2的值來決定是否執(zhí)行循環(huán)體。表達式2是一個返回布爾值的表達式,若該值為假,將不執(zhí)行循環(huán)體,并退出循環(huán);若該值為真,將執(zhí)行循環(huán)體。(3)執(zhí)行完一次循環(huán)體后,計算表達式3。(4)轉入第(2)步繼續(xù)執(zhí)行。

例1: intn; longresult; for(n=10,result=1;n>0;n--) result*=n; out.println("10!="+result);例2: for(i=0;i<2;i++) for(j=0;j<2;j++) for(k=0;k<2;k++) { out.print(i+""+j+""+k); out.println(); }4.3.4跳轉語句 跳轉語句用來實現(xiàn)循環(huán)執(zhí)行過程中的流程轉移。有兩種跳轉語句:break語句和continue語句。 其中,break用于強行退出循環(huán),不執(zhí)行循環(huán)中剩余的語句。而continue則停止執(zhí)行當前的循環(huán),開始新的循環(huán)。intn;for(n=1;n<=10;n++){if(n%2==0)break;//修改為continue結果如何?out.println("n="+n);}4.3.5異常處理語句 當發(fā)生例外時,采用異常處理機制。Java采用try-catch-finally結構處理錯誤。try-catch的實際意思是:嘗試這塊可能導致異常的代碼。如果它執(zhí)行正常,那么繼續(xù)執(zhí)行下面的程序。如果該代碼無法執(zhí)行,捕獲該異常并對它進行處理。基本形式:try{//程序塊}catch(ExceptionTypee){//對ExceptionType的處理}例如:try{File(“c:/inc");…}catch(Exceptione){out.println(“無法找到文件!");}

假定在你的代碼中有一些動作,不管發(fā)生什么情況,無論異常是否被拋出,你都必須執(zhí)行這些操作。則需要使用finally子句。例如:try{readTextfile();}catch(IOExceptione){out.println(”該文件不存在!”);}finally{closeTextfile();}總結一下try-catch-finally結構的形式:try{//程序塊}catch(ExceptionTypee){//對ExceptionType的處理}finally{//必須處理的程序語句}4.4結合使用JSP和HTMLJSP程序中除了普通HTML代碼外,還可以嵌入Java程序代碼,二者可以混合使用。例如:<html><head><title>示例</title></head><body><%intnum=100;Out.println(”welcome!”);%><b>數(shù)值為:<%=num%></b></body></html>思考:如何利用JSP語句輸出斜體的“武漢科技學院”?思考與練習:

1.JSP注釋與HTML注釋的差異?

2.JSP中如何輸出HTML標記?

3.試說明異常機制?第五章JSP的頁面元素

5.1JSP指令

5.2JSP動作語法5.1JSP指令

1.Page指令“Page”指令用于定義JSP文件中的全局屬性。<%@page[language="java"][import="{package.class|package.*},..."][session="true|false"][buffer="none|8kb|sizekb"]

[contentType="charset=characterSet|"text/html;charset=ISO-8859-1"][isErrorPage="true|false"]<%@pagecontentType="text/html;charset=GBK"language="java"import="java.sql.*"errorPage=""%><%@pagebuffer="32kb"%><%@pageimport="java.util.Iterator"%><%@pageimport="java.util.Vector"%><%@pageimport="java.util.Date"%><%@pageimport="java.util.GregorianCalendar"%><%@tagliburi="weblogic-tags.tld"prefix="wl"%><jsp:useBeanid="submystr"scope="application"class="dbbeans.substr"/><html><head><metahttp-equiv="Content-Type"content="text/html;charset=GBK"><title>武漢科技學院畢業(yè)生就業(yè)指導服務中心</title>…特別說明:頁面緩存緩存是一種用于提高系統(tǒng)性能節(jié)省操作時間的技術,數(shù)據(jù)庫產(chǎn)品利用它可以提高系統(tǒng)的吞吐率,服務器利用它可以提高性能。緩存是將響應內容臨時保存在服務器的內存中,然后在請求處理完畢之后發(fā)回給所調用的瀏覽器。在Web應用程序中,提高系統(tǒng)性能最有效的手段是在需要時緩存頁面的輸出。在JSP頁面最好使用輸出緩存功能。緩存設置方法:采用JSP標記通常情況下,默認緩存大小為8KB。緩存設置格式:<%@pagebuffer="8kb"%>在大多數(shù)Web應用程序中,緩存大小至少應為32kb,犧牲這么一點額外的內存是很值得的。2.include指令include:向當前頁中插入一個靜態(tài)文件的內容。格式如下:<%@includefile=“網(wǎng)頁文件"%>示例:<%@pagecontentType="text/html;charset=GBK"language="java"import="java.sql.*"errorPage=""%><%@pagebuffer="32kb"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=GBK"><title>武漢科技學院畢業(yè)生就業(yè)指導服務中心</title><metaname="keywords"content="武漢科技學院畢業(yè)生就業(yè)指導服務中心"></head><bodytopmargin="0"class="scrolbar"><center><metaname="keywords"content="武漢科技學院畢業(yè)生就業(yè)指導服務中心"></head><bodytopmargin="0"class="scrolbar"><center><%@includefile="getdayvisit.jsp"%><%@includefile="top.jsp"%><%@includefile="body.jsp"%><%@includefile="bottom.jsp"%></center></body></html>3.taglib指令JSP語法<%@tagliburi="URIToTagLibrary"prefix="tagPrefix"%>用于引入定制標簽庫taglib指令屬性1.uri="URIToTagLibrary"UniformResourceIdentifier(URI)根據(jù)標簽的前綴對自定義的標簽進行唯一的命名,URI可以是以下的內容:UniformResourceLocator(URL),由RFC2396定義,可以從以下位置查看(/jkorpela/rfc/2396/full.html)。

UniformResourceName(URN),由RFC2396定義一個相對或絕對的路徑

可以是標簽庫描述文件2.prefix="tagPrefix"表示標簽在JSP中的名稱。在自定義標簽之前的前綴,比如,在<public:loop>中的public,如果這里不寫public,那么這就是不合法的。請不要用jsp,jspx,java,javax,servlet,sun,和sunw做為你的前綴,這些已被Sun公司聲明保留。示例:

<%@pagecontentType="text/html;charset=GBK"language="java"import="java.sql.*"errorPage=""%>

<%@pagebuffer="32kb"%>

<%@tagliburi="weblogic-tags.tld"prefix="wl"%>

<html><head><metahttp-equiv="Content-Type"content="text/html;charset=GBK">

<title>武漢科技學院畢業(yè)生就業(yè)指導服務中心</title>

<metaname="keywords"content="武漢科技學院畢業(yè)生就業(yè)指導服務中心">

</head>

<bodytopmargin="0"class="scrolbar">

<center>

<%@includefile="getdayvisit.jsp"%>

<%@includefile="top.jsp"%>

<%@includefile="body.jsp"%>

<%@includefile="bottom.jsp"%>

</center>

</body>

</html>5.2JSP動作語法

1.<jsp:forward>

2.<jsp:include>

3.<jsp:useBean>1.<jsp:forward>JSP語法格式如下:1.<jsp:forwardpage={"relativeURL"|"<%=expression%>"}/>2.<jsp:forwardpage={"relativeURL"|"<%=expression%>"}><jsp:paramname="parameterName"value="{parameterValue|<%=expression%>}"/>[<jsp:param…/>]</jsp:forward>(“[<jsp:param…/>]”指可以有多個“<jsp:param/>”標記。)1、page="{relativeURL|<%=expression%>}"這里是一個表達式或是一個字符串用于說明你將要定向的文件或URL。這個文件可以是JSP,程序段,或者其它能夠處理request對象的文件(如asp,cgi,php)。

2.<jsp:paramname="parameterName"value="{parameterValue|<%=expression%>}"/>向一個動態(tài)文件發(fā)送一個或多個參數(shù),這個文件必須是動態(tài)文件。如果想傳遞多個參數(shù),可以在一個JSP文件中使用多個“<jsp:param>”;“name”指定參數(shù)名,“value”指定參數(shù)值。<jsp:forward>例子<%@pagecontentType="text/html;charset=gb2312"%><html><head><title>test</title> </head> <body> <jsp:forwardpage="forwardTo.jsp"> <jsp:paramname="userName"value="riso"/> </jsp:forward> </body></html>forwardTo.jsp<%@pagecontentType="text/html;charset=gb2312"%><!--forwardTo.jsp--><% StringuseName=request.getParameter("userName"); StringoutStr="謝謝光臨!"; outStr+=useName; out.println(outStr); %>運行結果(TOMCAT)2.<jsp:include>

<jsp:include>包含一個靜:態(tài)或動態(tài)文件.

常用格式如下:

<jsp:includepage=“網(wǎng)頁文件”/>

思考:何時使用<jsp:include>,何時使用<%@includefile=“網(wǎng)頁文件”%>?3.<jsp:useBean>

在介紹JavaBean時再討論思考與練習:

1)掌握文件包含。

2)制作一個申請免費email的表單,要求填寫:用戶名、密碼、確認密碼、性別、地址,其中性別用單選按鈕,用戶名、、密碼為必填項且不能為空。請用客戶端確認實現(xiàn)上述功能。

3)上道題目中用戶填寫的內容顯示在屏幕上。

4)編寫一個程序,驗證用戶輸入的email地址是否正確(使用客戶端確認)。

5)編寫一個用戶登錄的jsp網(wǎng)頁,若用戶名為aaa,密碼為bbb,則顯示歡迎該用戶訪問的字樣,否則顯示非法用戶。要求使用服務器端確認。

6)理解緩存的使用。第六章JSP的內建對象

·request請求對象

·response響應對象

·session會話對象

·application應用程序對象

·out輸出對象1.out“out”對象代表了向客戶端發(fā)送數(shù)據(jù)的對象。out.print()out.println();out.close()out的使用

例如:out.println(“武漢”);

<%out.println("aaaaaaaaaaa");

out.close();

out.println("bbbb");%>

思考:如何輸出一個換行,或者斜體的aaa?2.request用于獲取客戶端的輸入信息。主要有以下方法:getParameter(Stringname)(很重要)獲得客戶端傳給服務器端的參數(shù)值Stringusrme=request.getParameter(“username”);getRequestURI()獲得所請求的URL地址getServerName()

獲得服務器名稱

getRemoteUser()

獲得登錄用戶名

getServerPort()

獲得服務器提供HTTP服務的端口號

getRemoteAddr()(很重要)

獲得客戶端的IP地址。

getRemoteHost()

獲得客戶端計算機名稱。一般為IP地址,同上request對象示例<html><body>

<formaction="./Hello_req.jsp">姓名<inputtype="text"name="UserName">

<inputtype="submit"value="提交">

</form></body></html>request對象示例(Hello_req.jsp<%@pagecontentType="text/html;gb2312"%><%@pageimport="java.util.*"%><HTML><BODY>你好,<%!StringName;%><%Name=request.getParameter("UserName");%><%=Name%>,今天是<%Datetoday=newDate();%><%=today.getDate()%>號,星期<%=today.getDay()%></BODY></HTML>request對象示例(輸出結果)<HTML><BODY>你好,獨孤求敗,今天是9號,星期1</BODY></HTML>3.response對象用于處理HTTP信息。有以下方法:setHeader(Stringname,Stringvalue)發(fā)送HTTP信息,控制客戶端和服務器端連接。例如:Response.setHeader(“Location”,”.”);Response.setHeader(“Refresh”,”2”);sendRedirect(Stringurl)response.senRedirect(“.”);4.session對象“session”

對象代表服務器與客戶端所建立的會話,當需要在不同的JSP頁面中保留客戶信息的情況下使用,比如在線購物、客戶軌跡跟蹤等。“session”

對象建立在cookie的基礎上,所以使用時應注意判斷一下客戶端是否打開了cookie。常用的方法包括getId、getValue、getValueNames和putValue等。

session對象說明:HTTP是無狀態(tài)(stateless)協(xié)議;WebServer對每一個客戶端請求都沒有歷史記憶;Session用來保存客戶端狀態(tài)信息;由WebServer寫入;存于客戶端;客戶端的每次訪問都把上次的session記錄傳遞給WebServer;WebServer讀取客戶端提交的session來獲取客戶端的狀態(tài)信息;理解session:

session對象代表服務器與客戶端所建立的會話。當需要在不同的JSP頁面中保留客戶信息的情況下使用,比如在線購物、客戶軌跡跟蹤等。例如:在網(wǎng)上商店站點,你做出的每一個購買決定都會放入購物車,他將收集你要購買的商品,以便一次性付錢。即使瀏覽了幾百個網(wǎng)站,訂購了數(shù)十商品,購物車也能記住你想購買的所有商品。這是因為WEB應用程序有能力記錄跟蹤會話。

記?。好總€用戶都有自己的sessionSession的常用方法:setAttribute(參數(shù)名,參數(shù)值):設置指定name的屬性值value,并存儲在session中。例如:session.setAttribute(“myname”,”tom”);getAttribute(參數(shù)名):獲取與參數(shù)名相聯(lián)系的屬性值。例如:session.getAttribute(“myname”);removeAttribute(參數(shù)名):刪除與指定參數(shù)名相聯(lián)系的屬性。例如:session.removeAttribute(“myname”);應用:可以在同一個網(wǎng)站的不同頁面之間共享信息。session對象示例(Form表單—Logon_session.html)<html><body>

<formaction="./Logon_session.jsp">姓名<inputtype="text"name="UserName">

<inputtype="submit"value="提交">

</form></body></html>session對象示例Logon_session.jsp<%@page

contentType="text/html;gb2312"

%><%@page

import="java.util.*"

%><HTML><BODY>

<%

StringName=request.getParameter("UserName");

session.putValue("LogName",Name);

%>你的名字"<%=Name%>"已經(jīng)寫入session<br><ahref='./check_session.jsp'>check</a></BODY></HTML>session對象示例(Check_session.jsp)<%@pagecontentType="text/html;gb2312"%><HTML><BODY>

<%StringyourName=(String)session.getValue("LogName");if(yourName==null){

%>您還未登錄

<%}else{

%>

"<%=yourName%>"已經(jīng)登錄

<%}

%></BODY></HTML>5.application對象“application”對象負責提供應用程序在服務器中運行時的一些全局信息,常用的方法有getMimeType和getRealPath等。application對象負責提供應用程序在服務器中運行時的一些全局信息。setAttribute(參數(shù)名,參數(shù)值)

例如:

application.setAttribute("counter","1");getAttribute(參數(shù)名)

例如:

application.getAttribute("counter");應用:application對象可以用于網(wǎng)站訪問量,或者在線用戶的統(tǒng)計等功能。application對象實現(xiàn)網(wǎng)頁計數(shù)器<%--用application對象實現(xiàn)網(wǎng)頁計數(shù)器peixun2.14.jsp文件代碼--%><%@pagecontentType="text/html;charset=gb2312"%><html> <head><title>網(wǎng)頁計數(shù)器</title><head><body><%if(application.getAttribute("counter")==null) application.setAttribute("counter","1"); else{ Stringstrnum=null; strnum=application.getAttribute("counter").toString(); inticount=0; icount=Integer.valueOf(strnum).intValue(); icount++; application.setAttribute("counter",Integer.toString(icount)); }%>您是第<%=application.getAttribute("counter")%>位訪問者!</body></html>運行結果(第一次訪問)刷新一次config、page、exception“config”對象提供一些配置信息,常用的方法有getInitParameter和getInitParameterNames,以獲得Servlet初始化時的參數(shù)。“page”對象代表了正在運行的由JSP文件產(chǎn)生的類對象,不建議一般讀者使用?!癳xception”對象則代表了JSP文件運行時所產(chǎn)生的例外對象,此對象不能在一般JSP文件中直接使用,而只能在使用了“<%@pageisErrorPage="true"%>”的JSP文件中使用思考與練習編寫用戶登錄程序,根據(jù)登錄用戶的不同,顯示不同頁面。編寫網(wǎng)站計數(shù)器。利用session編寫購物車程序。第七章JSP中訪問文件7.1文件操作7.2Cookie的管理7.3文件上傳的實現(xiàn)7.1文件操作1。File文件對象包的一部分,它代表一個文件或文件夾的引用。格式:)創(chuàng)建一個File對象,如果沒有指定文件名,則創(chuàng)建一個文件夾。例如:FilemyFile(“d:\counter.txt”);常用方法:exists()、delete()、mkdir()2。讀取文本文件讀取字符流,逐個字符讀取,格式:txt=new(文件名)例如:txt=new(“counter.txt”)BufferedReader讀取字符輸入流,一次讀取一行,格式:BufferedReaderbuff=newBufferedReader(Reader);例如:BufferedReaderbuff=newBufferedReader(new(“counter.txt”));buff.close();注意:BufferedReader讀取字符輸入流,并高效率的緩存起來。3。寫入文本文件BufferedWriter寫入一個帶緩沖的字符流。格式:BufferedWriter()例如:File(“d:\xy.txt”);BufferedWriteroutf=newBufferedWriter(new(tmpf));outf.write(“123”);outf.close();文件操作示例

try{String“d:/counter.dat";BufferedReaderbuff=newBufferedReader(new());longtmp;Stringline;line=buff.readLine();tmp=Long.parseLong(line);tmp++;Longtmpint=newLong(tmp);context.setAttribute("visitor",tmpint);Stringcounter=tmpint.toString(););BufferedWriteroutf=newBufferedWriter(new(tmpf));outf.write(counter);outf.close();buff.close();}catch(Exceptione){System.err.println("無法更新計數(shù)器:"+e);}}4。文件輸入流

流(Stream)是一個將數(shù)據(jù)從一個地方運送到另一個地方的一個對象。輸入流格式:inStream=new(String);例如:inStream=new(“d:\mylet.zip”);5。輸出流OutputStreamtoClient=response.getOutputStream();例如:OutputStreamtoClient=response.getOutputStream();toClient.flush();toClient.close();流的應用示例-文件下載的實現(xiàn)packagebysservlet;importjavax.servlet.*;importjavax.servlet.http.*;importjava.io.*;publicclassdownloadextendsHttpServlet{privatestaticfinalStringCONTENT_TYPE="text/html;charset=GB2312";publicvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{

response.setBufferSize(20000);//有什么作用??? PrintWriterout=response.getWriter();response.setContentType(CONTENT_TYPE);request.setCharacterEncoding("GBK");//下載路徑String=request.getParameter("fpath");if(==null){="";}//文件名稱String=request.getParameter("fname");if(==null){="";}StringdirName=getServletContext().getRealPath("/"+);java.io.;Stringdd=dirName+System.getProperties().getProperty("")+;try{ff=newjava.io.);}catch(Exceptione){out.println(“出錯!”);}if(ff!=null&&ff.exists()&&ff.isFile()){long=ff.length();inStream=new(dd);response.reset();response.setContentType("application/x-msdownload;charset=GBK");response.setContentLength((int)); response.setHeader("Content-Disposition","attachment;\""+"\"");OutputStreamtoClient=response.getOutputStream();byte[]bzp=newbyte[102400];inti;while((i=inStream.read(bzp))!=-1){toClient.write(bzp,0,i);}toClient.flush();toClient.close();}}}7.2Cookie的管理Cookie是服務器在用戶硬盤上存放的信息。1。創(chuàng)建CookieCookiemyCookie=newCookie(“cookieName”,”cookieValue”);Response.addCookie(myCookie);例如:Cookievname=newCookie(“usrname”,”Tom”);response.addCookie(vname);2。獲取CookieCookiecookies[]=request.getCookies();然后調用Coo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論