在這節里,我們對welcome.jsp頁面進行改造,在頁面中添加一個鏈接,這個鏈接調用servlet下載上節所記錄的系統日志文件。
  通過向導創建excelfileservlet
  1、file->new...->web->雙擊standard servlet圖標,啟動創建標準servlet的向導。
指定servlet類名為excelfileservlet,將包名設為bookstore.servlet,按next到下一步。
2、選擇覆蓋doget()處理方法。
|  圖 11 覆蓋servlet方法 | 
  ·servlet:creates content type:unspecified,設定servlet的生成文檔的類型,由于這個servlet作為一個excel文件并以附件的形式下載,需要我們手工設定servlet的響應內容類型。
  ·implements methods:doget(),這樣向導將生成一個doget()方法框架。
按next到下一步。
  3、定義servlet的url參數。
|  圖 12 定義servlet的url參數 | 
| 1. package bookstore.servlet; 2. import javax.servlet.*; 3. import javax.servlet.http.*; 4. import java.io.*; 5. import java.util.*; 6. 7. public class excelfileservlet 8. extends httpservlet 9. { 10. //initialize global variables 11. public void init() 12. throws servletexception 13. { 14. } 15. 16. //process the http get request 17. public void doget(httpservletrequest request, httpservletresponse response) 18. throws servletexception, ioexception 19. { 20. //年份 21. string year = request.getparameter("year"); 22. if (year == null) 23. { 24. year = "2005"; 25. } 26. 27. //月份 28. string month = request.getparameter("month"); 29. if (month == null) 30. { 31. month = "1"; 32. } 33. printwriter out = response.getwriter(); 34. //@todo implement get 35. } 36. 37. //clean up resources 38. public void destroy() 39. { 40. } 41. } | 
| 1. <web-app> 2. … 3. <servlet> 4. <servlet-name>excelfileservlet</servlet-name> 5. <servlet-class>bookstore.servlet.excelfileservlet</servlet-class> 6. </servlet> 7. <servlet-mapping> 8. <servlet-name>excelfileservlet</servlet-name> 9. <url-pattern>/excelfileservlet</url-pattern> 10. </servlet-mapping> 11. … 12. </web-app> | 
| 1. package bookstore.servlet; 2. import javax.servlet.*; 3. import javax.servlet.http.*; 4. import java.io.*; 5. 6. public class excelfileservlet 7. extends httpservlet 8. { 9. … 10. public void doget(httpservletrequest request, httpservletresponse response) 11. throws servletexception, ioexception 12. { 13. //年份 14. int year; 15. try 16. { 17. year = integer.parseint(request.getparameter("year")); 18. } catch (numberformatexception e) 19. { 20. year = 2005; 21. } 22. 23. //月份 24. int month; 25. try 26. { 27. month = integer.parseint(request.getparameter("month")); 28. } catch (numberformatexception e) 29. { 30. month = 1; 31. } 32. string filename = "log_" + year + "_" + month +".xls"; 33. file file = new file("d://serverlog//"+filename); 34. response.setcontenttype("application/x-msdownload"); 35. response.setcontentlength( (int) file.length()); 36. response.setheader("content-disposition", "attachment;filename="+filename); 37. 38. fileinputstream fis = new fileinputstream(file); 39. bufferedinputstream fbis = new bufferedinputstream(fis); 40. byte abyte0[] = new byte[1024]; 41. int k = 0; 42. outputstream out = response.getoutputstream(); 43. while ( (long) k < file.length()) 44. { 45. int j = fbis.read(abyte0, 0, 1024); 46. k += j; 47. out.write(abyte0, 0, j); 48. } 49. out.flush(); 50. } 51. … 52. } | 
| 1. <%@page contenttype="text/html; charset=gbk"%> 2. <%@taglib uri="http://jakarta.apache.org/taglibs/datetime-1.0" prefix="dt"%> 3. … 4. 現在的時間是<dt:format pattern="mm/dd/yyyy hh:mm"><dt:currenttime/></dt:format> 5. <br><a href="/webmodule/excelfileservlet?year=2005&month=1">下載系統啟動日志</a> 6. <br>點擊<a href="quit.jsp">這里</a>退出系統 7. </body> 8. </html> | 
|  圖 13 附件下載日志鏈接的welcome.jsp頁面 | 
|  圖 14 下載系統日志文件對話框 | 
| 
 
 | 
新聞熱點
疑難解答