使用JSP怎么在网页中绘图?

想加入一个动态折线图。就是根据数据库中的数据进行统计然后作图。需要什么控件请指出。

简单的可以用java.awt.geom java.awt.image 这两个包
// 清空缓冲区
response.reset();

// 注意这里的MIME类型
response.setContentType("image/png");

// 创建一个 610X400 的图像
int width = 610, height = 400;

BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);

// 创建Java2D对象
/**
Graphics g = image.getGraphics();
Graphics2D g2d = (Graphics2D)g;
*/
Graphics2D g2d = image.createGraphics();

// 填充背景
g2d.setColor(Color.WHITE);
g2d.fillRect(0, 0, width, height);

// 绘制新背景
GradientPaint grayGP = new GradientPaint(0, 0, Color.GRAY, width, height,
new Color(200, 200, 200), false);
g2d.setPaint(grayGP);
g2d.fillRoundRect(20, 20, width - 20, height - 20, 50, 50);

g2d.setPaint(Color.WHITE);
g2d.fillRoundRect(12, 12, width - 20, height - 20, 50, 50);

BasicStroke bs = new BasicStroke(4.0f);
g2d.setStroke(bs);
g2d.setPaint(new Color(53, 76, 112));
g2d.drawRoundRect(12, 12, width - 20, height - 20, 50, 50);

GradientPaint blueGP = new GradientPaint(120, 60, new Color(215, 230, 252),
120, 300, Color.WHITE, false);
g2d.setPaint(blueGP);
g2d.fillRect(120, 60, 440, 300);

// 绘制图表标题
String chartTitle = "计算机编程类图书2004年月销售量统计图";
g2d.setFont(new Font("方正粗宋简体", Font.PLAIN, 22));
g2d.setColor(Color.BLACK);
g2d.drawString(chartTitle, 140, 40);

// 创建虚线笔划
float[]dashes = { 3.f };
bs = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND,
10, dashes, 0);
g2d.setStroke(bs);
g2d.setFont(new Font("Courier New", Font.PLAIN, 12));
String str = "2004-";
int stringLength = 0;

for (int i = 1; i <= 12; i++)
{
// 绘制垂直方向虚线
g2d.drawLine(80+i * 40, 50, 80+i * 40, 360);

// 绘制横轴上月份的说明文字
str += i;
stringLength = g2d.getFontMetrics().stringWidth(str);
if (i % 2 == 0)
{
g2d.drawString(str, 80+i * 40 - stringLength / 2, 387);
}
else
{
g2d.drawString(str, 80+i * 40 - stringLength / 2, 375);
}
str = "2004-";
}

str = "";
int stringHeight = 0;

for (int i = 0; i < 300; i += 30)
{
// 绘制水平方向虚线
g2d.drawLine(120, 60+i, 570, 60+i);

// 绘制纵轴上销售量的说明文字
str += 100-i / 3;
stringHeight = g2d.getFontMetrics().getAscent();
stringLength = g2d.getFontMetrics().stringWidth(str);
g2d.drawString(str, 110-stringLength, 60+i + stringHeight / 2);
str = "";
}

// 绘制坐标轴
g2d.setStroke(new BasicStroke(3.0f));
g2d.setColor(new Color(53, 76, 112));
g2d.drawLine(120, 50, 120, 360);
g2d.drawLine(120, 360, 570, 360);

// 绘制纵坐标上的标题
g2d.setFont(new Font("黑体", Font.PLAIN, 15));
g2d.drawString("月销售量", 40, 45);

// 调用TriangleServlet类,绘制坐标轴上的箭头
TriangleServlet ts = new TriangleServlet();
ts.setFillColor(new Color(53, 76, 112));
ts.setBaseLine(10);
ts.setAlpha(60);
ts.drawTrigangle(570, 360, 2, 2, g2d); // 绘制横坐标轴上的箭头
ts.drawTrigangle(120, 50, 1, 2, g2d); // 绘制纵坐标轴上的箭头

String[] bookTitle = { "JAVA", "C#" };
Color[] bookColor = { Color.RED, Color.ORANGE };
int[] sales = new int[12];
int[] month = new int[12];

g2d.setFont(new Font("Courier New", Font.PLAIN, 12));
for (int i = 0; i < bookTitle.length; i++)
{
// 初始化绘制数据
int bookSales = 0;
for (int j = 0; j < sales.length; j++)
{
bookSales = 45+(int)(Math.random() * 50);
sales[j] = 360-bookSales * 3;
month[j] = 120+j * 40;
}

// 重新设置笔划
g2d.setStroke(new BasicStroke(5.0f));
g2d.setColor(bookColor[i]);

// 绘制月销售量折线
g2d.drawPolyline(month, sales, sales.length);

// 绘制图例
g2d.fillRect(30, 140+i * 20, 10, 10);
g2d.setColor(Color.BLACK);
g2d.drawString(bookTitle[i], 45, 150+i * 20);
}

