index.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Cubica</title> </head> <body> <h1>Cubica</h1> <p>y = a x³ + b x² + c x + d</p> <form action="index.jsp" method="get"> a = <input type="text" name="a"/><br/> b = <input type="text" name="b"/><br/> c = <input type="text" name="c"/><br/> d = <input type="text" name="d"/><br/> <input type="submit" value="Disegna" /> </form> <p><img width="400" height="400" src="grafico?a=<%=request.getParameter("a")%>&b=<%=request.getParameter("b")%>&c=<%=request.getParameter("c")%>&d=<%=request.getParameter("d")%>" /></p> </body> </html>
grafico.java
double a = 0.0, b = 0.0, c = 0.0, d = 0.0; private double f(double x) { return a * x * x * x + b * x * x + c * x + d; } private int xg(double x) { return 200 + (int) Math.round(x * 40.0); } private int yg(double y) { return 200 - (int) Math.round(y * 40.0); } protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("image/png"); try (OutputStream os = response.getOutputStream()) { // crea l'immagine BufferedImage img = new BufferedImage(400, 400, BufferedImage.TYPE_INT_RGB); Graphics g = img.createGraphics(); // cancella lo sfondo g.setColor(Color.WHITE); g.fillRect(0, 0, 400, 400); // disegna gli assi cartesiani g.setColor(Color.BLACK); g.drawLine(0, 200, 400, 200); g.drawString("X", 390, 190); g.drawLine(200, 0, 200, 400); g.drawString("Y", 210, 10); try { // legge i parametri a = Double.parseDouble(request.getParameter("a")); b = Double.parseDouble(request.getParameter("b")); c = Double.parseDouble(request.getParameter("c")); d = Double.parseDouble(request.getParameter("d")); // visualizza i parametri g.drawString("a = " + a, 0, 20); g.drawString("b = " + b, 0, 40); g.drawString("c = " + c, 0, 60); g.drawString("d = " + d, 0, 80); // disegna il grafico g.setColor(Color.BLUE); for (double x = -10.0; x < 10.0; x += 0.001) { double y = f(x); g.drawLine(xg(x), yg(y), xg(x), yg(y)); } } catch (Exception e) { g.drawString("Alcuni parametri mancanti", 0, 20); g.drawString("o non inseriti correttamente", 0, 40); } // invia l'immagine in output ImageIO.write(img, "png", os); os.close(); } }