程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> 一個Jsp初學者的學習過程(六)

一個Jsp初學者的學習過程(六)

編輯:關於JSP

 一個jsp(SUN企業級應用的首選)初學者的學習過程(六)

TheUnforgiven


第六章  畫柱狀統計圖

    在編碼學習的過程中,我發現的問題越來越多了,有Java方面的,SQL方面的,Html方面的,JavaScript方面的等等,對這些看似細小的問題的研究使我積累了實戰的經驗,起碼不只是紙上談兵了。
    這個時候我的領導讓我做一個東西,實現局域網內部網上計算機故障報修。這其實就是一個留言板的功能,我正好之前做過練習,所以很輕松的就做好了。之後我想我也許應該做一個統計——統計一年內每個月完成的報修任務量,如果用表格顯示的話太簡單了,不如做一個動態生成的柱狀圖吧,我突然有了這個想法。
    馬上開始動手,先是查資料,知道了Java裡和畫圖有關的是java.awt包,由於我構想的圖只是由矩形組成,那麼用到的方法也就這麼幾個:fillRect,drawRect,setColor,setFont,drawString。我很快發現一個問題:如何在頁面顯示這個圖,這是個大問題,於是找例子。
    在一個學過研究生Java課程的同事的幫助下知道可以這樣:寫一個類(Picture.class),這個類只負責畫圖,沒有任何關於如何顯示的語句,然後在一個頁面文件(.htm文件就行)裡<body>裡寫上這段代碼:<applet code="Picture" height="400" width="400"></applet>,運行這個文件就可以了。但是這個方法有這兩個弊端:1、它是直接從服務器端下載Picture.class,在客戶端生成圖片,所以客戶端必須裝有java環境,比如j2re等;2、現在大部分浏覽器都或者迫於無奈或者被強行綁架(這裡我嚴重鄙視一下3721和一個叫“天下搜索”的)安裝了阻止小窗口、ActiveX控件的插件——就連XP的SP2也集成了這個功能——而這個功能同樣對<applet>有效。
    放棄第一種方法後我在網上找到了第二個例子,第二個例子讓我很奇怪,代碼直接寫在一個.jsp(SUN企業級應用的首選)文件裡,打開文件顯示圖片,一看這個圖片的屬性竟然就是這個.jsp(SUN企業級應用的首選)文件的名。看了一陣子代碼發現不是很理解,我開始看第三個例子。
    第三個例子符合我的思維:寫一個bean(或者說是一個類),把一個代表路徑的字符串和一些數據傳給它,它根據數據畫圖但是不返回(從這一點來說它不能叫做bean),而是生成一個如.jpg文件並按照傳進來的路徑名進行保存。然後顯頁面通過<img src="……">顯示圖片。我通過這種方式實現了工作,下面是這個類的代碼:
----------------------------------Picture.java------------------------------------
//該bean用於畫柱狀統計圖
package ringz.javabeans;
import java.io.*;
import java.util.*;
import com.sun.image.codec.jpeg.*;
import java.awt.image.*;
import java.awt.*;

public class PictureBean
{
  BufferedImage image;
  private String fileLocation;

  public void setFileLocation(String fileLocation)//fileLocation是圖片的路徑,如:“D:\a\b\c.jpg”
  {
     this.fileLocation=fileLocation;
   }

  public void createImage(String fileLocation)
  {
    try
     {
       FileOutputStream fos = new FileOutputStream(fileLocation);
       BufferedOutputStream bos = new BufferedOutputStream(fos);
       JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);
       encoder.encode(image);
       bos.close();
      }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved