[英]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.