JSP程序設(shè)計基礎(chǔ)教程(第7章)_第1頁
JSP程序設(shè)計基礎(chǔ)教程(第7章)_第2頁
JSP程序設(shè)計基礎(chǔ)教程(第7章)_第3頁
JSP程序設(shè)計基礎(chǔ)教程(第7章)_第4頁
JSP程序設(shè)計基礎(chǔ)教程(第7章)_第5頁
已閱讀5頁,還剩71頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

JSP程序設(shè)計基礎(chǔ)教程第7章JSP實用組件《JSP程序設(shè)計基礎(chǔ)教程》課件制作人:王國輝第

7章JSP實用組件7.1JSP文件操作7.2發(fā)送E-mail7.3JSP動態(tài)圖表7.4JSP報表√√√√課件制作人:王國輝7.1JSP文件操作

在Web開發(fā)中,對文件操作是一項非常實用的功能,例如,文件的上傳與下載。在JSP中,常用的文件上傳與下載組件是jspSmartUpload,該組件是一個可免費使用的全功能的文件上傳下載組件。通過該組件可以很方便地實現(xiàn)文件的上傳與下載。課件制作人:王國輝7.1JSP文件操作7.1.1jspSmartUpload組件的安裝與配置7.1.2

jspSmartUpload組件中的常用類7.1.3采用jspSmartUpload組件進(jìn)行文件操作√√√課件制作人:王國輝7.1.1jspSmartUpload組件的安裝與配置

jspSmartUpload組件可以通過網(wǎng)絡(luò)搜索找到相關(guān)網(wǎng)站進(jìn)行下載。下載的文件名為jspSmartUpload.zip,解壓后得到的是一個Web應(yīng)用程序,其目錄結(jié)構(gòu)如下圖所示。default.htm為Web應(yīng)用的首頁面,sample1.htm~sample7.htm文件分別為7個實例中的供用戶選擇上傳文件和下載文件的靜態(tài)頁面,help目錄下存放了jspSmartUpload組件的說明文件,jsp目錄下存放了與sample1.htm~sample7.htm文件對應(yīng)的JSP文件,用來實現(xiàn)當(dāng)前實例中的動態(tài)內(nèi)容,在這些JSP文件中將調(diào)用jspSmartUpload組件中的類來實現(xiàn)文件的上傳或下載,Web-inf目錄下存放的就是jspSmartUpload組件中的類文件。課件制作人:王國輝7.1.1jspSmartUpload組件的安裝與配置

若想運行該Web應(yīng)用,首先將Web-inf目錄名更改為WEB-INF,然后將jspsmartupload整個文件夾拷貝到Tomcat安裝目錄下的webapps目錄下,最后訪問地址“http://localhost:8080/jspsmartupload/default.htm”即可進(jìn)入Web應(yīng)用的首頁面,運行結(jié)果如下圖所示。課件制作人:王國輝7.1.1jspSmartUpload組件的安裝與配置

可以通過如下的方法將Web-inf\classes目錄下的文件打包成自己的JAR文件,以便在以后的程序開發(fā)時,可直接通過將該文件拷貝到應(yīng)用的WEB-INF\lib目錄下來應(yīng)用jspSmartUpload組件實現(xiàn)文件的上傳與下載。

(1)若JDK安裝在了C:\jdk1.6.0_03目錄下,則環(huán)境變量的系統(tǒng)變量中應(yīng)存在如下的配置:JAVA_HOME=C:\jdk1.6.0_03PATH=%JAVA_HOME%\bin

(2)打開“命令提示符”窗口,進(jìn)入到j(luò)spSmartUpload.zip文件解壓后的目錄的classes子目錄下,輸入以下命令行進(jìn)行文件打包:課件制作人:王國輝7.1.1jspSmartUpload組件的安裝與配置

可以通過如下的方法將Web-inf\classes目錄下的文件打包成自己的JAR文件,以便在以后的程序開發(fā)時,可直接通過將該文件拷貝到應(yīng)用的WEB-INF\lib目錄下來應(yīng)用jspSmartUpload組件實現(xiàn)文件的上傳與下載。

(1)若JDK安裝在了C:\jdk1.6.0_03目錄下,則環(huán)境變量的系統(tǒng)變量中應(yīng)存在如下的配置:JAVA_HOME=C:\jdk1.6.0_03PATH=%JAVA_HOME%\bin

(2)打開“命令提示符”窗口,進(jìn)入到j(luò)spSmartUpload.zip文件解壓后的目錄的classes子目錄下,輸入以下命令行進(jìn)行文件打包:課件制作人:王國輝7.1.1jspSmartUpload組件的安裝與配置jarcvf

jspSmartUpload.jarcomservletUpload.class

servletUpload.javacom為classes目錄下的com文件夾,jspSmartUpload.jsp文件即為打包后的文件。課件制作人:王國輝7.1.2jspSmartUpload組件中的常用類

在jspSmartUpload組件中主要包含了File,F(xiàn)iles,Request和SmartUpload核心類,下面對這些核心類分別進(jìn)行介紹。該類不同于java.io.File類,在編寫程序時應(yīng)注意使用。File類用于保存單個上傳文件的相關(guān)信息,如上傳文件的文件名、文件大小、文件數(shù)據(jù)等,F(xiàn)ile類的常用方法如下表所示。1.File類課件制作人:王國輝7.1.2jspSmartUpload組件中的常用類方法說明saveAs()該方法用于保存文件isMissing()該方法用于判斷用戶是否選擇了文件,即表單中對應(yīng)的<inputtype=“file”>標(biāo)記實現(xiàn)的文件選擇域中是否有值,該方法返回boolean型值,選擇了文件時,返回false,否則返回truegetFieldName()獲取Form表單中當(dāng)前上傳文件所對應(yīng)的表單項的名稱getFileName()獲取文件的文件名,該文件名不包含目錄getFilePathName()獲取文件的文件全名,獲取的值是一個包含目錄的完整文件名getFileExt()獲取文件的擴(kuò)展名,即后綴名,不包含“.”符號getContentType()獲取文件MIME類型,如“text/plain”getContentString()獲取文件的內(nèi)容,返回值為String型getSize()獲取文件的大小,單位byte,返回值為int型getBinaryData(intindex)獲取文件數(shù)據(jù)中參數(shù)index指定位置處的一個字節(jié),用于檢測文件課件制作人:王國輝7.1.2jspSmartUpload組件中的常用類

