簡體   English   中英

使JFreeChart在JSP中可見

[英]Making a JFreeChart visible in a JSP

我有一個帶有表單和img標簽的index.JSP。 該表單引用一個servlet,該servlet構建圖表,將其設置在會話中,然后重定向回index.jsp (以便可以將其作為從BytesFromSession的ServletOutputStream BytesFromSession )。 圖片未顯示。在web.xml中,我映射了ControllerURL的urlPattern。

index.jsp:


...
<img src = "/BytesFromSession" > </img>

Controller.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很有幫助。 仍然不確定為什么不將其保存在會話中。

采用

RequestDispatcher view = request.getRequestDispatcher("index.jsp");
view.forward(request,response);

代替

response.sendRedirect( "index.jsp" );

編輯

我在BytesFromSession.java中將方法名稱processRequest更改為doGet ,並從<img src="BytesFromSession">

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>

我可以以這種方式從存儲在會話中的圖表中獲取圖像,而不必將其保存到路徑中。 希望對您有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM