genericchartservlet.java

来自「本人课程设计时做的一个用struts框架实现的基于cmmi2的项目管理系统的原型」· Java 代码 · 共 80 行

JAVA
80
字号

package com.cmmi2pms.chart;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;

public abstract class GenericChartServlet extends HttpServlet
{

	public GenericChartServlet()
	{
	}

	public void init(ServletConfig config)
		throws ServletException
	{
		super.init(config);
	}

	public void destroy()
	{
	}

	protected void processRequest(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException
	{
		byte input[] = new byte[1024];
		boolean eof = false;
		ByteArrayInputStream bis = new ByteArrayInputStream(getChartBytes(request, response));
		response.setHeader("content/type", "image/jpeg");
		BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());
		while(!eof) 
		{
			int length = bis.read(input);
			if(length == -1)
				eof = true;
			else
				bos.write(input, 0, length);
		}
		bos.flush();
		bis.close();
		bos.close();
	}

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

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

	public String getServletInfo()
	{
		return "Chart Rendering Servlet";
	}

	private byte[] getChartBytes(HttpServletRequest request, HttpServletResponse response)
		throws IOException
	{
		ByteArrayOutputStream out = new ByteArrayOutputStream();
		ChartUtilities.writeChartAsJPEG(out, getChart(request, response), getWidth(), getHeight());
		out.close();
		return out.toByteArray();
	}

	protected abstract JFreeChart getChart(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse);

	public abstract int getHeight();

	public abstract int getWidth();
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?