《JSP程序設計案例教程》課件ch7_第1頁
《JSP程序設計案例教程》課件ch7_第2頁
《JSP程序設計案例教程》課件ch7_第3頁
《JSP程序設計案例教程》課件ch7_第4頁
《JSP程序設計案例教程》課件ch7_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

JSP實用技術

本章目標分頁技術文件上傳的實現(xiàn)發(fā)送郵件cookie對象圖書管理頁面--分頁技術分頁的基本步驟1) 初始化,如設定每頁大小2) 從數(shù)據(jù)庫提取要顯示的數(shù)據(jù)3) 確定總頁數(shù)總頁數(shù)的確定方法為先用數(shù)據(jù)集的last將游標定位到最后,然后用getRow方法取得總記錄數(shù)。由記錄數(shù)除每頁記錄數(shù)的結果即可求得總頁數(shù),注意要區(qū)分能否整除。例子代碼如下:rs.last();rowCount=rs.getRow();pageCount=(rowCount%pageSize==0)?(rowCount/pageSize):(rowCount/pageSize+1);4) 確定要顯示的當前頁為第幾頁當前頁一般從網(wǎng)頁參數(shù)中讀入,但該參數(shù)不一定合理,例如可能小于0或大于總的頁數(shù),因此需要調整,以確保當前頁的值合理。例子代碼如下:Stringstr=request.getParameter("page");if(str==null){nowPage=0;}else{nowPage=Integer.parseInt(str);}if(nowPage<1){nowPage=1;}else{if(nowPage>pageCount){nowPage=pageCount;}}5) 定位數(shù)據(jù)集到要顯示頁數(shù)據(jù)集的absolute方法可以用來定位游標,計算當前頁第一行位置的公式為(now1)*pageSize+1,定位代碼如下:rs.absolute((now1)*pageSize+1);6) 循環(huán)顯示當前頁的所有記錄記錄一般顯示在表格中,下面為常用的模式:<Table>標記顯示標題行for(intnum=1;num<=pageSize;num++){讀出數(shù)據(jù)集的當前列,顯示在一個<tr>中

if(!rs.next()){break;}}</Table>標記其中rs.next()使游標下移一行,注意下移后如果已到末尾,就應用break退出循環(huán)。7) 輸出導航信息,即顯示首頁、末頁、上一頁、下一頁鏈接等信息。[程序代碼bookinfo.jsp]增加圖書頁面文件上傳的實現(xiàn)在進行Web項目開發(fā)時,很多時候都需要文件上傳。例如,把一個軟件上傳到資源網(wǎng)站中,上傳照片和資料等。網(wǎng)上書店中,瀏覽圖書要顯示封面圖片,因此在增加圖書模塊,要求能上傳封面圖片,增加圖書頁面如圖7-3所示。jspSmartUpload組件jsp中可以通過javabean來實現(xiàn)上傳文件。但是我們沒有必要自己去寫一個上載的bean,在網(wǎng)上已經(jīng)有了很多成型的技術,smartupload就是其中的一個。jspSmartUpload是一個可免費使用的全功能的文件上傳下載組件,適于嵌入執(zhí)行上傳下載操作的JSP文件中。該組件有以下幾個特點:使用簡單。在JSP文件中僅僅書寫幾行JAVA代碼就可以完成文件的上傳或下載。能全程控制上傳。利用jspSmartUpload組件提供的對象及其操作方法,可以獲得全 部上傳文件的信息(包括文件名,大小,類型,擴展名,文件數(shù)據(jù)等),方便存取。能對上傳的文件在大小、類型等方面做出限制。如此可以濾掉不符合要求的文件。下載靈活。僅寫兩行代碼,就能把Web服務器變成文件服務器。1File類這個類包裝了一個上傳文件的所有信息。通過它,可以得到上傳文件的文件名、文件大小、擴展名、文件數(shù)據(jù)等信息。方法原型功能saveAspublicvoidsaveAs(java.lang.StringdestFilePathName)或publicvoidsaveAs(java.lang.StringdestFilePathName,intoptionSaveAs)其中,destFilePathName是另存的文件名,optionSaveAs是另存的選項,該選項有三個值,分別是SAVEAS_PHYSICAL,SAVEAS_VIRTUAL,SAVEAS_AUTO。SAVEAS_PHYSICAL表明以操作系統(tǒng)的根目錄為文件根目錄另存文件,SAVEAS_VIRTUAL表明以Web應用程序的根目錄為文件根目錄另存文件,SAVEAS_AUTO則表示讓組件決定,當Web應用程序的根目錄存在另存文件的目錄時,它會選擇SAVEAS_VIRTUAL,否則會選擇SAVEAS_PHYSICAL。將文件換名另存isMissingpublicbooleanisMissing()這個方法用于判斷用戶是否選擇了文件,也即對應的表單項是否有值。選擇了文件時,它返回false。未選文件時,它返回true。getFileNamepublicStringgetFileName()取文件名(不含目錄信息)getSizepublicintgetSize()取文件長度(以字節(jié)計)2Files類這個類表示所有上傳文件的集合,通過它可以得到上傳文件的數(shù)目、大小等信息。方法原型功能getCountpublicintgetCount()取得上傳文件的數(shù)目getFilepublicFilegetFile(intindex)其中,index為指定位移,其值在0到getCount()-1之間。取得指定位移處的文件對象File(這是com.jspsmart.upload.File,不是java.io.File,注意區(qū)分)getSizepubliclonggetSize()取得上傳文件的總長度,可用于限制一次性上傳的數(shù)據(jù)量大小。3Request類

