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); } }