首页 > 编程知识 正文

javajsp图表,Java生成图表

时间:2023-12-27 22:27:53 阅读:326922 作者:PZTZ

本文目录一览:

用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社区:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。