Java 使JFreeChart在JSP中可见
我有一个带有表单的index.JSP和一个img标记。 表单指的是一个servlet,它构建图表,在会话中设置图表,并重定向回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
(以便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>