国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JSP > 正文

JSP初級教程之跟我學JSP(六)

2024-09-05 00:17:19
字體:
來源:轉載
供稿:網友
第六章 jsp實現畫柱狀統計圖

這一節的內容是用jsp生成一個統計——統計一年內每個月完成的報修任務量。

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文件里,打開文件顯示圖片,一看這個圖片的屬性竟然就是這個.jsp文件的名。看了一陣子代碼發現不是很理解,我開始看第三個例子。
第三個例子符合我的思維:寫一個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();

catch(Exception e)

e.printStackTrace();

}

public void outGraphic(String titles,String sstr,String str[],int datas[])
{
String Title=titles;
String SStr=sstr;

int imageWidth = 400;//圖片的寬度 Line
int imageHeight;//不定長

int frameFirstWidth=imageWidth-10;
int frameFirstHeight=25;

int frameSecondWidth=imageWidth-10;
int frameSecondHeight;//不定長

int frameSpace=10;//兩框間隔

int columnHeight=18;//柱的粗 
int columnMaxWidth=frameSecondWidth-20;//柱的最大長度,也是代表數值最大的那個柱的長度

int sp=30;//柱的間隔

int num=datas.length;//數組的長度
int Datas[]=new int[num];//得到數組的數值
String name[]=new String[num];
for (int i=0;i<num;i++)
{
Datas[i]=datas[i];
name[i]=str[i];
}

//得此數組中的最大值
int max=Datas[0];
for (int j=0;j<num;j++)
{
if(Datas[j]>max)
max=Datas[j];
}

共4頁上一頁1234下一頁
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 澳门| 宁城县| 孟津县| 怀远县| 吉安市| 常德市| 张家口市| 潞西市| 莲花县| 义马市| 色达县| 新晃| 长兴县| 鹿泉市| 光泽县| 安溪县| 青浦区| 孙吴县| 达拉特旗| 烟台市| 宁城县| 齐河县| 离岛区| 衡山县| 遵义县| 舞钢市| 偃师市| 洪雅县| 方城县| 宜城市| 米脂县| 会昌县| 老河口市| 沙洋县| 金沙县| 横山县| 建水县| 丘北县| 呼和浩特市| 晋宁县| 北流市|