index.html
<!DOCTYPE html>
<html>
<head>
<title>Istogramma</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<h1>Istogramma</h1>
<p>JSP<br /><img src="istogramma.jsp?v=60&v=120&v=180&v=240&v=300&v=360" /></p>
<p>Servlet<br /><img src="istogramma?v=60&v=120&v=180&v=240&v=300&v=360" /></p>
</body>
</html>
istogramma.jsp
<%@page import="javax.imageio.ImageIO"%>
<%@page import="java.io.OutputStream"%>
<%@page import="java.awt.Color"%>
<%@page import="java.awt.Graphics"%>
<%@page import="java.awt.image.BufferedImage"%>
<%@page contentType="image/png"%>
<% // legge i parametri
String[] v = request.getParameterValues("v");
// crea l'immagine
BufferedImage img = new BufferedImage(600, 200, BufferedImage.TYPE_INT_RGB);
Graphics g = img.createGraphics();
g.setColor(Color.WHITE);
g.fillRect(0, 0, img.getWidth(), img.getHeight());
for (int i = 0; i < v.length; i++) {
int val = Integer.parseInt(v[i]);
g.setColor(Color.getHSBColor(val / 360.0f, 1, 1));
g.fill3DRect(0, i * 20, val, 16, true);
g.setColor(Color.BLACK);
g.drawString(" " + val, val, i * 20 + 13);
}
// invia l'immagine in output
OutputStream os = response.getOutputStream();
ImageIO.write(img, "png", os);
os.close();
%>
istogramma (servlet)
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("image/png");
try (OutputStream os = response.getOutputStream()) {
// legge i parametri
String[] v = request.getParameterValues("v");
// crea l'immagine
BufferedImage img = new BufferedImage(600, 200, BufferedImage.TYPE_INT_RGB);
Graphics g = img.createGraphics();
// cancella lo sfondo
g.setColor(Color.WHITE);
g.fillRect(0, 0, img.getWidth(), img.getHeight());
// disegna l'istogramma
for (int i = 0; i < v.length; i++) {
int val = Integer.parseInt(v[i]);
g.setColor(Color.getHSBColor(val / 360.0f, 1, 1));
g.fill3DRect(0, i * 20, val, 16, true);
g.setColor(Color.BLACK);
g.drawString(" " + val, val, i * 20 + 13);
}
// invia l'immagine in output
ImageIO.write(img, "png", os);
}
}