這個類的功能等同于JSP內置的對象request。之所以提供這個類,是因為對于文件上傳表單,通過request對象無法獲得表單項的值,必須通過jspSmartUpload組件提供的Request對象來獲取。該類提供getParameter方法,用于獲取指定參數(shù)之值。當參數(shù)不存在時,返回值為null。其原型為publicStringgetParameter(Stringname)。其中,name為參數(shù)的名字。4.SmartUpload類這個類完成上傳下載工作。方法原型功能initializepublicfinalvoidinitialize(javax.servlet.jsp.PageContextpageContext)其中,pageContext為JSP頁面內置對象(頁面上下文)。執(zhí)行上傳下載的初始化工作,必須第一個執(zhí)行。uploadpublicvoidupload()上傳文件數(shù)據(jù)。對于上傳操作,第一步執(zhí)行initialize方法,第二步就要執(zhí)行這個方法。savepublicintsave(StringdestPathName)和publicintsave(StringdestPathName,intoption)其中,destPathName為文件保存目錄,option為保存選項,它有三個值,分別是SAVE_PHYSICAL,SAVE_VIRTUAL和SAVE_AUTO。(同F(xiàn)ile類的saveAs方法的選項之值類似)SAVE_PHYSICAL指示組件將文件保存到以操作系統(tǒng)根目錄為文件根目錄的目錄下,SAVE_VIRTUAL指示組件將文件保存到以Web應用程序根目錄為文件根目錄的目錄下,而SAVE_AUTO則表示由組件自動選擇。將全部上傳文件保存到指定目錄下,并返回保存的文件個數(shù)。getSizepublicintgetSize()取上傳文件數(shù)據(jù)的總長度getFilespublicFilesgetFiles()取全部上傳文件,以Files對象形式返回,可以利用Files類的操作方法來獲得上傳文件的數(shù)目等信息。getRequestpublicRequestgetRequest()取得Request對象,以便由此對象獲得上傳表單參數(shù)之值setAllowedFilesListpublicvoidsetAllowedFilesList(StringallowedFilesList)其中,allowedFilesList為允許上傳的文件擴展名列表,各個擴展名之間以逗號分隔。設定允許上傳帶有指定擴展名的文件,當上傳過程中有文件名不允許時,組件將拋出異常。setDeniedFilesListpublicvoidsetDeniedFilesList(StringdeniedFilesList)其中,deniedFilesList為禁止上傳的文件擴展名列表,各個擴展名之間以逗號分隔。用于限制上傳那些帶有指定擴展名的文件。若有文件擴展名被限制,則上傳時組件將拋出異常。setMaxFileSizepublicvoidsetMaxFileSize(longmaxFileSize)其中,maxFileSize為為每個文件允許上傳的最大長度,當文件超出此長度時,將不被上傳。設定每個文件允許上傳的最大長度setTotalMaxFileSizepublicvoidsetTotalMaxFileSize(longtotalMaxFileSize)其中,totalMaxFileSize為允許上傳的文件的總長度。設定允許上傳的文件的總長度,用于限制一次性上傳的數(shù)據(jù)量大小

上傳對表單要求對于上傳文件的FORM表單,有兩個要求:METHOD應用POST,即METHOD="POST"。增加屬性:ENCTYPE="multipart/form-data"上傳的表單域為INPUT,其TYPE為FILE,如:<INPUTTYPE="FILE"NAME="MYFILE">下面是一個用于上傳文件的FORM表單的例子:<formaction="dobookAdd.jsp"method="post"enctype="multipart/form-data"name="bookAdd">封面<inputtype="file"name="bookImage"><br><inputtype="submit"value="增加"></form>[程序代碼Bookadd.jsp][程序代碼dobookadd.jsp]取回口令發(fā)送郵件在網(wǎng)上書店系統(tǒng)中,用戶如果忘記密碼,可以使用“取回口令”功能,如圖7-4、圖7-5所示。用戶輸入自己的用戶名,系統(tǒng)自動把用戶口令發(fā)送到注冊時的email中,通過查看系統(tǒng)發(fā)送的email,就可以找回口令。JavaMail安裝

