javajsp圖表,Java生成圖表

本文目錄一覽:

用jsp怎樣生成柱狀圖,餅狀圖,折線圖

JFreeChart 可以繪製餅狀圖,折線圖,柱狀圖等. awt/swing里可以使用,JSP里也可以使用

JFreeChart是 Java平台下開源的圖表類庫,是一個完全基於Java的圖表開發技術。

支持的圖表類型也比較豐富,比如餅圖、柱狀圖、散點圖、儀錶盤、甘特圖等多種圖表,

還可以生成Web圖形報表。JFreeChart可導出PNG和JPEG格式的文件

例如下面的柱狀圖

java+jsp如何實現Uv、pv統計?框架是基於SpringMVC+hibernate實現的。

SpringMVC與Spring結合Spring是一個開源框架,Spring是於2003年興起的一個輕量級的Java開發框架,由RodJohnson在其著作ExpertOne-On-OneJ2EEDevelopmentandDesign中闡述的部分理念和原型衍生而來。它是為了解決企業應用開發的複雜性而創建的。框架的主要優勢之一就是其分層架構,分層架構允許使用者選擇使用哪一個組件,同時為J2EE應用程序開發提供集成的框架。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限於服務器端的開發。從簡單性、可測試性和松耦合的角度而言,任何Java應用都可以從Spring中受益。Spring的核心是控制反轉(IoC)和面向切面(AOP)。簡單來說,Spring是一個分層的JavaSE/EEfull-stack(一站式)輕量級開源框架。1.再次配置web.xmlSpring要在程序調用某個對象的時候,就要首先把這個對象的實例注入進去。Spring自己對實例、程序運行的管理構成了Spring自己的容器,第一步就是要在web.xml中註冊初始化這個容器。在此之前我們先在/resources文件夾下,創建子路徑META-INF,然後在這個文件夾下,創建我們後面要用到的applicationContext.xml文件,如果用過spring框架的人對這個文件都不會陌生,這是spring的配置文件。最後web.xml文件如下:metadata-complete=”true”version=”3.0″spring-dispatcherorg.springframework軟件定製開發公司?web.servlet.DispatcherServletspring-dispatcher/contextConfigLocationclasspath:/META-INF/applicationContext.xmlorg.springframework.web.context.ContextLoaderListener2.配置applicationContext.xml文件在spring4之後,spring配置的bean不是在xml文件中配置了,而是採用固定掃描annotation的類,根據對象的類型或者名字自動加載,但此前提是我們仍然要在配置文件中配置好這些類所在包的路徑。最後applicationContext.xml文件如下,3.創建一個Service類,UserService.javaService的創建我們還是比較推薦具體的service實現相應的接口的方式,下面我們寫一個服務類,用來獲取註冊的用戶,在包com.mark.java.service下創建接口UserService。publicinterfaceUserService{publicListgetAllUsernames();}然後再創建一個UserServiceImpl來實現此接口,@ServicepublicclassUserServiceImplimplementsUserService{publicListgetAllUsernames(){Listusers=newArrayList();users.add(“MarK”);users.add(“Ken”);users.add(“Fowafolo”);returnusers;}}注意!!!,我們要對個實現加上注釋@Service,這是在告訴spring,我需要你來管理我。

用java在jsp中顯示圖片,求例子代碼

%@ page language=”java” pageEncoding=”UTF-8″%

%@page import=”java.awt.image.BufferedImage”%

%@page import=”javax.imageio.ImageIO”%

%@page import=”java.io.File”%

%

out.clear();

response.setContentType(“image/png”);

BufferedImage image = ImageIO.read(new File(“D:\\mark.png”));

ImageIO.write(image, “png”, response.getOutputStream());

%

我這樣寫沒有問題,你試試。我來解釋一下樓上的疑問,html標籤不可能引用到本地的文件,比如C:\\xx.jpg你指定的路徑得是web目錄下的,動態生成圖片一般用servlet實現,比如驗證碼之類的。

如何在JSP網頁中生成動態圖表

JSP頁面中嵌入動態圖表的兩種方法 :在JSP頁面中插入Applet小程序 ;通過JavaBean動態生成圖像。

JSP是一種廣泛應用的網頁設計技術 ,它是一種HTML和Java腳本混合的編程技術 ,它結合了HTML的靜態特性和Java語言的動態能力 ,因此用它進行動態網頁設計非常方便。在進行圖像處理時 ,一般處理靜態圖片非常容易 ,但是 ,在實際應用中常常需要動態地在網頁中生成二維的圖形.

