我有一个带有表单的 index.JSP 和一个 img 标签。表单指的是构建图表的 servlet,将其设置在会话中并重定向回index.jsp
(因此可以将其作为 ServletOutputStream 读取BytesFromSession
)。图片未显示。在 web.xml 中,我映射了 ControllerURL 的 urlPattern。
index.jsp:
...
<img src = "/BytesFromSession" > </img>
控制器.java
public class Controller extends HttpServlet {
...
private HttpSession session;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
outputStream = response.getOutputStream();
JFreeChart c = buildChart(); // builds the JFreeChart
session = request.getSession(true);
session.setAttribute("tbl", c);
response.sendRedirect( "index.jsp" );
}
BytesFromSession.java
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();
}
}
}
编辑
将图表保存到文件并重定向回 index.jsp 有帮助。仍然不确定为什么没有将其保存在会话中。