可以在網(wǎng)上下載JavaMail1.3,解壓Javamail-1_3.zip文件,并將mail.jar文件添加到CLASSPATH中;另外,JavaMailAPI的所有版本都需要JavaBeansActivationFramework來支持任意數(shù)據(jù)塊的輸入及相應處理,因此還需下載JavaBeansActivationFramework(1.0.2版),解壓jaf1_0_2.zip文件,并將activation.jar文件添加到CLASSPATH中。JavaMail的常用類

(1)javax.mail.Properties類JavaMail需要Properties來創(chuàng)建一個session對象。它將尋找字符串"mail.smtp.host",屬性值就是發(fā)送郵件的主機。用法如下:Propertiesprops=newProperties();props.put("mail.smtp.host","");//可以換上你的smtp主機名。(2)javax.mail.Session類Session類定義了一個基本郵件會話(session),是JavaMailAPI最高層入口類。所有其它類都是經(jīng)由這個session才得以生效。Session對象用Java.util.Properties對象獲取信息,如郵件服務器、用戶名、密碼及整個應用程序中共享的其它信息。用法如下:SessionsendMailSession;sendMailSession=Session.getInstance(props,null);(3)javax.mail.MimeMessage類 一旦獲得Session對象,就可以繼續(xù)創(chuàng)建要發(fā)送的消息。這由Message類來完成。因為Message是個抽象類,必需用一個子類,多數(shù)情況下為Jernet.MimeMessage。用法如下:

MessagenewMessage=newMimeMessage(sendMailSession);(4)javax.mail.InternetAddress類 一旦您創(chuàng)建了Session和Message,并將內容填入消息后,就可以用Address確定信件地址了。和Messag一樣,Address也是個抽象類,使用其子類Jernet.InternetAddress類,用法如下:

InternetAddressfrom=newInternetAddress("xxf@");(5)Javax.mail.Authenticator JavaMailAPI利用Authenticator通過用戶名和密碼訪問受保護的資源。對于JavaMailAPI來說,這些資源就是郵件服務器。JavaMailAuthenticator在Javax.mail包中,要使用Authenticator,先創(chuàng)建一個抽象類的子類,并從getPasswordAuthentication()方法中返回PasswordAuthentication實例。創(chuàng)建完成后,您必需向session注冊Authenticator。然后,在需要認證的時候,就會通知Authenticator。您可以彈出窗口,也可以從配置文件中(雖然沒有加密是不安全的)讀取用戶名和密碼,將它們作為PasswordAuthentication對象返回給調用程序。(6)javax.mail.Transport類 消息發(fā)送的最后一部分是使用Transport類。這個類用協(xié)議指定的語言發(fā)送消息(通常是SMTP)。它是抽象類,它的工作方式與Session有些類似。調用靜態(tài)send()方法,如:Transport.send(message)

用JavaMailSession對象的getTransport方法來初始化Transport。傳過去的字符串申明了對象所要使用的協(xié)議,如"smtp"。這將為我們省了很多時間。因為JavaMail內置了很多協(xié)議的實現(xiàn)方法。用法如下:

Transporttransport; transport=sendMailSession.getTransport("smtp");[程序代碼foget.jsp][程序代碼sendMail.jsp]cookie對象在用戶登錄頁面中,我們希望保留最近成功登錄的用戶信息,以后打開登錄頁面,上次成功登錄的用戶自動出現(xiàn)在用戶名編輯框,這樣可以節(jié)省用戶的輸入,并使系統(tǒng)更有人性化。圖7-6為初次登錄頁面,在以dave進行一次成功登錄后,下次打開登錄頁面時如圖7-7所示,可以看到dave已被自動填充。使用Cookie可以實現(xiàn)這樣的功能。Cookie對象是由Web服務器端產生后被保存到瀏覽器中的信息。Cookie對象可以用來保存一些小量的信息在瀏覽器中。cookie與session不同之處就是它他存在于用戶的計算機上,這樣可以減輕服務器計算機的負荷。創(chuàng)建Cookie

建立Cookie的語法為:

CookieobjCookie=new Cookie(indexValue,stringValue)

其中的indexValue為Cookie索引值;stringValue為Cookie內容。寫入Cookie用response的addCookie(objCookie)方法可以把Cookie傳送到客戶端,用

溫馨提示

  • 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

提交評論