基於JFreeChart開發的一個時序圖的繪製。代碼如下:

實例中createDataset()方法用於創建數據集合對象。時序圖的數據集合與其他數據集合不同,它需要添加一個時間段內的所有數據,通常採用TimeSeries類進行添加。該實例中通過Math類的random()方法進行隨機生成。

import java.awt.*;

import java.awt.event.ActionEvent;

import

java.awt.event.ActionListener;

import java.io.BufferedInputStream;

import

java.io.DataInputStream;

import java.io.FileOutputStream;

import

java.io.IOException;

import java.net.URL;

import

java.net.URLConnection;

import java.text.DateFormat;

import

java.text.ParseException;

import java.text.SimpleDateFormat;

import

java.util.Calendar;

import java.util.Date;

import java.util.Random;

import javax.swing.JApplet;

import javax.swing.Timer;

import org.jfree.chart.*;

import

org.jfree.chart.annotations.CategoryTextAnnotation;

import

org.jfree.chart.axis.CategoryAnchor;

import

org.jfree.chart.axis.CategoryAxis;

import

org.jfree.chart.axis.CategoryLabelPositions;

import

org.jfree.chart.axis.DateAxis;

import

org.jfree.chart.axis.DateTickUnit;

import

org.jfree.chart.axis.DateTickUnitType;

import

org.jfree.chart.axis.ValueAxis;

import

org.jfree.chart.labels.StandardCategoryItemLabelGenerator;

import

org.jfree.chart.plot.CategoryPlot;

import

org.jfree.chart.plot.PlotOrientation;

import

org.jfree.chart.plot.XYPlot;

import

org.jfree.chart.renderer.category.BarRenderer;

import

org.jfree.chart.title.TextTitle;

import

org.jfree.data.category.CategoryDataset;

import

org.jfree.data.category.IntervalCategoryDataset;

import org.jfree.chart.axis.NumberAxis;

import

org.jfree.data.category.DefaultCategoryDataset;

import

org.jfree.data.gantt.Task;

import org.jfree.data.gantt.TaskSeries;

import

org.jfree.data.gantt.TaskSeriesCollection;

import

org.jfree.data.time.Day;

import org.jfree.data.time.Second;

import

org.jfree.data.time.TimeSeries;

import

org.jfree.data.time.TimeSeriesCollection;

import

org.jfree.data.xy.XYDataset;

public class shixutu extends JApplet {

//PLOT_FONT是一靜態的字體常量對象,使用此對象可以避免反覆用到的字體對象被多次創建

       

private static final Font PLOT_FONT = new Font(“黑體”, Font.ITALIC ,

18);

        JFreeChart chart;

//創建數據動態更新的監聽

  class DataGenerator extends Timer

implements ActionListener {

        

private static final long serialVersionUID =

3977867288743720504L;

         String

equID;                                

//設備ID號

         int

totalTask;                               

//任務數

         String[][]

strTask;                          

//任務情況

public void

actionPerformed(ActionEvent actionevent) {            

addTotalObservation();

         }         DataGenerator()

{

        

 

            

super(1000,

null);

            

addActionListener(this);

            

System.out.println(“super”);

        

}

     }

  

    

//將更新的數據添加到chart中

     private void addTotalObservation()

{

     

 System.out.println(“addTotalObservation”);

         

//設置新的數據集

           

chart.getXYPlot().setDataset(createDataset());

         

//通知Jfreechart

數據發生了改變,重新繪製柱狀圖

          if

(chart != null)

{

             

chart.fireChartChanged();

         

}

      }