Files類中的saveAs()方法用于保存文件,在File類中提供了以下兩種形式的saveAs()方法:

這兩個方法都沒有返回值,第一種形式與saveAs(destFilePathName,0)執(zhí)行效果相同。destFilePathName:指定文件保存的路徑,包括文件名,其值應(yīng)以“/”開頭。optionSaveAs:保存目標(biāo)選項。該選項有3個值,分別是SAVEAS_AUTO、SAVEAS_VIRTUAL和SAVEAS_PHYSICAL。它們是File類中的靜態(tài)字段,分別表示整數(shù)0、1和2。saveAs(String

destFilePathName)方法saveAs(String

destFilePathName,int

optionSaveAs)方法課件制作人:王國輝7.1.2jspSmartUpload組件中的常用類

將optionSaveAs參數(shù)設(shè)為SAVEAS_VIRTUAL選項值,則通知jspSmartUpload組件以web應(yīng)用的根目錄為文件根目錄,然后加上destFilePathName參數(shù)指定的路徑來保存文件;設(shè)為SAVEAS_PHYSICAL值,則一種情況是通知jspSmartUpload組件將以Web服務(wù)器的安裝路徑中的磁盤根目錄為文件根目錄,然后加上destFilePathName參數(shù)指定的路徑來保存文件,另一種情況則以destFilePathName參數(shù)指定的目錄為最終目錄來保存文件;設(shè)為SAVEAS_AUTO值,則首先以SAVEAS_VIRTUAL方式來保存文件,若Web應(yīng)用下由destFilePathName參數(shù)指定的路徑不存在,則以SAVEAS_PHYSICAL方式保存文件。例如,若Web服務(wù)器(Tomcat)的安裝目錄為“C:\Tomcat6.0”,當(dāng)前web應(yīng)用為“FileUpDown”時,下面分別應(yīng)用這3個選項保存文件。課件制作人:王國輝7.1.2jspSmartUpload組件中的常用類

(1)使用SAVEAS_VIRTUAL選項值saveAs("/file/myfile.txt",File.SAVEAS_VIRTUAL)或saveAs("/file/myfile.txt",1)

若FileUpDown應(yīng)用下存在“file”子目錄,則將上傳的文件以“myfile.txt”為文件名進(jìn)行保存,實際的保存路徑如下:C:\Tomcat6.0\webapps\FileUpDown\file\myfile.txt

若不存在“file”子目錄,則拋出下面的異常:Thispathdoesnotexist(1135)

(2)使用SAVEAS_PHYSICAL選項值saveAs("/file/myfile.txt",File.SAVEAS_PHYSICAL)或saveAs("/file/myfile.txt",2)課件制作人:王國輝7.1.2jspSmartUpload組件中的常用類

因為Tomcat安裝在C盤,因此若C盤根目錄下存在“file”子目錄,則將上傳的文件以“myfile.txt”為文件名進(jìn)行保存,實際的保存路徑如下:C:\file\myfile.txt

若C盤根目錄下不存在file子目錄,而FileUpDown應(yīng)用的根目錄下存在file子目錄,則拋出下面的異常:Thepathisnotaphysicalpath

否則拋出下面的異常:Thispathdoesnotexist(1135)課件制作人:王國輝7.1.2jspSmartUpload組件中的常用類

使用SAVEAS_PHYSICAL選項值時,可以將上傳的文件保存到由destFilePathName參數(shù)指定的一個具體的目錄下,如:saveAs("D:/temp/myfile.txt",File.SAVEAS_PHYSICAL)

最終文件的實際保存路徑如下:D:\temp\myfile.txt

(3)使用SAVEAS_AUTO選項值saveAs("/file/myfile.txt",File.SAVEAS_AUTO)或saveAs("/file/myfile.txt",0)

若FileUpDown應(yīng)用根目錄下存在“file”子目錄,則以SAVEAS_VIRTUAL方式保存文件,否則以SAVEAS_PHYSICAL方式保存文件。通常情況下應(yīng)使用SAVEAS_VIRTUAL方式保存文件,以便程序的移植。課件制作人:王國輝7.1.2jspSmartUpload組件中的常用類

Files類存儲了所有上傳的文件,通過類中的方法可獲得上傳文件的數(shù)量和總長度等信息。Files類中的常用方法如下表所示。2.Files類方法說明getCount()獲取上傳文件的數(shù)目,返回值為int型getSize()獲取上傳文件的總長度,單位byte,返回值為long型getFile(intindex)獲取參數(shù)index指定位置處的com.jspsmart.upload.File對象getCollection()將所有File對象以Collection形式返回getEnumeration()將所有File對象以Enumeration形式返回課件制作人:王國輝7.1.2jspSmartUpload組件中的常用類

Files類中的getCollection()方法和getEnumeration()方法將所有的File對象分別以Collection和Enumeartion形式返回,它們的源代碼如下。

(1)getCollection()方法將所有File對象以Collection的形式返回,以便其他應(yīng)用程序引用,該方法的具體代碼如下:publicCollectiongetCollection(){returnm_files.values();}