// 部署图形
g2d.dispose();

// 利用ImageIO类的write方法对图像进行编码
ServletOutputStream sos = response.getOutputStream();
ImageIO.write(image, "PNG", sos);
sos.close();
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-07-03
response.setContentType("image/png");

// 创建一个 610X400 的图像
int width = 610, height = 400;

BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);

// 创建Java2D对象
/**
Graphics g = image.getGraphics();
Graphics2D g2d = (Graphics2D)g;
*/
Graphics2D g2d = image.createGraphics();

// 填充背景
g2d.setColor(Color.WHITE);
g2d.fillRect(0, 0, width, height);

// 绘制新背景
GradientPaint grayGP = new GradientPaint(0, 0, Color.GRAY, width, height,
new Color(200, 200, 200), false);
g2d.setPaint(grayGP);
g2d.fillRoundRect(20, 20, width - 20, height - 20, 50, 50);

g2d.setPaint(Color.WHITE);
g2d.fillRoundRect(12, 12, width - 20, height - 20, 50, 50);

BasicStroke bs = new BasicStroke(4.0f);
g2d.setStroke(bs);
g2d.setPaint(new Color(53, 76, 112));
g2d.drawRoundRect(12, 12, width - 20, height - 20, 50, 50);

GradientPaint blueGP = new GradientPaint(120, 60, new Color(215, 230, 252),
120, 300, Color.WHITE, false);
g2d.setPaint(blueGP);
g2d.fillRect(120, 60, 440, 300);

// 绘制图表标题
String chartTitle = "计算机编程类图书2004年月销售量统计图";
g2d.setFont(new Font("方正粗宋简体", Font.PLAIN, 22));
g2d.setColor(Color.BLACK);
g2d.drawString(chartTitle, 140, 40);

// 创建虚线笔划
float[]dashes = { 3.f };
bs = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND,
10, dashes, 0);
g2d.setStroke(bs);
g2d.setFont(new Font("Courier New", Font.PLAIN, 12));
String str = "2004-";
int stringLength = 0;

for (int i = 1; i <= 12; i++)
{
// 绘制垂直方向虚线
g2d.drawLine(80+i * 40, 50, 80+i * 40, 360);

// 绘制横轴上月份的说明文字
str += i;
stringLength = g2d.getFontMetrics().stringWidth(str);
if (i % 2 == 0)
{
g2d.drawString(str, 80+i * 40 - stringLength / 2, 387);
}
else
{
g2d.drawString(str, 80+i * 40 - stringLength / 2, 375);
}
str = "2004-";
}

str = "";
int stringHeight = 0;

for (int i = 0; i < 300; i += 30)
{
// 绘制水平方向虚线
g2d.drawLine(120, 60+i, 570, 60+i);

// 绘制纵轴上销售量的说明文字
str += 100-i / 3;
stringHeight = g2d.getFontMetrics().getAscent();
stringLength = g2d.getFontMetrics().stringWidth(str);
g2d.drawString(str, 110-stringLength, 60+i + stringHeight / 2);
str = "";
}

// 绘制坐标轴
g2d.setStroke(new BasicStroke(3.0f));
g2d.setColor(new Color(53, 76, 112));
g2d.drawLine(120, 50, 120, 360);
g2d.drawLine(120, 360, 570, 360);

// 绘制纵坐标上的标题
g2d.setFont(new Font("黑体", Font.PLAIN, 15));
g2d.drawString("月销售量", 40, 45);

// 调用TriangleServlet类,绘制坐标轴上的箭头
TriangleServlet ts = new TriangleServlet();
ts.setFillColor(new Color(53, 76, 112));
ts.setBaseLine(10);
ts.setAlpha(60);
ts.drawTrigangle(570, 360, 2, 2, g2d); // 绘制横坐标轴上的箭头
ts.drawTrigangle(120, 50, 1, 2, g2d); // 绘制纵坐标轴上的箭头

String[] bookTitle = { "JAVA", "C#" };
Color[] bookColor = { Color.RED, Color.ORANGE };
int[] sales = new int[12];
int[] month = new int[12];

g2d.setFont(new Font("Courier New", Font.PLAIN, 12));
for (int i = 0; i < bookTitle.length; i++)
{
// 初始化绘制数据
int bookSales = 0;
for (int j = 0; j < sales.length; j++)
{
bookSales = 45+(int)(Math.random() * 50);
sales[j] = 360-bookSales * 3;
month[j] = 120+j * 40;
}

// 重新设置笔划
g2d.setStroke(new BasicStroke(5.0f));
g2d.setColor(bookColor[i]);

// 绘制月销售量折线
g2d.drawPolyline(month, sales, sales.length);

// 绘制图例
g2d.fillRect(30, 140+i * 20, 10, 10);
g2d.setColor(Color.BLACK);
g2d.drawString(bookTitle[i], 45, 150+i * 20);
}

