关于servlet里面使用OutputStream时路径的问题,谢谢

李灵晖 2013-03-15 10:42:47
问题:通用的程序,在java application中实现和在servlet中实现OutputStream路径的设置是怎样的?为什么在前一种可以使用相对路径,后面只能使用绝对路径?


第一个是利用java程序实现的生产一个JFreeChart,中间的那OutputStream可以正常使用。

import java.awt.Font;
import java.io.FileOutputStream;
import java.io.OutputStream;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;

public class JFreeChartTest3 {
public static void main(String[] args) throws Exception {
JFreeChart chart = ChartFactory.createPieChart("某公司人员组织数据图",
getDataset(), true, true, false);
chart.setTitle(new TextTitle("某公司组织结构图", new Font("宋体", Font.BOLD
+ Font.ITALIC, 20)));

LegendTitle legend = chart.getLegend(0);// 设置Legend
legend.setItemFont(new Font("宋体", Font.BOLD, 14));
PiePlot plot = (PiePlot) chart.getPlot();// 设置Plot
plot.setLabelFont(new Font("隶书", Font.BOLD, 16));




//------------------------------------------------------
OutputStream os = new FileOutputStream(
"WebContent/admin/images/reports/company.jpeg");
// 图片是文件格式的,故要用到FileOutputStream用来输出。
//------------------------------------------------------






ChartUtilities.writeChartAsJPEG(os, chart, 1000, 800);
// 使用一个面向application的工具类,将chart转换成JPEG格式的图片。第3个参数是宽度,第4个参数是高度。

os.close();// 关闭输出流
}

private static DefaultPieDataset getDataset() {
DefaultPieDataset dpd = new DefaultPieDataset(); // 建立一个默认的饼图
dpd.setValue("管理人员", 25); // 输入数据
dpd.setValue("市场人员", 25);
dpd.setValue("开发人员", 45);
dpd.setValue("其他人员", 10);
return dpd;
}
}


第二个程序是通过servlet实现的,但是同样的那个路径却是错误的


import java.awt.Font;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;


public class SalesProductChartServlet extends HttpServlet {
private static final long serialVersionUID = 1L;


public SalesProductChartServlet() {
super();
// TODO Auto-generated constructor stub
}


protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
JFreeChart chart = ChartFactory.createPieChart("某公司人员组织数据图",
getDataset(), true, true, false);
chart.setTitle(new TextTitle("某公司组织结构图", new Font("宋体", Font.BOLD
+ Font.ITALIC, 20)));

LegendTitle legend = chart.getLegend(0);// 设置Legend
legend.setItemFont(new Font("宋体", Font.BOLD, 14));
PiePlot plot = (PiePlot) chart.getPlot();// 设置Plot
plot.setLabelFont(new Font("隶书", Font.BOLD, 16));





//-------------------------------------------------------
OutputStream os = new FileOutputStream(
"WebContent/admin/images/reports/company.jpeg");
// 图片是文件格式的,故要用到FileOutputStream用来输出。
//这里的路径如果换成绝对路径就可以正常实现
//报错:java.io.FileNotFoundException: WebContent\admin\images\reports\company.jpeg (系统找不到指定的路径。)

//-------------------------------------------------------





ChartUtilities.writeChartAsJPEG(os, chart, 1000, 800);
// 使用一个面向application的工具类,将chart转换成JPEG格式的图片。第3个参数是宽度,第4个参数是高度。

os.close();// 关闭输出流
}

private static DefaultPieDataset getDataset() {
DefaultPieDataset dpd = new DefaultPieDataset(); // 建立一个默认的饼图
dpd.setValue("管理人员", 25); // 输入数据
dpd.setValue("市场人员", 25);
dpd.setValue("开发人员", 45);
dpd.setValue("其他人员", 10);
return dpd;
}
}

...全文
513 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
廉月程 2013-11-04
  • 打赏
  • 举报
回复
它默认路径好像是tomcat下的bin文件夹!
廉月程 2013-11-04
  • 打赏
  • 举报
回复
为什么用相对路径会报错呢?
Ji秋风 2013-03-15
  • 打赏
  • 举报
回复
servlet 中根目录就是 WebContent 试试 /admin/images/reports/company.jpeg
  • 打赏
  • 举报
回复
一个是给浏览器用,一个是给服务器用。

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