其中m_files為Files類中的屬性,其類型為Hashtable,它存儲了所有的File對象。課件制作人:王國輝7.1.2jspSmartUpload組件中的常用類

(2)getEnumeration()方法將所有File對象以Enumeration形式返回,以便其他應(yīng)用程序引用,該方法的具體代碼如下:publicEnumerationgetEnumeration(){returnm_files.elements();}

m_files為Files類中的屬性,其類型為Hashtable,它存儲了所有的File對象。3.Request類課件制作人:王國輝7.1.2jspSmartUpload組件中的常用類

設(shè)置該類的目的,是因為當(dāng)Form表單用來實現(xiàn)文件上傳時,通過JSP的內(nèi)置對象request的getParameter()方法無法獲取其他表單項的值,所以提供了該類來獲取,Request類中提供的方法如下表所示。方法說明getParameter(Stringname)獲取Form表單中由參數(shù)name指定的表單元素的值,如<inputtype=“text”name=“user”>,當(dāng)該表單元素不存在時,返回nullgetParameterNames()獲取Form表單中除<inputtype=“file”>外的所有表單元素的名稱,它返回一個枚舉型對象getParameterValues(Stringname)獲取Form表單中多個具有相同名稱的表單元素的值,該名稱由參數(shù)name指定,該方法返回一個字符串?dāng)?shù)組課件制作人:王國輝7.1.2jspSmartUpload組件中的常用類

SmartUpload類用于實現(xiàn)文件的上傳與下載操作,該類中提供的方法如下。(1)文件上傳與文件下載必須實現(xiàn)的方法在使用jspSmartUpload組件實現(xiàn)文件上傳與下載時,必須先實現(xiàn)initialize()方法。在SmartUpload類中提供了該方法的3種形式:4.SmartUpload類initialize(ServletConfig

config,HttpServletRequestrequest,HttpServletResponseresponse)initialize(ServletContextapplication,HttpSessionsession,HttpServletRequestrequest,HttpServletResponseresponse,JspWriterout)initialize(PageContext

pageContext)課件制作人:王國輝7.1.2jspSmartUpload組件中的常用類

通常應(yīng)用第3種形式的方法,該方法中的pageContext參數(shù)為JSP的內(nèi)置對象(頁面上下文)。(2)文件上傳使用的方法實現(xiàn)文件上傳,首先應(yīng)實現(xiàn)initialize()方法,然后實現(xiàn)如下的兩個方法即可將文件上傳到服務(wù)器中。①upload()方法實現(xiàn)了initialize()方法后,緊接著就應(yīng)實現(xiàn)該方法。upload()方法用來完成一些準(zhǔn)備操作。首先在該方法中調(diào)用JSP的內(nèi)置對象request的getInputStream()方法獲取客戶端的輸入流,然后通過該輸入流的read()方法讀取用戶上傳的所有文件數(shù)據(jù)到字節(jié)數(shù)組中,然后在循環(huán)語句中從該字節(jié)數(shù)組中提取每個文件的數(shù)據(jù),并將當(dāng)前提取出的文件的信息封裝到File類對象中,最后將該File類對象通過Files類的addFile()方法添加到Files類對象中。課件制作人:王國輝7.1.2jspSmartUpload組件中的常用類②save()方法在實現(xiàn)了initialize()方法和upload()方法后,通過調(diào)用該方法就可將全部上傳文件保存到指定目錄下,并返回保存的文件個數(shù)。該方法具有以下兩種形式:

第一個方法等同于save(destPathName,0)或save(destPathName,File.SAVE_AUTO)。

實際上在SmartUpload類的save()方法中最終是調(diào)用File類中的saveAs()方法保存文件的,所以save()方法中的參數(shù)使用與File類的saveAs()方法中的參數(shù)使用是相同的。但在save()方法中option參數(shù)指定的保存選項的可選值為SAVE_AUTO,SAVE_VIRTUAL和SAVE_PHYSICAL。它們是SmartUpload類中的靜態(tài)字段,分別表示整數(shù)0、1和2。save(String

destPathName)save(String

destPathName,intoption)課件制作人:王國輝7.1.2jspSmartUpload組件中的常用類僅僅通過以上的兩個方法就實現(xiàn)了文件的上傳。下面介紹SmartUpload類中可用來限制上傳文件和獲取其他信息的主要方法。①setDeniedFilesList(StringdeniedFilesList)方法該方法用于設(shè)置禁止上傳的文件。其中參數(shù)deniedFilesList指定禁止上傳文件的擴(kuò)展名,多個擴(kuò)展名之間以逗號分隔。若禁止上傳沒有擴(kuò)展名的文件,以“,,”表示。例如,setDeniedFilesList("exe,jsp,,bat")表示禁止上傳*.exe、*.jsp、*.bat和不帶擴(kuò)展名的文件。②setAllowedFilesList(StringallowedFilesList)方法該方法用于設(shè)置允許上傳的文件。其中參數(shù)allowedFilesList指定允許上傳文件的擴(kuò)展名,多個擴(kuò)展名之間以逗號分隔。若允許上傳沒有擴(kuò)展名的文件,以“,,”表示。例如,setAllowedFilesList("txt,doc,,")表示只允許上傳*.txt、*.doc和不帶擴(kuò)展名的文件。課件制作人:王國輝7.1.2jspSmartUpload組件中的常用類

上述的對上傳文件進(jìn)行限制的方法,需在upload()方法之前調(diào)用。下面為SmartUpload類中的獲取文件信息的方法。③setMaxFileSize(longmaxFileSize)方法該方法用于設(shè)定允許每個文件上傳的最大長度,該長度由參數(shù)maxFileSize指定。④setTotalMaxFileSize(longtotalMaxFileSize)方法該方法用于設(shè)置允許上傳文件的總長度,該長度由參數(shù)totalMaxFileSize指定。①getSize()方法該方法用于獲取上傳文件的總長度,其具體代碼如下:課件制作人:王國輝7.1.2jspSmartUpload組件中的常用類