// 部署图形
g2d.dispose();

// 利用ImageIO类的write方法对图像进行编码
ServletOutputStream sos = response.getOutputStream();
ImageIO.write(image, "PNG", sos);
sos.close();
第2个回答  2007-09-13
可以使用Jfreechart.jar组件

jsp页面如何整合microsoft visio应用程序进行画图
1。移动图形:首先用鼠标左键点击选中要移动的图形(此时图形边框会变颜色),(如果有多个要移动的图形,按住“ctrl”同时,点击要移动的图形),再按住鼠标左键移动鼠标即可将图形移动;2。模板形状中的图形移动:在要移动的图形上按住鼠标左键拖到绘图界面即可。如果上面方法不行可能是你的鼠标有问题了...

jsp中两点直接画线问题
jsp中绘图和html中不同,html的绘图一般是用js和html标签绘图,jsp一般是用插件,在java代码中写出java程序,预先编好代码然后通过jsp在画面显示图形。比如:java的awt库,在后台java代码中定义你要画的对象,然后做相应设置,再response中获得,然后调用write(),就可以绘制出来,其他的插件原理类似。

网页设计制作详细流程
我用建立的第二个网页来做示范。选中篮球资讯网文本,点击页面下方属性——链接——点文件小按钮——选中第一个网页,这样篮球资讯网文本变成蓝色。这是网站内部链接,相反就有外部链接。添加如图,一定要写就可以了。 9、最后我们浏览网页。左上角文件——在浏览器中浏览网页,点击网页中两个链接都能到达指定网页。 扩...

想学习网页制作,可是看网上说了好多东西ASP,JS,PHP等等,请问我需要学...
比如,你做前台,就是用户看到的界面的设计工作由你负责,那么你需要掌握HTML、CSS、JavaScript(即JS)、JQuery等前端技术。如果你做后台,就是管理一个网站的系统,那么你可以从ASP、PHP、JSP、Ptthon等语言中挑选一个来学习。ASP是入门级的,鼎盛时期已经过去了。建议学PHP,风头正盛;JSP一般是用来设计...

我已经自学完了servlet、jsp,现在想学框架,应该先学哪个?
可以用直接在main方法里运行,也可以用servlet+jsp+hibernate,自己搭mvc。可以熟悉j2ee基础,对以后的学习有好处。 然后学struts。在已经熟练掌握MVC模式前提下,学习struts会很容易。struts没有模型层,所以学struts,其实就是struts+hibernate+jsp的组合了。 最后再学spring。SSH里,最难的就是spring了,放最后学。学spring...

javascript网页制作软件?
网页设计者使用Flash创作出既漂亮又可改变尺寸的导航界面以及其他奇特的效果。Flash的前身是FutureWave公司的FutureSplash,是世界上第一个商用的二维矢量动画软件,用于设冲并渗计和编辑Flash文档。 Photoshop主要处理以像素所构成的数字图像。使用其众多的编修与绘图工具,可以有效地进行图片编辑工作。ps有很多功能,在图像、...

javaweb怎么导入图片(javaweb导入项目)
怎么在JSP中插入图片?1、首先需要新建Dynamicwebproject项目,建好之后在WebContent里面的内容如图所示。2、在body里在body里面设置背景图片,如图所示body部分内容。3、在body里面代码操作好之后,运行效果如图所示。4、也可以设置背景颜色,直接将url(images\/backImage.jpg)替换成#f00000。5、直接写页面春枯...

网页设计流程是什么?
2、使用方便:同第一个是相一致的,满足使用者的要求,网页做得越适合使用,就越显示出其功能美 3、整体性好:一个网站强调的就是一个整体,只有围绕一个统一的目标所做的设计才是成功的。 4、网站形象突出:一个符合美的标准的网页是能够使网站的形象得到最大限度的提升的。页面用色协调,布局符合形式美的要求:布局...

jsp文件用什么程序打开?
在DOS 下,文件名采用8+3结构,即:最长8位的文件名,由小数点分隔后再跟上最长3位的后缀名,如:READ.ME、SETUP.EXE,一般情况下文件名不允许使用汉字,只能由字母、数字和一些符号组成。如READ.ME用中文理解就是"读我",即提示用户在使用软件前先看看这个文件的内容,以获取更多的提示信息。而更重要的是,DOS下规定...

如何使用matlab在网页中作图
1、使用servlet返回的HTML字符串将Matlab图形嵌入网页;2、直接使用JSP中的WebFigure标签;3、使用中间件将整个Matlab图形嵌入网页,包括其功能和操作。本文将只介绍第二种方法。1 Matlab函数编写 首先确定返回WebFigure的Matlab函数的基本形式如下:function [result1 result2] = getfigure(parameter1, ...

相似回答