Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使JFreeChart在JSP中可见_Java_Jsp_Servlets_Jfreechart - Fatal编程技术网

Java 使JFreeChart在JSP中可见

Java 使JFreeChart在JSP中可见,java,jsp,servlets,jfreechart,Java,Jsp,Servlets,Jfreechart,我有一个带有表单的index.JSP和一个img标记。 表单指的是一个servlet,它构建图表,在会话中设置图表,并重定向回index.jsp(以便to可以从BytesFromSession将其作为ServletOutputStream读取)。 图像未显示。。 在web.xml中,我映射了ControllerURL的URL模式 index.jsp: BytesFromSession.java public类BytesFromSession扩展了HttpServlet{ 私有ServletO

我有一个带有表单的index.JSP和一个img标记。 表单指的是一个servlet,它构建图表,在会话中设置图表,并重定向回
index.jsp
(以便to可以从
BytesFromSession
将其作为ServletOutputStream读取)。 图像未显示。。 在web.xml中,我映射了ControllerURL的URL模式

index.jsp:


BytesFromSession.java


public类BytesFromSession扩展了HttpServlet{
私有ServletOutputStream输出流;
受保护的void processRequest(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException、IOException{
response.setContentType(“图像/jpeg”);
试一试{
outputStream=response.getOutputStream();
JFreeChart c=(JFreeChart)request.getSession().getAttribute(“tbl”);
ChartUtilities.writeChartAsJPEG(outputStream,c,300400);//使用

而不是

response.sendRedirect( "index.jsp" );
编辑

我将
BytesFromSession.java中的方法名processRequest更改为doGet
只需从img标签中删除/即可,如

BytesFromSession映射到web.xml中

<servlet>
      <servlet-name>BytesFromSession</servlet-name>
      <servlet-class>com.test.BytesFromSession</servlet-class>
    </servlet>

    <servlet-mapping>
      <servlet-name>BytesFromSession</servlet-name> 
      <url-pattern>/BytesFromSession</url-pattern> 
  </servlet-mapping>

会话字节
com.test.BytesFromSession
会话字节
/会话字节

我可以通过这种方式从存储在会话中的图表中获取图像,而不必将其保存到路径中。希望这也能对您有所帮助。

您是否尝试调试它?是否调用了BytesFromSession servlet?是-没有结果。就好像outputStream不存在一样。考虑将其设为字节[],但不确定'index.jsp'中的图像源.AFAIU如何调用它。我的意思是:servlet被调用了吗?没有。没有任何输出。我可以从会话中获得图表,请参见下面编辑的答案。它确实摆脱了重定向,但现在图形显示在整个页面中,而不是仅显示在
index.jsp的图像中(它部署在Controller.java上,带有
ChartUtilities.writeChartAsJPEG(outputStream,c,300,400);
且不返回)。有什么想法吗?您现在可以在index.jsp上或其他页面上看到该图。如果它显示在index.jsp上,您是否尝试过在不做任何更改的情况下设置移除的宽度和高度属性:/
public class BytesFromSession extends HttpServlet {

private ServletOutputStream outputStream;

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setContentType("image/jpeg");

try {

    outputStream = response.getOutputStream();

    JFreeChart c = (JFreeChart) request.getSession().getAttribute("tbl");
    ChartUtilities.writeChartAsJPEG(outputStream, c, 300, 400); // <---- writing table as JPEG to outputStream

} finally {
 outputStream.close();
  }
 }

}
RequestDispatcher view = request.getRequestDispatcher("index.jsp");
view.forward(request,response);
response.sendRedirect( "index.jsp" );
<servlet>
      <servlet-name>BytesFromSession</servlet-name>
      <servlet-class>com.test.BytesFromSession</servlet-class>
    </servlet>

    <servlet-mapping>
      <servlet-name>BytesFromSession</servlet-name> 
      <url-pattern>/BytesFromSession</url-pattern> 
  </servlet-mapping>