其中m_totalBytes為SmartUpload類中的屬性,表示上傳文件的總長度,它是在upload()方法中通過調(diào)用JSP內(nèi)置對象request的getContentLength()方法被賦值的。②getFiles()方法獲取全部上傳文件,以Files對象形式返回。③getRequest()方法獲取com.jspsmart.upload.Request對象,然后通過該對象獲得上傳的表單中其他表單項的值。publicint

getSize(){returnm_totalBytes;}(3)文件下載使用的方法課件制作人:王國輝7.1.2jspSmartUpload組件中的常用類①setContentDisposition(StringcontentDisposition)方法該方法用于將數(shù)據(jù)追加到MIME文件頭的CONTENT-DISPOSITION域。參數(shù)contentDisposition為要添加的數(shù)據(jù)。進(jìn)行文件下載時,將contentDispotition設(shè)為null,則組件將自動添加“attachment”,表示將下載的文件作為附件,IE瀏覽器會彈出“文件下載”對話框,而不是自動打開這個文件(IE瀏覽器一般根據(jù)下載的文件擴(kuò)展名決定執(zhí)行什么操作,擴(kuò)展名為doc的文件將用Word打開)。②downloadFile()方法downloadFile()方法實現(xiàn)文件下載,SmartUpload類中提供了以下4種形式的downloadFile()方法:downloadFile(String

sourceFilePathName)downloadFile(String

sourceFilePathName,StringcontentType)downloadFile(String

sourceFilePathName,StringcontentType,StringdestFileName)downloadFile(String

sourceFilePathName,StringcontentType,StringdestFileName,int

blockSize)課件制作人:王國輝7.1.2jspSmartUpload組件中的常用類

sourceFilePathName:用于指定要下載文件的文件名(可帶目錄,如/file/myfile.txt或E:/file/myfile.text),若該文件名存在當(dāng)前應(yīng)用下,則sourceFilePathName=pageContext.getServletContext().getRealPath(sourceFilePathName)。contentType:定一個文件內(nèi)容類型(MIME格式的文件類型信息)。destFileName:指定下載的文件另存為的文件名。blockSize:指定存儲讀取的文件數(shù)據(jù)的字節(jié)數(shù)組的大小,默認(rèn)值為65000。通常使用第一種方法,如果需要更改文件的內(nèi)容類型,或者更改下載文件另存為的文件名,或者更改用來存儲讀取的文件數(shù)據(jù)的字節(jié)數(shù)組的大小時,可應(yīng)用后面的三種方法。課件制作人:王國輝7.1.3采用jspSmartUpload組件進(jìn)行文件操作

jspSmartUpload組件最常用的功能就是實現(xiàn)文件的上傳與下載。本節(jié)將通過一個具體的實例介紹應(yīng)用jspSmartUpload組件實現(xiàn)文件上傳與下載的方法。

【例7-1】采用jspSmartUpload組件實現(xiàn)文件上傳及下載課件制作人:王國輝7.2發(fā)送E-mail7.2.1JavaMail組件簡介7.2.2JavaMail核心類簡介7.2.3搭建Java

Mail的開發(fā)環(huán)境7.2.4在JSP中應(yīng)用Java

Mail組件發(fā)送E-mail√√√√課件制作人:王國輝7.2.1JavaMail組件簡介

JavaMail是Sun公司發(fā)布用來處理E-mail的API,是一種可選的、用于讀取、編寫和發(fā)送電子消息的包(標(biāo)準(zhǔn)擴(kuò)展)。使用JavaMail可以創(chuàng)建MUA(郵件用戶代理“MailUserAgent”的簡稱)類型的程序,它類似于Eudora、Pine及MicrosoftOutlook等郵件程序。其主要目的不是像發(fā)送郵件或提供MTA(郵件傳輸代理“MailTransferAgent”的簡稱)類型程序那樣用于傳輸、發(fā)送和轉(zhuǎn)發(fā)消息,而是可以與MUA類型的程序交互,以閱讀和撰寫電子郵件。MUA依靠MTA處理實際的發(fā)送任務(wù)。課件制作人:王國輝7.2.2JavaMail核心類簡介

JavaMailAPI中提供很多用于處理E-mail的類,其中比較常用的有:Session(會話)類、Message(消息)類、Address(地址)類、Authenticator(認(rèn)證方式)類、Transport(傳輸)類、Store(存儲)類和Folder(文件夾)類等7個類。這7個類都可以在JavaMail

API的核心包mail.jar中找到。

JavaMailAPI中提供了Session類,用于定義保存諸如SMTP主機(jī)和認(rèn)證的信息的基本郵件會話。通過Session會話可以阻止惡意代碼竊取其他用戶在會話中的信息(包括用戶名和密碼等認(rèn)證信息),從而讓其他工作順利執(zhí)行。1.Session類課件制作人:王國輝7.2.2JavaMail核心類簡介

每個基于Java

Mail的程序都需要創(chuàng)建一個Session或多個Session對象。由于Session對象利用java.util.Properties對象獲取諸如郵件服務(wù)器、用戶名、密碼等信息,以及其他可在整個應(yīng)用程序中共享的信息,所以在創(chuàng)建Session對象前,需要先創(chuàng)建java.util.Properties對象。創(chuàng)建java.util.Properties對象的代碼如下:

創(chuàng)建Session對象可以通過以下兩種方法,不過,通常情況下會使用第二種方法創(chuàng)建共享會話。(1)使用靜態(tài)方法創(chuàng)建Session的語句如下:Propertiesprops=newProperties();Sessionsession=Session.getInstance(props,authenticator);課件制作人:王國輝7.2.2JavaMail核心類簡介

