Istogramma

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

Tabelline in JSP

index.jsp

<%-- 
 Document : index
 Created on : 12-gen-2015, 11.24.08
 Author : GfO
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Tabelline per bambini/e</title>
 </head>
 <body>
 <h1>Tabelline per bambini/e</h1>
 <p>Caro bambino/a, inserisci la base della tabellina che vuoi vedere...</p>
 <form action="tabellina.jsp" method="get">
 Base <input type="text" name="base" />
 <input type="submit" value="OK" />
 </form>
 </body>
</html>

tabellina.jsp

 <%-- 
 Document : tabellina
 Created on : 12-gen-2015, 11.50.00
 Author : GfO
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Tabelline per bambini/e</title>
 </head>
 <body>
 <h1>Tabellina del <% int b = Integer.parseInt(request.getParameter("base"));%> <%=b%></h1>
 <% for (int i = 1; i <= 10; i++) {%>
 <p><%=b%> x <%=i%> = <%=b * i%></p>
 <% }%>
 </body>
</html>

Meteo

Costruire una pagina web con un form in cui inserire una località italiana e la relativa temperatura misurata ad una certa ora prefissata.
I dati devono essere spediti ad una servlet “registra” che riceve i dati della località, rileva se la temperatura è la massima o la minima fra quelle inserite, in tal caso registra la località.
La servlet deve inoltre visualizzare la media delle temperature inserite fino a quel momento, la temperatura massima con le relative località, la temperatura minima con le relative località.

  • Meteo (ZIP del progetto NetBeans)

Biblioteca sul Web 2 (per la 5F)

Modificare index.html aggiungendo la riga:
<p>Clicca su <a href=”elenco”>elenco</a> per visualizzare tutti i testi.</p>
Scrivere la servlet “elenco” che visualizza l’elenco completo dei libri.

Oppure esercizi 3 e 4 pag. 364 e 365.

Esercizio per la 5E e 5F

Costruire una pagina web index.html che serva per gestire un sondaggio scolastico. Dovrà contenere una casella combinata per la selezione della classe da 1 a 5 (name=”classe”) della sezione da A a I (name=”sezione”) una casella per l’inserimento di una password di classe (name=”pass”) e un bottone radio con la domanda “Ti piace questa scuola?” con una possibile risposta selezionabile da 1 a 4.
Creare la pagina “invia” che controlla la correttezza dell’associazione fra classe/sezione e la password mediante un array del tipo:
1a 483545435
1b 867395684
1c 435346534
1d 475675756
e visualizza il tuo voto nel sondaggio.

Esempio svolto in classe: WebApplication.zip (classe 5F)
Esempio svolto in classe: SitoPersonale.zip (classe 5E)

Soluzione per NetBeans: Sondaggio

JLaser

public class JLaser extends JPanel implements Runnable {

    public JLaser() {
        this.setSize(1, 10);
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);

        g.setColor(Color.YELLOW);
        g.drawLine(0, 0, 0, 9);
    }

    public void fire() {
        Thread thread = new Thread(this);
        thread.setDaemon(true);
        thread.start();
    }

    @Override
    public void run() {
        while (this.getY() >= 0) {
            this.setLocation(this.getX(), this.getY() - 10);
            try {
                Thread.sleep(20);
            } catch (InterruptedException ex) {
            }      
        }      
        setVisible(false);
        this.getParent().remove(this);
    }

}

Codice da utilizzare nel Main:

    @Override
    public void mouseMoved(MouseEvent me) {
        pnlAstronave.setLocation(me.getX()-5, pnlAstronave.getY());
    }

    @Override
    public void keyReleased(KeyEvent ke) {
        if (ke.getKeyChar()==' ') {
            JLaser laser = new JLaser();
            laser.setBounds(pnlAstronave.getX()+5, pnlAstronave.getY()-10, 1, 10);
            panel.add(laser);
            laser.setVisible(true);
            laser.fire();
        }
    }