版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第6章JSP實用組件
2023/9/171內容提要JSP之所以強大,很大程度上依賴于外部組件的使用。有很多著名的公司開發(fā)外部Bean組件,比如SUN公司和IBM公司等本章介紹最常用的組件:Email組件、圖形組件和文件上傳組件2023/9/172Email組件JavaMail是Sun公司發(fā)布用來處理E-mail的API,是一種可選的、用于讀取、編寫和發(fā)送電子消息的包(標準擴展)。使用JavaMail可以創(chuàng)建MUA(郵件用戶代理MailUserAgent)MUA依靠MTA(郵件傳輸代理MailTransferAgent)處理實際的發(fā)送任務因此需要設置發(fā)件人和收件人的郵箱地址等相應參數,必須學習JavaMail的核心類2023/9/173Email組件中的核心類-Session類Session、Message、Address、Authenticator、Transport、Store和Folder等7個類1.Session類JavaMailAPI中提供了Session類,用于定義保存諸如SMTP主機和認證的信息的基本郵件會話每個基于JavaMail的程序都需要創(chuàng)建一個Session或多個Session對象。所以在創(chuàng)建Session對象前,需要先創(chuàng)建java.util.Properties對象(獲取諸如郵件服務器、用戶名、密碼等共享的信息)Propertiesprops=newProperties();SessionmailSession=Session.getDefaultInstance(props,authenticator);不需要指定認證方式authenticator為null2023/9/174Message類2.Message類Message類是一個抽象類,要使用該抽象類可以使用其子類MimeMessage,該類保存在ernet包實例化MimeMessage類的對象message的代碼如下:MimeMessagemsg=newMimeMessage(mailSession);MimeMessage類中常用的方法(1)setText(Stringcontent)用于指定純文本信息的郵件內容(2)setContent(Objectcontent,Stringtype)用于發(fā)送HTML等純文本以外的信息。content:用于指定郵件內容。type:用于指定郵件內容類型例如message.setContent("你現在好嗎","text/plain");2023/9/175Message類(3)setSubject(Stringsubject)用于設置郵件的主題(4)saveChanges()方法能夠保證報頭域同會話內容保持一致,使用格式如下msg.saveChanges();(5)setFrom()方法用于設置發(fā)件人地址。參數為InternetAddress類的一個對象(6)setRecipients(RecipientTypetype,InternetAddressaddress);方法
用于設置收件人地址。兩個參數,用于指定收件人類型和收件人地址type:用3個常量來區(qū)分收件人的類型。①Message.RecipientType.TO//發(fā)送②Message.RecipientType.CC//抄送③Message.RecipientType.BCC//暗送2023/9/176Message類address:收件人地址,可以為InternetAddress類的一個對象或多個對象組成的數組。例如:toAddrs=InternetAddress.parse("wgh8007@163.com",false);msg.setRecipients(Message.RecipientType.TO,toAddrs);(7)setSentDate(Datedate);用于設置發(fā)送郵件的時間(8)getContent()方法用于獲取消息內容(9)writeTo(OutputStreamos)獲取消息內容(包括報頭信息),并將其內容寫到一個輸出流2023/9/177Address類3.Address類
用于設置電子郵件的響應地址。抽象類,可以使用其子類InternetAddress,該類保存在ernet包(1)創(chuàng)建只帶有電子郵件地址的地址InternetAddressaddress=newInternetAddress("wgh717@");(2)創(chuàng)建電子郵件地址和附加信息的地址InternetAddressaddress=newInternetAddress("wgh717@","WangGuoHui");說明:JavaMailAPI沒有提供檢查電子郵件地址有效性的機制。如果需要可以自己編寫檢查電子郵件地址是否有效的方法。2023/9/178Authenticator類4.Authenticator類
通過用戶名和密碼來訪問受保護的資源是個抽象類,需要創(chuàng)建Authenticator的子類并重載getPasswordAuthentication()方法
然后再實例化新創(chuàng)建的Authenticator的子類,并將其與Session對象綁定:
classWghAuthenticatorextendsAuthenticator{publicPasswordAuthenticationgetPasswordAuthentication(){Stringusername="wgh"; //郵箱登錄賬號Stringpwd="111"; //登錄密碼returnnewPasswordAuthentication(username,pwd);}
}Authenticatorauth=newWghAuthenticator();Sessionsession=Session.getDefaultInstance(props,auth);2023/9/179Transport類5.Transport類用于使用指定的協(xié)議(通常是SMTP)發(fā)送電子郵件首先從指定協(xié)議的會話中獲取一個特定的實例,然后傳遞用戶名和密碼,再發(fā)送信息,最后關閉連接,代碼如下:Transporttransport=sess.getTransport("smtp");transport.connect(servername,from,password);transport.sendMessage(message,message.getAllRecipients());transport.close();
注意:如果想要查看經過郵件服務器發(fā)送郵件的具體命令,可以用session.setDebug(true)方法設置調試標志。2023/9/1710Store類6.Store類代表了存儲郵件的郵件服務器。在獲取會話后,就可以使用用戶名和密碼或Authenticator類來連接Store類。與Transport類一樣,首先要告訴Store類將使用什么協(xié)議:使用POP3協(xié)議連接Stroe類,代碼如下:使用IMAP協(xié)議連接Stroe類,代碼如下:Storestore=session.getStore("pop3");store.connect(host,username,password);Storestore=session.getStore("imap");store.connect(host,username,password);說明:如果使用POP3協(xié)議,只可以使用INBOX文件夾,但是使用IMAP協(xié)議,則可以使用其他的文件夾。2023/9/1711Folder類7.Folder類
連接到Store后,一個Folder對象即目錄對象將通過Store的getFolder()方法被返回,可從中讀取郵件信息定義了獲取(fetch)、備份(copy)、附加(append)及以刪除(delete)信息等方法使用Folder類讀取完郵件信息后,及時關閉Folder和Store。Folderfolder=store.getFolder("INBOX");folder.open(Folder.READ_ONLY);Messagemessage[]=folder.getMessages();folder.close(Booleanboolean);store.close();2023/9/1712Email組件應用發(fā)送Email需要使用JavaMail組件,包含兩個jar文件,代碼參見工程test6-02將兩個jar文件拷貝到lib目錄,再編寫調用程序mail.jsp發(fā)送郵件主要代碼如下:注意放在try…catch中處理異常Stringmailserver=...;Stringfrom=...;Stringto=...;//獲取郵件信息
//建立郵件會話Propertiespro=newProperties();pro.put("mail.smtp.host",mailserver);pro.put("mail.smtp.auth","true");Sessionsess=Session.getInstance(pro);sess.setDebug(true);//新建一個消息對象MimeMessagemessage=newMimeMessage(sess);
2023/9/1713Email組件應用//設置發(fā)件人
InternetAddressfrom_mail=newInternetAddress(from);message.setFrom(from_mail);//設置收件人
InternetAddressto_mail=newInternetAddress(to);message.setRecipient(Message.RecipientType.TO,to_mail);//設置主題
message.setSubject(subject);//設置內容
message.setText(messageText);//設置發(fā)送時間
message.setSentDate(newDate());//發(fā)送郵件
message.saveChanges();//保證報頭域同會話內容保持一致
Transporttransport=sess.getTransport("smtp");transport.connect(mailserver,from,password);transport.sendMessage(message,message.getAllRecipients());transport.close();2023/9/1714Email組件應用修改相應參數,發(fā)送郵件的服務器地址strHost、驗證用戶名strUserName和strPassWord密碼工程test6-02測試結果截圖:2023/9/1715Email組件應用讀取郵件,先獲得session,并且連接到了郵箱的相應store,打開相應的Folder,得到想要的郵件,結束時關閉連接。關鍵代碼如下
Stringhost=...;Stringusername=...;Stringpassword=...;Propertiesprops=newProperties();Sessionsession=Session.getDefaultInstance(props,null);Storestore=session.getStore("pop3");store.connect(host,username,password);Folderfolder=store.getFolder("INBOX");folder.open(Folder.READ_ONLY);Messagemessage=folder.getMessages();
Message.writeTo(java.io.OutputStreamos)可用writeTo方法將郵件內容輸出到控制臺2023/9/1716文件上傳下載在Web開發(fā)中,文件上傳下載是非常實用的功能,Java開發(fā)體系中,文件上傳功能的實現主要依賴于JavaBean,常用的上傳組件是jspsmart(jspSmartUpload)該組件是一個可免費使用的全功能的文件上傳下載組件2023/9/1717jspSmartUpload組件中的常用類1.File類用于保存單個上傳文件的相關信息,如上傳文件的文件名、文件大小、文件數據等,File類的常用方法如下方法說明saveAs()該方法用于保存文件isMissing()該方法用于判斷用戶是否選擇了文件,即表單中對應的<inputtype=“file”>標記實現的文件選擇域中是否有值,該方法返回boolean型值,選擇了文件時,返回false,否則返回truegetFieldName()獲取Form表單中當前上傳文件所對應的表單項的名稱getFileName()獲取文件的文件名,該文件名不包含目錄getFilePathName()獲取文件的文件全名,獲取的值是一個包含目錄的完整文件名getFileExt()獲取文件的擴展名,即后綴名,不包含“.”符號getContentType()獲取文件MIME類型,如“text/plain”getContentString()獲取文件的內容,返回值為String型getSize()獲取文件的大小,單位byte,返回值為int型getBinaryData(intindex)獲取文件數據中參數index指定位置處的一個字節(jié),用于檢測文件2023/9/1718jspSmartUpload組件中的常用類saveAs()方法用于保存文件,在File類中兩種形式:destFilePathName指定文件保存的路徑,包括文件名,其值應以“/”開頭。optionSaveAs:保存目標選項。有3個值分別是:SAVEAS_AUTO:則首先以SAVEAS_VIRTUAL方式來保存文件,若Web應用下由destFilePathName參數指定的路徑不存在,則以SAVEAS_PHYSICAL方式保存文件SAVEAS_VIRTUAL:以web應用的根目錄為文件根目錄,然后加上destFilePathName參數指定路徑SAVEAS_PHYSICAL:以Web服務器的安裝路徑中的磁盤根目錄為文件根目錄加上destFilePathName參數指定路徑;或者直接用destFilePathName參數指定路徑它們是File類中的靜態(tài)字段,分別表示整數0、1和2。saveAs(StringdestFilePathName)方法saveAs(StringdestFilePathName,intoptionSaveAs)方法2023/9/1719jspSmartUpload組件中的常用類
(1)使用SAVEAS_VIRTUAL選項值saveAs("/file/myfile.txt",File.SAVEAS_VIRTUAL)或saveAs("/file/myfile.txt",1)
若FileUpDown應用下存在“file”子目錄,則將上傳的文件以“myfile.txt”為文件名進行保存,實際的保存路徑如下: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)2023/9/1720jspSmartUpload組件中的常用類
因為Tomcat安裝在C盤,因此若E盤根目錄下存在“file”子目錄,則將上傳的文件以“myfile.txt”為文件名進行保存,實際的保存路徑如下:C:\file\myfile.txt
若C盤根目錄下不存在file子目錄,而FileUpDown應用的根目錄下存在file子目錄,則拋出下面的異常:Thepathisnotaphysicalpath
否則拋出1135路徑不存在的異常:2023/9/1721jspSmartUpload組件中的常用類
使用SAVEAS_PHYSICAL選項值時,可以將上傳的文件保存到由destFilePathName參數指定的一個具體的目錄下,如: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應用根目錄下存在“file”子目錄,則以SAVEAS_VIRTUAL方式保存文件,否則以SAVEAS_PHYSICAL方式保存文件。通常情況下應使用SAVEAS_VIRTUAL方式保存文件,以便程序的移植。2023/9/1722jspSmartUpload組件中的常用類
Files類存儲了所有上傳的文件,通過類中的方法可獲得上傳文件的數量和總長度等信息。Files類中的常用方法如下表所示。2.Files類方法說明getCount()獲取上傳文件的數目,返回值為int型getSize()獲取上傳文件的總長度,單位byte,返回值為long型getFile(intindex)獲取參數index指定位置處的com.jspsmart.upload.File對象getCollection()將所有File對象以Collection形式返回getEnumeration()將所有File對象以Enumeration形式返回2023/9/1723jspSmartUpload組件中的常用類
Files類中的getCollection()方法和getEnumeration()方法將所有的File對象分別以Collection和Enumeartion形式返回,它們的源代碼如下。(1)getCollection()方法
將所有File對象以Collection的形式返回,以便其他應用程序引用,該方法的具體代碼如下:publicCollectiongetCollection(){returnm_files.values();}m_files:為Files類中的屬性,Hashtable類型,存儲了所有的File對象。Hashtable類:JAVA提供的一種高級數據結構,用于快速的成對的檢索數據,Hashtable不僅可以像Vector一樣動態(tài)存儲一系列的對象,而且對存儲的每一個對象(稱為值)都要安排另一個對象(稱為關鍵字)與之相關聯2023/9/1724jspSmartUpload組件中的常用類(2)getEnumeration()方法
將所有File對象以Enumeration形式返回,以便其他應用程序引用,具體代碼如下:publicEnumerationgetEnumeration(){returnm_files.elements();}3.Request類設置該類的目的,是因為當Form表單實現文件上傳時,必須將ENCTYPE屬性設置為“MULTIPART/FORM-DATA”,此時通過JSP的內置對象request的getParameter()方法無法獲取其他表單項的值,所以提供了該類來獲取。
參見組件實驗——發(fā)送帶附件的EmailRequest類中提供的方法如下表所示。2023/9/1725jspSmartUpload組件中的常用類方法說明getParameter(Stringname)獲取Form表單中由參數name指定表單元素的值如<inputtype=“text”name=“user”>,當該表單元素不存在時,返回nullgetParameterNames()獲取Form表單中除<inputtype=“file”>外的所有表單元素的名稱,它返回一個枚舉型對象getParameterValues(Stringname)獲取Form表單中多個具有相同名稱的表單元素的值,該名稱由參數name指定,該方法返回一個字符串數組ENCTYPE屬性:指定將數據回到服務器時瀏覽器使用的編碼類型。
application/x-www-form-urlencoded:窗體數據被編碼為名稱/值對。默認值。
multipart/form-data:不對字符編碼。包含文件上傳控件的表單時,必須使用該值。text/plain:窗體數據以純文本形式進行編碼,發(fā)送郵件時設置。2023/9/1726jspSmartUpload組件中的常用類利用request類獲取表單信息的參考代碼:SmartUploadsu=newSmartUpload();su.initialize(config,request,response);su.upload();Stringmailfrom=su.getRequest().getParameter("mailfrom");Stringmailto=su.getRequest().getParameter("mailto");Stringsubject=su.getRequest().getParameter("subject");Stringcontext=su.getRequest().getParameter("context");Stringmailpassword=su.getRequest().getParameter("password");2023/9/1727jspSmartUpload組件中的常用類
SmartUpload類用于實現文件的上傳與下載操作,方法有:(1)文件上傳與文件下載必須實現的方法使用jspSmartUpload組件實現文件上傳與下載時,必須第一步先實現initialize()方法。該方法的3種形式:通常應用第3種形式,該方法中的pageContext參數為JSP的內置對象(頁面上下文)。4.SmartUpload類initialize(ServletConfigconfig,HttpServletRequestrequest,HttpServletResponseresponse)//需要用到request、response對象時initialize(ServletContextapplication,HttpSessionsession,HttpServletRequestrequest,HttpServletResponseresponse,JspWriterout)initialize(PageContextpageContext)//常用這種2023/9/1728jspSmartUpload組件中的常用類(2)文件上傳使用的方法首先應實現initialize()方法,然后實現如下的兩個方法即可將文件上傳到服務器中。①upload()方法用來完成一些準備操作。首先在該方法中調用JSP的內置對象request的getInputStream()方法獲取客戶端的輸入流,然后通過該輸入流的read()方法讀取用戶上傳的所有文件數據到字節(jié)數組中,然后在循環(huán)語句中從該字節(jié)數組中提取每個文件的數據,并將當前提取出的文件的信息封裝到File類對象中,最后將該File類對象通過Files類的addFile()方法添加到Files類對象中。2023/9/1729jspSmartUpload組件中的常用類②save()方法調用該方法就可將全部上傳文件保存到指定目錄下,并返回保存的文件個數。具有以下兩種形式:
第一個方法等同于save(destPathName,0)或save(destPathName,File.SAVE_AUTO)。
實際上在SmartUpload類的save()方法中最終是調用File類中的saveAs()方法保存文件的,所以save()方法中的參數使用與File類的saveAs()方法中的參數使用是相同的。注意:save()方法中option參數指定的保存選項的可選值為SAVE_AUTO,SAVE_VIRTUAL和SAVE_PHYSICAL。是SmartUpload類中的靜態(tài)字段表示整數0、1和2。而File類中的saveAs()方法的參數為
SAVEAS_AUTO…save(StringdestPathName)save(StringdestPathName,intoption)2023/9/1730jspSmartUpload組件中的常用類通過以上的兩個方法就實現了文件的上傳。下面介紹SmartUpload類中可用來限制上傳文件和獲取其他信息的主要方法。①setDeniedFilesList(StringdeniedFilesList)方法
設置禁止上傳的文件。參數deniedFilesList:指定禁止上傳文件的擴展名,多個擴展名之間以逗號分隔。若禁止上傳沒有擴展名的文件,以“,,”表示。例如,setDeniedFilesList("exe,jsp,,bat")表示禁止上傳*.exe、*.jsp、*.bat和不帶擴展名的文件。②setAllowedFilesList(StringallowedFilesList)方法
設置允許上傳的文件。參數allowedFilesList:指定允許上傳文件的擴展名,多個擴展名之間以逗號分隔。若允許上傳沒有擴展名的文件,以“,,”表示。例如,setAllowedFilesList("txt,doc,,")表示只允許上傳*.txt、*.doc和不帶擴展名的文件。2023/9/1731jspSmartUpload組件中的常用類注意:上述的對上傳文件進行限制的方法,需在upload()方法之前調用。
下面為SmartUpload類中的獲取文件信息的方法。①getSize()方法
用于獲取上傳文件的總長度,代碼如下:③setMaxFileSize(longmaxFileSize)方法
用于設定允許每個文件上傳的最大長度,該長度由參數maxFileSize指定。④setTotalMaxFileSize(longtotalMaxFileSize)方法
用于設置允許上傳文件的總長度,該長度由參數totalMaxFileSize指定。publicintgetSize(){returnm_totalBytes;}2023/9/1732jspSmartUpload組件中的常用類
m_totalBytes:為SmartUpload類中的屬性,表示上傳文件的總長度,它是在upload()方法中通過調用JSP內置對象request的getContentLength()方法被賦值的。②getFiles()方法
獲取全部上傳文件,以Files對象形式返回。③getRequest()方法
獲取com.jspsmart.upload.Request對象,然后通過該對象獲得上傳的表單中其他表單項的值。(3)文件下載使用的方法①setContentDisposition(StringcontentDisposition)方法
該方法用于將數據追加到MIME文件頭的CONTENT-DISPOSITION域。
參數contentDisposition為要添加的數據。2023/9/1733jspSmartUpload組件中的常用類
進行文件下載時,將contentDispotition設為null,則組件將自動添加“attachment”,表示將下載的文件作為附件,IE瀏覽器會彈出“文件下載”對話框,而不是自動打開這個文件(IE瀏覽器一般根據下載的文件擴展名決定執(zhí)行什么操作,擴展名為doc的文件將用Word打開)。②downloadFile()方法
實現文件下載,SmartUpload類中提供了以下4種形式的downloadFile()方法:downloadFile(StringsourceFilePathName)downloadFile(StringsourceFilePathName,StringcontentType)downloadFile(StringsourceFilePathName,StringcontentType,StringdestFileName)downloadFile(StringsourceFilePathName,StringcontentType,StringdestFileName,intblockSize)2023/9/1734jspSmartUpload組件中的常用類
sourceFilePathName:用于指定要下載文件的文件名(可帶目錄,如/file/myfile.txt或E:/file/myfile.text),若該文件名存在當前應用下,則
sourceFilePathName=pageContext.getServletContext().
getRealPath(sourceFilePathName)。contentType:定一個文件內容類型(MIME格式的文件類型信息)。destFileName:指定下載的文件另存為的文件名。blockSize:指定存儲讀取的文件數據的字節(jié)數組的大小,默認值為65000。通常使用第一種方法,如果需要更改文件的內容類型,或者更改下載文件另存為的文件名,或者更改用來存儲讀取的文件數據的字節(jié)數組的大小時,可應用后面的三種方法。2023/9/1735使用jspsmart組件實現文件上傳2023/9/1736使用jspsmart組件實現文件上傳文件上傳的關鍵代碼,參加test6_03FORMENCTYPE="MULTIPART/FORM-DATA"METHOD=“POST”ACTION=“servlet/servletUpload”>或者是jsp文件…SmartUploadmySmartUpload=newSmartUpload();//初始化mySmartUpload.initialize(config,request,response);//上載mySmartUpload.upload();//保存上載文件到指定目錄//PATH為form表單提交過來的count=mySmartUpload.save(mySmartUpload.getRequest().getParameter("PATH"));//顯示處理結果out.println(count+"fileuploaded.");}2023/9/1737使用jspsmart組件實現文件下載2023/9/1738使用jspsmart組件實現文件下載文件下載的關鍵代碼,參見工程sy04或者實驗download.jspSmartUploadsu=newSmartUpload();su.initialize(pageContext);su.setContentDisposition(null);su.downloadFile("e:/upload/計算機工程系電話簿071016.doc");2023/9/1739國際化的問題國際化,又稱I18N,因為英文的國家化是Internationalization,它以I開始,以N結束,共18個字母。本地化,又稱L10N,英文的意思是Localization。國際化的問題主要包含以下的內容為:日期、時間;數字;貨幣;其他一些特殊的字符。也就是說,不同的Locale,顯示日期、時間的格式是不一樣的。當然,不同的語言有自己不同的字符集。HTML中的字符實體和XML的語言保持一致。它定義了用特定的字符序列顯示單字符的功能,這種字符序列成為字符實體,它以“&”開頭,以“;”結束。例如,©表示字符“?”。比如使用字符實體編寫一個西班牙語的“HelloWorld!”2023/9/1740顯示為西班牙語packageI18N;importjava.io.*;importjavax.servlet.*;importjavax.servlet.http.*;publicclassHello1extendsHttpServlet{publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse) throwsIOException,ServletException{response.setContentType("text/html;charset=iso-8859-1");response.setHeader("Content-Language","es");PrintWriterout=response.getWriter();out.println("<html><head><title>EnEspañol</title></head>");out.println("<body>");out.println("<h3>Enespañol:</h3>");out.println("¡HolaMundo!");out.println("</body></html>"); }}2023/9/1741Locale(地域)Locale(地域)是指具有相同風俗、文化和語言的區(qū)域。如果應用程序沒有把I18N作為內嵌的功能,當需要支持新的Locale時,必須對嵌入在源代碼中的文本、圖片和消息進行修改,然后重新編譯源代碼。當這個應用需要支持新的Locale時,重復這些步驟,降低了軟件開發(fā)的效率。java.util.Locale類是Java最重要的I18N類,幾乎所有對國際化和本地化的支持都依賴于這個類。Locale類的實例代表一種特定的語言和地區(qū)。如果Java類庫中的某個類運行時需要根據Locale對象來調整,那么就稱這個類為地域敏感的(Locale-Sensitive)。如,Java.text.DateFormat類就是地域敏感的。(在.NET中存在類似Locale的類CultureInfo,被翻譯為文化信息)創(chuàng)建Locale對象時,需要明確指定其語言和國家代碼。下面的代碼分別創(chuàng)建了中國和美國的Locale對象。2023/9/1742LocaleusLocale=newLocale("en","US");LocalechLocale=newLocale("ch","CH");關于Locale的更多介紹,可以查看JDK幫助文檔。這里實現一個支持多國語言的HelloWorld。由兩個文件組成:一個是用來發(fā)送請求的HTML文件,choose.htm。它向Servlet發(fā)送關于不同國家語言類型的請求。一個是Hello3.java。Servlet接收請求,然后進行處理,用不同國家的語言顯示“你好世界”。2023/9/1743用于MD5算法加密的JavaBeanMD5算法是一種單向加密算法,曾經廣泛應用于電子商務中,現在雖然已經被中國人找出了漏洞,可以偽造數字簽名。但是,它的應用依然在現實世界中廣泛存在著。在JDK中,沒有提供實現MD5加密算法的類,這里提供一個實現MD5加密算法的JavaBean,供編程時使用。2023/9/1744使用MD5進行加密
<jsp:useBeanid="md5"class="md5.keyBean"/><% Strings="Howareyou!"; out.print("Beforemd5:"+s+"<br>"); s=md5.getkeyBeanofStr(s); out.print("Aftermd5:"+s);%>2023/9/1745圖片添加水印有時候,需要在程序中向圖片上面寫一些文字,稱之為“水印”。經??梢钥吹皆S多網站的圖片上面寫著網站的名稱和地址,采用程序可以自動添加。這里使用一個JavaBean,名為WaterMark,來實現這項技術。2023/9/1746圖表系統(tǒng)統(tǒng)計分析系統(tǒng)是B/S項目中的一項重要功能,通常需要給用戶展示直觀的圖表。生成基于瀏覽器的圖表方式比較多,常用的有兩種方式:1.通過客戶端的Applet來產生圖表。Applet可以使用AWT等圖形接口,服務器端將產生的結果發(fā)送給瀏覽器,將畫圖數據作為參數傳遞給Applet,然后啟動客戶端的JVM進行畫圖。這種方式也對客戶端要求比較高,必須要有JRE,而且通過applet生成的圖表在加載過程中會有個Java的Log動畫,用戶看了可能會感覺不太舒服。2023/9/1747圖表系統(tǒng)2.通過服務端直接生成圖表的圖片。這種方式對客戶端幾乎沒有什么要求,缺點是加重了服務端的負擔,對服務端要求就相對高了點。這種方式來開發(fā)圖表,可以縮短開發(fā)周期、節(jié)約成本。目前通常選擇第二種方案。在服務器直接生成圖表,一般需要特定的插件,生成插件的工具很多,有不少是商業(yè)項目,需要收取一定的費用。在開源的項目中,JFreeChart(/)比較常用。它是一個免費創(chuàng)建圖表的Java工具,它可以生成各式各樣的圖表。這些圖表包括餅圖、柱狀圖、線形圖、區(qū)域圖以及甘特圖等等,基本可以滿足各種項目的要求。2023/9/1748JFreeChart簡介JFreeChart主要用來開發(fā)各種各樣的圖表,可用于Servlet、JSP、Applet和JavaAppication環(huán)境中,通過JDBC可動態(tài)顯示任何數據庫數據,可以輸出至PDF文件。JFreeChart公司的主要產品包括4類:(1)JFreeReport報表解決工具;(2)JFreeChart圖形解決方案;(3)JCommon公共類庫;(4)JFreeDesigner報表設計工具。可以從官方網站上獲取最新版本和相關資料。2023/9/1749JFreeChart配置安裝解壓jfreechart-1.0.x.zip.到指定位置,其中source目錄是jfreechart的源碼,jfreechart-1.0.x-demo.jar是例子程序,需要關注的文件有如下三個:jfreechart-1.0.x.jar、jcommon-1.0.x.jar、gnujaxp.jar。如果是Application開發(fā),要將三個文件拷貝到%JAVA_HOME%\LIB中,同時在環(huán)境變量CLASSPATH中加入…如果是WEB開發(fā),比如使用Tomcat作為服務器,需要把上述三個文件拷貝到WEB-INF\LIB中,然后修改TEST\WEB-INF\web.xml文件,2023/9/1750JFreeChart配置安裝
<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-ma
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026廣西河池市天峨縣六排鎮(zhèn)招聘防止返貧監(jiān)測信息員2人備考題庫附答案詳解
- 晉商資本運營制度
- 市場部運營部門管理制度
- 集團分公司獨立運營制度
- 運營部內部審批管理制度
- 廢水運營管理制度匯編
- 宿舍餐廳運營管理制度
- 2026上海交通大學醫(yī)學院招聘91人備考題庫附答案詳解(突破訓練)
- 醫(yī)美運營崗位制度
- 公司運營部相關制度
- 四年級上冊數學脫式計算大全500題及答案
- 河北審圖合同協(xié)議
- 溴化鋰機組回收合同(2篇)
- 菏澤某中學歷年自主招生試題
- 醫(yī)院非產科孕情管理和三病檢測工作流程
- 中小學的德育工作指南課件
- GB/T 3487-2024乘用車輪輞規(guī)格系列
- 物業(yè)保潔保安培訓課件
- 人教版初中英語七至九年級單詞匯總表(七年級至九年級全5冊)
- cnc加工中心點檢表
- 計劃決策評審-匯報模板課件
評論
0/150
提交評論