props為java.util.Properties類的對象,authenticator為Authenticator對象,用于指定認(rèn)證方式。(2)創(chuàng)建默認(rèn)的共享Session的語句如下:

props為java.util.Properties類的對象,authenticator為Authenticator對象,用于指定認(rèn)證方式。如果在進(jìn)行郵件發(fā)送時,不需要指定認(rèn)證方式,可以使用空值(null)作為參數(shù)authenticator的值,例如,創(chuàng)建一個不需要指定認(rèn)證方式的Session對象的代碼如下:SessiondefaultSession=Session.getDefaultInstance(props,authenticator);SessionmailSession=Session.getDefaultInstance(props,null);課件制作人:王國輝7.2.2JavaMail核心類簡介

Message類是電子郵件系統(tǒng)的核心類,用于存儲實際發(fā)送的電子郵件信息。Message類是一個抽象類,要使用該抽象類可以使用其子類MimeMessage,該類保存在ernet包中,可以存儲MIME類型和報頭(在不同的RFC文檔中均有定義)消息,并且將消息的報頭限制成只能使用US-ASCII字符,盡管非ASCII字符可以被編碼到某些報頭字段中。如果想對MimeMessage類進(jìn)行操作,首先要實例化該類的一個對象,在實例化該類的對象時,需要指定一個Session對象,這可以通過將Session對象傳遞給MimeMessage的構(gòu)造方法來實現(xiàn),例如,實例化MimeMessage類的對象message的代碼如下:2.Message類課件制作人:王國輝7.2.2JavaMail核心類簡介

實例化MimeMessage類的對象msg后,就可以通過該類的相關(guān)方法設(shè)置電子郵件信息的詳細(xì)信息。MimeMessage類中常用的方法包括以下幾個。MimeMessage

msg=newMimeMessage(mailSession);setText(Stringcontent)(1)setText()方法setText()方法用于指定純文本信息的郵件內(nèi)容。該方法只有一個參數(shù),用于指定郵件內(nèi)容。setText()方法的語法格式如下:content:純文本的郵件內(nèi)容。課件制作人:王國輝7.2.2JavaMail核心類簡介

(2)setContent()方法setContent()方法用于設(shè)置電子郵件內(nèi)容的基本機(jī)制,多數(shù)應(yīng)用在發(fā)送HTML等純文本以外的信息。該方法包括兩個參數(shù),分別用于指定郵件內(nèi)容和MIME類型。setContent()方法的語法格式如下:content:用于指定郵件內(nèi)容。type:用于指定郵件內(nèi)容類型。例如,指定郵件內(nèi)容為“你現(xiàn)在好嗎”,類型為普通的文本,代碼如下:setContent(Objectcontent,Stringtype)message.setContent("你現(xiàn)在好嗎","text/plain");課件制作人:王國輝7.2.2JavaMail核心類簡介(3)setSubject()方法setSubject()方法用于設(shè)置郵件的主題。該方法只有一個參數(shù),用于指定主題內(nèi)容。setSubject()方法的語法格式如下:subject:用于指定郵件的主題。(4)saveChanges()方法saveChanges()方法能夠保證報頭域同會話內(nèi)容保持一致。saveChanges()方法的使用方法如下:setSubject(Stringsubject)msg.saveChanges();(5)setFrom()方法課件制作人:王國輝7.2.2JavaMail核心類簡介setFrom()方法用于設(shè)置發(fā)件人地址。該方法只有一個參數(shù),用于指定發(fā)件人地址,該地址為InternetAddress類的一個對象。setFrom()方法的使用方法如下:(6)setRecipients()方法setRecipients()方法用于設(shè)置收件人地址。該方法有兩個參數(shù),分別用于指定收件人類型和收件人地址。setRecipients()方法的語法格式如下:msg.setFrom(new

InternetAddress(from));setRecipients(RecipientTypetype,InternetAddress

addres);type:收件人類型。可以使用以下3個常量來區(qū)分收件人的類型。課件制作人:王國輝7.2.2JavaMail核心類簡介①Message.RecipientType.TO//發(fā)送②Message.RecipientType.CC//抄送③Message.RecipientType.BCC//暗送addres:收件人地址,可以為InternetAddress類的一個對象或多個對象組成的數(shù)組。例如,設(shè)置收件人的地址為“wgh8007@163.com”的代碼如下:address=InternetAddress.parse("wgh8007@163.com",false);msg.setRecipients(Message.RecipientType.TO,toAddrs);(7)setSentDate()方法setSentDate()方法用于設(shè)置發(fā)送郵件的時間。該方法只有一個參數(shù),用于指定發(fā)送郵件的時間。setSentDate()方法的語法格式如下:課件制作人:王國輝7.2.2JavaMail核心類簡介date:用于指定發(fā)送郵件的時間。(8)getContent()方法getContent()方法用于獲取消息內(nèi)容,該方法無參數(shù)。(9)writeTo()方法writeTo()方法用于獲取消息內(nèi)容(包括報頭信息),并將其內(nèi)容寫到一個輸出流中。該方法只有一個參數(shù),用于指定輸出流。writeTo()方法的語法格式如下:setSentDate(Datedate);writeTo(OutputStream

os)os:用于指定輸出流。課件制作人:王國輝7.2.2JavaMail核心類簡介

Address類用于設(shè)置電子郵件的響應(yīng)地址。Address類是一個抽象類,要使用該抽象類可以使用其子類InternetAddress,該類保存在ernet包中,可以按照指定的內(nèi)容設(shè)置電子郵件的地址。如果想對InternetAddress類進(jìn)行操作,首先要實例化該類的一個對象,在實例化該類的對象時,有以下兩種方法。3.Address類

