给出关键代码以供楼主参考。这是生成图片文件的Servlet中的代码: JFreeChart chart = ...;//获取图表
String chartSrc = "chart.jpg";//图片名称
//以下这句代码可以解决楼主第一个问题:控制图片生成路径,使图片生成在工程目录中。
String realPath = getServletContext().getRealPath( chartSrc );
//生成图片
FileOutputStream out = new FileOutputStream( realPath );
ChartUtilities.writeChartAsJPEG(out, chart, 600, 400, info);
out.close();
//把图片路径保存到request中,以便在页面上使用
request.setAttribute("chartSrc", chartSrc);
//转发到显示图片的页面
request.getRequestDispatcher("xxx.jsp").forward(request, response);
这是JSP中显示图片的代码:
<img style="border:none;" src="${ chartSrc }" />
String chartSrc = "chart.jpg";//图片名称
//以下这句代码可以解决楼主第一个问题:控制图片生成路径,使图片生成在工程目录中。
String realPath = getServletContext().getRealPath( chartSrc );
//生成图片
FileOutputStream out = new FileOutputStream( realPath );
ChartUtilities.writeChartAsJPEG(out, chart, 600, 400, info);
out.close();
//把图片路径保存到request中,以便在页面上使用
request.setAttribute("chartSrc", chartSrc);
//转发到显示图片的页面
request.getRequestDispatcher("xxx.jsp").forward(request, response);
这是JSP中显示图片的代码:
<img style="border:none;" src="${ chartSrc }" />
哦,多删了一句!
生成图片的那句代码中的 info 是这样创建的:
ChartRenderingInfo info = new ChartRenderingInfo();
File file = new File(System.getProperty("java.io.tmpdir"), filename);
if (!file.exists()) {
throw new ServletException("File '" + file.getAbsolutePath()
+ "' does not exist");
}从上面源码可以看出,通过设置jvm变量即可
web.xml配置文件<servlet-mapping>
<servlet-name>DisplayChart</servlet-name>
<url-pattern>/image/Chart</url-pattern>
</servlet-mapping>jsp代码<jsp:useBean id="barchart01" scope="session"
class="com.chart.SeriesXY" />
<%
String fileName = barchart01.getImg(request.getSession(), out);
String graphURL = request.getContextPath()
+ "/image/Chart?filename=" + fileName;
%>
<br/>
<img src="<%= graphURL %>" border="0" usemap="#<%=fileName %>" />
<br/>
<servlet-name>DisplayChart</servlet-name>
<servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
</servlet>