        private static void

processChart(JFreeChart chart)

                 

//設置標題字體 

                 

chart.getTitle().setFont(new Font(“隸書”, Font.BOLD,

26)); 

                 

//設置背景色 

                 

chart.setBackgroundPaint(new

Color(252,175,134)); 

                 

XYPlot plot = chart.getXYPlot();       

//獲取圖表的繪製屬性 

                 

plot.setDomainGridlinesVisible(false); 

//設置網格不顯示 

                 

//獲取時間軸對象 

                 

DateAxis dateAxis = (DateAxis)

plot.getDomainAxis(); 

                 

dateAxis.setLabelFont(PLOT_FONT);  

//設置時間軸字體 

                 

//設置時間軸標尺值字體 

                 

dateAxis.setTickLabelFont(new

Font(“宋體”,Font.PLAIN,12)); 

                 

dateAxis.setLowerMargin(0.0);      

//設置時間軸上顯示的最小值 

                 

//獲取數據軸對象 

                 

ValueAxis valueAxis =

plot.getRangeAxis(); 

                 

valueAxis.setLabelFont(PLOT_FONT);                     

//設置數據字體 

                 

DateFormat format = new SimpleDateFormat(“mm分ss秒”);  

//創建日期格式對象 

                 

//創建DateTickUnit對象 

                 

DateTickUnit dtu = new

DateTickUnit(DateTickUnitType.SECOND,30,format); 

                 

dateAxis.setTickUnit(dtu);         

//設置日期軸的日期標籤           }          //將結果輸出在文件中

private static

void writeChartAsImage(JFreeChart chart)

              

FileOutputStream fos_jpg =

null; 

              

try

                  

fos_jpg = new

FileOutputStream(“D:\\test\\shixutu.jpg”); 

                  

ChartUtilities.writeChartAsJPEG(fos_jpg, 1, chart, 400, 300,

null); 

              

} catch (Exception e)

                 

e.printStackTrace(); 

              

} finally

                  

try

                      

fos_jpg.close(); 

                 

} catch (Exception e)

                  

              

          

          

//創建數據集合對象

          

public static XYDataset createDataset()

                   

//實例化TimeSeries對象 

                    

TimeSeries timeseries = new

TimeSeries(“Data”); 

                    

Second second = new Second(); 

//實例化Day

                    

                   

double d =

50D; 

                    

//添加一年365天的數據 

                    

for (int i = 0; i 500; i++)

{  

                        

d = d + (Math.random() – 0.5) * 10;

//創建隨機數據 

                        

timeseries.second(day, d);

//向數據集合中添加數據 

                        

second = (Second)

second.next();  

                   

}                  

TimeSeriesCollection timeSeriesCollection =                         

new

TimeSeriesCollection(timeseries); 

                  

//返回數據集合對象 

                  

return timeSeriesCollection;           } //Applet程序初始化

public void init()

{

        // 1.

得到數據  

      XYDataset  dataset =

createDataset(); 

            

// 2.

構造chart  

            

chart =

ChartFactory.createTimeSeriesChart( 

                   

“時序圖示範”, //

圖表標題  

                   

“時間”, //

目錄軸的顯示標籤–橫軸  

                   

“數值”, //

數值軸的顯示標籤–縱軸  

                   

dataset, //

數據集  

                   

false,

                   

false, //

是否生成工具  

                   

false //

是否生成URL鏈接  

                   

); 

           

// 3.

處理chart中文顯示問題  

           

processChart(chart); 

     

          

// 4.

chart輸出圖片  

           

//writeChartAsImage(chart); 

          

// 5. chart

以swing形式輸出   

           

//6.使用applet輸出

           

ChartPanel chartPanel = new

ChartPanel(chart);

           

chartPanel.setPreferredSize(new

java.awt.Dimension(800,500));       

           

getContentPane().add(chartPanel);          (new

DataGenerator()).start();

        

}

         public void

paint(Graphics g)

{

             if

(chart != null)

{

               

chart.draw((Graphics2D) g,

getBounds());

            

}

         }

   

public void destroy() {

    }

}

Java jsp中根據從數據庫中查詢出來的路徑顯示圖片

jsp是靠加載圖片路徑來顯示圖片的,圖片可以保存在項目中,也可以保存到磁盤的某個路勁下。

圖片放webroot下,一般是webroot下建一個img或pic 文件夾專門存圖。

jsp使用的時候img src”%=request.getContextPath()%/pic/mypic.gif”/

這樣就可以加載到圖片了。

怎樣用JAVA來實現在網頁中製作柱狀圖

JFreeChart是JAVA平台上的一個開放的圖表繪製類庫。它完全使用JAVA語言編寫,是為applications, applets, servlets 以及JSP等使用所設計。JFreeChart可生成餅圖(pie charts)、柱狀圖(bar charts)、散點圖(scatter plots)、時序圖(time series)、甘特圖(Gantt charts)等等多種圖表,並且可以產生PNG和JPEG格式的輸出,還可以與PDF和EXCEL關聯。

JFreeChart的主頁地址為:

在這裡可以找到最新版本的JFreeChart的相關信息,如說明文檔、下載連接以及示例圖表等。

JFreeChart目前是最好的java圖形解決方案,基本能夠解決目前的圖形方面的需求。

IBM文檔:

Javaeye社區:

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/181681.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-23 06:44
下一篇 2024-11-23 06:44

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發佈。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論