(1)創(chuàng)建只帶有電子郵件地址的地址,可以把電子郵件地址傳遞給InternetAddress類的構(gòu)造方法,代碼如下:InternetAddressaddress=newInternetAddress("wgh717@");課件制作人:王國輝7.2.2JavaMail核心類簡介

(2)創(chuàng)建帶有電子郵件地址并顯示其他標(biāo)識信息的地址,可以將電子郵件地址和附加信息同時傳遞給InternetAddress類的構(gòu)造方法,代碼如下:說明:JavaMailAPI沒有提供檢查電子郵件地址有效性的機(jī)制。如果需要可以自己編寫檢查電子郵件地址是否有效的方法。InternetAddressaddress=newInternetAddress("wgh717@","WangGuoHui");課件制作人:王國輝7.2.2JavaMail核心類簡介

Authenticator類通過用戶名和密碼來訪問受保護(hù)的資源。Authenticator類是一個抽象類,要使用該抽象類首先需要創(chuàng)建一個Authenticator的子類,并重載getPasswordAuthentication()方法,具體代碼如下:4.Authenticator類classWghAuthenticatorextendsAuthenticator{publicPasswordAuthentication

getPasswordAuthentication(){Stringusername="wgh"; //郵箱登錄賬號Stringpwd="111"; //登錄密碼returnnewPasswordAuthentication(username,pwd);}}課件制作人:王國輝7.2.2JavaMail核心類簡介

然后再通過以下代碼實例化新創(chuàng)建的Authenticator的子類,并將其與Session對象綁定:

Transport類用于使用指定的協(xié)議(通常是SMTP)發(fā)送電子郵件。Transport類提供了以下兩種發(fā)送電子郵件的方法。Authenticatorauth=newWghAuthenticator();Sessionsession=Session.getDefaultInstance(props,auth);4.Transport類

(1)只調(diào)用其靜態(tài)方法send(),按照默認(rèn)協(xié)議發(fā)送電子郵件,代碼如下:Transport.send(message);課件制作人:王國輝7.2.2JavaMail核心類簡介

(2)首先從指定協(xié)議的會話中獲取一個特定的實例,然后傳遞用戶名和密碼,再發(fā)送信息,最后關(guān)閉連接,代碼如下:Transporttransport=sess.getTransport("smtp");transport.connect(servername,from,password);transport.sendMessage(message,message.getAllRecipients());transport.close();

在發(fā)送多個消息時,建議采用第二種方法,因為它將保持消息間活動服務(wù)器的連接,而使用第一種方法時,系統(tǒng)將為每一個方法的調(diào)用建立一條獨立的連接。注意:如果想要查看經(jīng)過郵件服務(wù)器發(fā)送郵件的具體命令,可以用session.setDebug(true)方法設(shè)置調(diào)試標(biāo)志。課件制作人:王國輝7.2.2JavaMail核心類簡介

Store類定義了用于保存文件夾間層級關(guān)系的數(shù)據(jù)庫,以及包含在文件夾之中的信息,該類也可以定義存取協(xié)議的類型,以便存取文件夾與信息。在獲取會話后,就可以使用用戶名和密碼或Authenticator類來連接Store類。與Transport類一樣,首先要告訴Store類將使用什么協(xié)議:使用POP3協(xié)議連接Stroe類,代碼如下:6.Store類Storestore=session.getStore("pop3");store.connect(host,username,password);使用IMAP協(xié)議連接Stroe類,代碼如下:課件制作人:王國輝7.2.2JavaMail核心類簡介說明:如果使用POP3協(xié)議,只可以使用INBOX文件夾,但是使用IMAP協(xié)議,則可以使用其他的文件夾。Storestore=session.getStore("imap");store.connect(host,username,password);store.close();在使用Store類讀取完郵件信息后,需要及時關(guān)閉連接。關(guān)閉Store類的連接可以使用以下代碼:Folder類定義了獲?。╢etch)、備份(copy)、附加(append)及以刪除(delete)信息等的方法。7.Folder類課件制作人:王國輝7.2.2JavaMail核心類簡介

在連接Store類后,就可以打開并獲取Folder類中的消息。打開并獲取Folder類中的信息的代碼如下:

在使用Folder類讀取完郵件信息后,需要及時關(guān)閉對文件夾存儲的連接。關(guān)閉Folder類的連接的語法格式如下:Folderfolder=store.getFolder("INBOX");folder.open(Folder.READ_ONLY);Messagemessage[]=folder.getMessages();boolean:用于指定是否通過清除已刪除的消息來更新文件夾。folder.close(Booleanboolean);課件制作人:王國輝7.2.3搭建Java

Mail的開發(fā)環(huán)境

由于目前Java

Mail還沒有被加在標(biāo)準(zhǔn)的Java開發(fā)工具中,所以在使用前必須另外下載JavaMailAPI,以及Sun公司的JAF(JavaBeansActivationFramework),Java

Mail的運行必須依賴于JAF的支持。

JavaMailAPI是發(fā)送E-mail的核心API,它可以到網(wǎng)址“/products/javamail/downloads/index.html”中下載,目前最新版本的文件名為javamail-1_4.zip。下載后解壓縮到硬盤上,并在系統(tǒng)的環(huán)境變量CLASSPATH中指定mail.jar文件的放置路徑,例如,將mail.jar文件復(fù)制到“C:\JavaMail”文件夾中,可以在環(huán)境變量CLASSPATH中添加以下代碼:1.下載并構(gòu)建JavaMailAPI課件制作人:王國輝7.2.3搭建Java

Mail的開發(fā)環(huán)境

目前JavaMailAPI的所有版本都需要JAF的支持。JAF為輸入的任意數(shù)據(jù)塊提供了支持,并能相應(yīng)地對其進(jìn)行處理。JAF可以到網(wǎng)址“/products/javabeans/jaf/downloads/index.html”中下載,當(dāng)前最新版本的JAF文件名為jaf-1_1-fr.zip,下載后解壓縮到硬盤上,并在系統(tǒng)的環(huán)境變量CLASSPATH中指定activation.jar文件的放置路徑,例如,將activation.jar文件復(fù)制到“C:\JavaMail”文件夾中,可以在環(huán)境變量CLASSPATH中添加以下代碼:2.下載并構(gòu)建JAFC:\JavaMail\mail.jar;

如果不想更改環(huán)境變量,也可以把mail.jar放到實例程序的WEB-INF/lib目錄下。課件制作人:王國輝7.2.3搭建Java

Mail的開發(fā)環(huán)境

目前JavaMailAPI的所有版本都需要JAF的支持。JAF為輸入的任意數(shù)據(jù)塊提供了支持,并能相應(yīng)地對其進(jìn)行處理。JAF可以到網(wǎng)址“/products/javabeans/jaf/downloads/index.html”中下載,當(dāng)前最新版本的JAF文件名為jaf-1_1-fr.zip,下載后解壓縮到硬盤上,并在系統(tǒng)的環(huán)境變量CLASSPATH中指定activation.jar文件的放置路徑,例如,將activation.jar文件復(fù)制到“C:\JavaMail”文件夾中,可以在環(huán)境變量CLASSPATH中添加以下代碼:2.下載并構(gòu)建JAFC:\JavaMail\activation.jar;

如果不想更改環(huán)境變量,也可以把a(bǔ)ctivation.jar放到實例程序的WEB-INF/lib目錄下。課件制作人:王國輝7.2.4在JSP中應(yīng)用Java

Mail組件發(fā)送E-mail

【例7-2】發(fā)送普通文本格式的E-mail。實例運行結(jié)果如下圖所示。

jspSmartUpload組件最常用的功能就是實現(xiàn)發(fā)送E-mail。本節(jié)將通過一個具體的實例介紹應(yīng)用jspSmartUpload組件發(fā)送E-mail的方法。課件制作人:王國輝7.3JSP動態(tài)圖表7.3.1JFreeChart的下載與使用7.3.2JFreeChart的核心類7.3.3利用JFreeChart生成動態(tài)圖表√√√

JFreeChart是一個Java開源項目,是一款優(yōu)秀的Java圖表生成插件,它提供了在JavaApplication、Servlet和JSP下生成各種圖片格式的圖表,包括柱形圖、餅形圖、線圖、區(qū)域圖、時序圖和多軸圖等。課件制作人:王國輝7.3.1JFreeChart的下載與使用

在JFreeChart的官方網(wǎng)站(/jfreechart/index.html)上可以下載到該插件,該插件有兩個版本:(1)jfreechart-1.0.5.zip,該版本適用于Windows系統(tǒng);(2)jfreechart-1.0.5.tar.gz,該版本適用于UNIX/Linux系統(tǒng)。下面以Windows系統(tǒng)為例,介紹JFreeChart組件的使用。解壓縮jfreechart-1.0.9.zip后將得到一個名為jfreechart-1.0.9的文件夾,只需將lib子文件夾內(nèi)的jfreechart-1.0.9.jar和jcommon-1.0.12.jar兩個文件拷貝到Web應(yīng)用程序的WEB-INF下的lib文件夾內(nèi),并且在該Web應(yīng)用程序的web.xml文件中,</web-app>前面添加如下代碼:課件制作人:王國輝7.3.1JFreeChart的下載與使用<servlet> <servlet-name>DisplayChart</servlet-name> <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class></servlet><servlet-mapping> <servlet-name>DisplayChart</servlet-name> <url-pattern>/servlet/DisplayChart</url-pattern></servlet-mapping>

這樣,就可以利用JFreeChart組件生成動態(tài)統(tǒng)計圖表了。利用JFreeChart組件生成動態(tài)統(tǒng)計圖表的基本步驟如下:課件制作人:王國輝7.3.1JFreeChart的下載與使用(1)創(chuàng)建繪圖數(shù)據(jù)集合;(2)創(chuàng)建JFreeChart實例;(3)自定義圖表繪制屬性,該步可選;(4)生成指定格式的圖片,并返回圖片名稱;(5)組織圖片瀏覽路徑;(6)通過HTML中的<img>標(biāo)記顯示圖片。課件制作人:王國輝7.3.2JFreeChart的核心類

在使用JFreeChart組件之前,首先應(yīng)該了解該組件的核心類及其功能。JFreeChart核心類如下表所示。方法說明JFreeChart圖表對象,生成任何類型的圖表都要通過該對象,JFreeChart插件提供了一個工廠類ChartFactory,用來創(chuàng)建各種類型的圖表對象XXXDataset數(shù)據(jù)集對象,用來保存繪制圖表的數(shù)據(jù),不同類型的圖表對應(yīng)著不同類型的數(shù)據(jù)集對象XXXPlot繪圖區(qū)對象,如果需要自行定義繪圖區(qū)的相關(guān)繪制屬性,需要通過該對象進(jìn)行設(shè)置XXXAxis坐標(biāo)軸對象,用來定義坐標(biāo)軸的繪制屬性XXXRenderer圖片渲染對象,用于渲染和顯示圖表XXXURLGenerator鏈接對象,用于生成Web圖表中項目的鼠標(biāo)單擊鏈接XXXToolTipGenerator圖表提示對象,用于生成圖表提示信息,不同類型的圖表對應(yīng)著不同類型的圖表提示對象課件制作人:王國輝7.3.3利用JFreeChart生成動態(tài)圖表利用JFreeChart可以很方便的生成柱形圖表,下面通過一個具體實例進(jìn)行介紹?!纠?-3】利用JFreeChart生成論壇版塊人氣指數(shù)排行的柱形圖。實例運行結(jié)果如下圖所示。課件制作人:王國輝7.4.1iText組件簡介7.4.2iText組件的下載與配置7.4.3應(yīng)用iText組件生成JSP報表√√√在企業(yè)的信息系統(tǒng)中,報表一直占據(jù)比較重要的作用。在JSP中可以通過iText組件生成報表。下面將介紹如何使用iText組件生成PDF報表。7.4JSP報表課件制作人:王國輝7.4.1iText組件簡介

iText是一個能夠快速產(chǎn)生PDF文件的Java類庫,是著名的開放源碼站點sourceforge的一個項目。通過iText提供的Java類不僅可以生成包含文本、表格、圖形等內(nèi)容的只讀文檔,而且可以將XML、HTML文件轉(zhuǎn)化為PDF文件。它的類庫尤其與javaServlet有很好的給合。使用iText與PDF能夠使用戶正確地控制Servlet的輸出。課件制作人:王國輝7.4.2iText組件的下載與配置iText組件可以到/iText/download.html網(wǎng)站下載。在IE地址欄中輸入上面的URL地址后,將進(jìn)入到如下圖所示的下載界面。在該圖中單擊iText-2.0.7.jar下載最新版本的iText組件,其中,iText-2.0.7.jar適用Windows操作系統(tǒng),而iText-2.0.7.tar.gz適用于Linux操作系統(tǒng)。課件制作人:王國輝7.4.2iText組件的下載與配置

下載iText-2.0.7.jar文件后,需要把itext-2.0.7.jar包放入項目目錄下的WEB-INF/lib路徑中,這樣在程序中就可以使用iText類庫了。如果生成的PDF文件中需要出現(xiàn)中文、日文、韓文字符,則需要訪問/downloads/iTextAsian.jar下載iTextAsian.jar包。當(dāng)然,如果想真正了解iText組件,閱讀iText文檔顯得非常重要,讀者在下載類庫的同時,也可以下載類庫文檔。課件制作人:王國輝7.4.3應(yīng)用iText組件生成JSP報表

建立com.lowagie.text.Document對象的實例時,可以通過以下3個構(gòu)造方法實現(xiàn):1.建立com.lowagie.text.Document對象的實例

publicDocument();publicDocument(RectanglepageSize);//定義頁面的大小publicDocument(RectanglepageSize,intmarginLeft,intmarginRight,intmarginTop,intmarginBottom);/*定義頁面的大小,參數(shù)marginLeft、marginRight、marginTop、marginBottom分別為左、右、上、下的頁邊距*/其中,通過Rectangle類對象的參數(shù)可以設(shè)定頁面大小、面背景色,以及頁面橫向/縱向等屬性。課件制作人:王國輝7.4.3應(yīng)用iText組件生成JSP報表

iText組件定義了A0-A10、AL、LETTER、HALFLETTER、_11x17、LEDGER、NOTE、B0-B5、ARCH_A-ARCH_E、FLSA和FLSE等紙張類型,也可以制定紙張大小來自定義,程序代碼如下:

RectanglepageSize=newRectangle(144,720);在iText組件中,可以通過下面的代碼實現(xiàn)將PDF文檔設(shè)定成A4頁面大小,當(dāng)然,也通過Rectangle類中的rotate()方法可以將頁面設(shè)置成橫向。程序代碼如下:RectanglerectPageSize=newRectangle(PageSize.A4);//定義A4頁面大小rectPageSize=rectPageSize.rotate();

//加上這句可以實現(xiàn)A4頁面的橫置Documentdoc=newDocument(rectPageSize,50,50,50,50);//其余4個參數(shù)設(shè)置了頁面的4個邊距課件制作人:王國輝7.4.3應(yīng)用iText組件生成JSP報表

2.設(shè)定文檔屬性publicbooleanaddTitle(Stringtitle)publicbooleanaddSubject(Stringsubject)publicbooleanaddKeywords(Stringkeywords)publicbooleanaddAuthor(Stringauthor)publicbooleanaddCreator(Stringcreator)publicbooleanaddProducer()publicbooleanaddCreationDate()publicbooleanaddHeader(Stringname,Stringcontent)在文檔打開之前,可以設(shè)定文檔的標(biāo)題、主題、作者、關(guān)鍵字、裝訂方式、創(chuàng)建者、生產(chǎn)者、創(chuàng)建日期等屬性,調(diào)用的方法分別是:課件制作人:王國輝7.4.3應(yīng)用iText組件生成JSP報表其中方法addHeader()對于PDF文檔無效,addHeader()方法僅對HTML文檔有效,用于添加文檔的頭信息。文檔(document)對象建立好之后,還需要建立一個或多個書寫器與對象相關(guān)聯(lián),通過書寫器可以將具體的文檔存盤成需要的格式,例如,om.lowagie.text.PDF.PDFWriter可以將文檔存成PDF格式,而com.lowagie.text.html.HTMLWriter可以將文檔存成HTML格式。

3.創(chuàng)建書寫器(Writer)對象【例7-5】書寫器對象示例課件制作人:王國輝BaseFontbfChinese=BaseFont.createFont("STSong-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);//用中文的基礎(chǔ)字體實例化了一個字體類FontFontChinese=newFont(bfChinese,12,Font.NORMAL);Paragraphpar=newParagraph("簡單快樂",FontChinese);//將字體類用到了一個段落中document.add(par); //將段落添加到了文檔中7.4.3

溫馨提示

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

評論

0/150

提交評論