Mardi 14 février 2012, fait par H.ZINSOU Java niveau 2,Cnam Cergy ------------------------------------------------------------------------------------------------------------------------- Dans le fichier PhotoServlet.java Début ------------------------------------------------------------------------------------------------------------------------Objectif: créer une servlet permettant de faire apparaitre une image dans un cadre ------------------------------------------------------------------------------------------------------------------------- import java.awt.Frame; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.PrintWriter; import javax.imageio.ImageIO; import java.io.File; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.swing.ImageIcon; import javax.swing.JLabel; import com.sun.image.codec.jpeg.JPEGImageEncoder; import com.sun.image.codec.jpeg.JPEGCodec; public class PhotoServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{ /* On va créer un objet permettant de générer l'image */ /* déclarer une variable de sortie * de type ServletOutputStream * Je mets dans cette variable l'objet que me retourne * resp.getOutputStream() */ ServletOutputStream sortie = resp.getOutputStream(); /* création d'un cadre qui va accueillir l'image */ Frame cadre= new Frame(); //Pour notifier des informations au cadre cadre.addNotify(); try { /*Création d'une variable indiquant le chemin de l'image à afficher * Création d'une variable nommé chemin de type BufferedImage * qui contient le résultat de la méthode read() de la classe ImageIO * prennant en argument l'instanciation de File prennant * le chemin de notre image */ BufferedImage chemin = ImageIO.read(new File("C:/......../Text1.jpg")); // On retranscrit l'image sur la page //chargement de la variable encodage JPEGImageEncoder encodage = JPEGCodec.createJPEGEncoder(sortie); encodage.encode(chemin); // Code permettant de mettre une image dans un cadre //Etape 1 : création d'un bouton de type JLabel, on récupére le chemin de notre image JLabel bouton = new JLabel(new ImageIcon(chemin)); /*définition des dimensions du cadre * ayant comme paramètres * (coin supérieur gauche de la fenêtre est placé aux coordonnées) * coordonnée de x * coordonnée de y * largeur * hauteur */ cadre.setBounds(200, 200, 300, 300); /* Définition des dimensions de notre bouton */ bouton.setBounds(0,0,320,200); /* On ajoute notre bouton à notre cadre */ cadre.add(bouton); /* On rend visible le cadre * on utilise la méthode setVisible * qui prend en paramètre un booléen : * soit true , soit false */ cadre.setVisible(true); } catch (IOException io) { /* S'il y a un problème , on lance une IOException */ System.out.println ("Erreur de chargement d'image"+io); } //Fermeture de OutputStream sortie.close(); } } ------------------------------------------------------------------------------------------------------------------------- Fin du fichier PhotoServlet.java ------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------- Dans le fichier BoutonAfficheDate.java Début ------------------------------------------------------------------------------------------------------------------------Objectif : (Application Java) Ce fichier permet de créer une fenêtre contenant un bouton. Lorsqu'on clique sur le bouton, on obtient un message avec la date du jour ------------------------------------------------------------------------------------------------------------------------- /*On importe toutes les classes contenues dans swing se trouvant lui même dans le package javax*/ import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Date; /*Création d'une classe nommée BoutonAfficheDate * Implementation de l'interface ActionListener * qui ne déclare qu'une méthode : actionPerformed * Java appelle toujours cette méthode à chaque fois qu'on clique sur un bouton */ class BoutonAfficheDate implements ActionListener { /*On instancie un JButton, * prennant en argument "cliquer pour afficher date", * on le met dans une variable nommée bouton de type JButton */ JButton bouton = new JButton("cliquer pour afficher date"); /* Crétion d'un panneau */ JPanel panneau= new JPanel(); //Constructeur par défaut de BoutonAfficheDate public BoutonAfficheDate() { /*On ajoute une chaine de caractère et un jtextField au jpanel */ // panneau.add("South", champAffichage); //On ajoute notre JButton à notre JPanel panneau.add(bouton); //Création de la fenêtre JFrame fenetre = new JFrame("Bouton Date"); //Affectation du Panel à la fenêtre fenetre.setContentPane(panneau); fenetre.pack(); //Affichage fenetre.setVisible(true); /*On fait appel à la méthode addActionListener définie dans la classe ActionListener * Mon programme va "écouter" ce qui se passe au niveau du bouton */ bouton.addActionListener(this); } /*Cette méthode est déclarée dans la classe ActionListener */ public void actionPerformed(ActionEvent celya){ /* On instancie la classe Date * qu'on récupère dans une variable nommée dateDuJour * de type Date * */ Date dateDuJour = new Date(); /* Pour afficher un message dans une nouvelle fenêtre, * on va utiliser la méthode showConfirmDialog() * contenu dans JOptionPane * Notre fenêtre se nommera Date du jour * et contiendra la phrase "Nous sommes le" suivi de la date */ JOptionPane.showConfirmDialog(null, "Nous sommes le "+dateDuJour.toLocaleString(), "Date du jour", JOptionPane.PLAIN_MESSAGE); } public static void main(String[] args) { BoutonAfficheDate bouAffDat = new BoutonAfficheDate(); } } ------------------------------------------------------------------------------------------------------------------------- Fin fichier BoutonAfficheDate.java ------------------------------------------------------------------------------------------------------------------------- Ou encore le meme autrement __________________________________________________________________________________ ______________________________________________ Exercice ServletAfficherImage __________________________________________________________________________________ ___________________________________ import java.awt.Frame; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletRequest; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; public class ServletImageAfficher extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse resp ) throws ServletException,IOException{ ServletOutputStream sortie = resp.getOutputStream(); //variable sortie de type servletoutputstream dans laquel j'affecte la sortie retourné variable static getoutputstream //creation d'un cadre Frame cadre = new Frame(); // pour lui notifier les informations cadre.addNotify(); try{ // creation d'une variable qui va indiquer le chemin de limage BufferedImage chemin = ImageIO.read(new File("c:\\image.jpg")); // on retranscrit limage sur la page JPEGImageEncoder encodage = JPEGCodec.createJPEGEncoder(sortie); encodage.encode(chemin); JLabel label = new JLabel(new ImageIcon(chemin)); cadre.setBounds(100,100,500,500); //on defini la taille du cadre label.setBounds(0,0,500,500); // on defini la taille du label cadre.add(label); //on attache le label qui contient le chemin de l'image a afficher cadre.setVisible(true); //on rend la fenetre visible sortie.close(); }catch(IOException e){ System.out.println("Erreur de chargement"); } } } __________________________________________________________________________________ ______________________________________________ Exercice BoutonAfficheDateHeure : __________________________________________________________________________________ ______________________________________________ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Date; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; public class BoutonAfficheDateHeure extends JFrame implements ActionListener{ JPanel pan = new JPanel(); // creation d'un panneau JButton bouton0 = new JButton("La Date du Jour"); //création d'un bouton JTextField champAffichage = new JTextField(30); // création d'un champ de texte public static void main(String[] args) {// function main du programme, le point d'entré de java cette fonction main est //encapsulé public, elle est statique et ne renvoi Rien (void) elle prend comme arguement //( un tableau de chaine de caractére) new BoutonAfficheDateHeure(); //création en memoire de l'objet //constructeur de la classe } //Constructeur par défaut // on crée une methode un peu particuliére appelé constructeur de la classe public BoutonAfficheDateHeure(){ // declaration de du constructeur // definition du constructeur this.setTitle("Animation"); this.setSize(500, 100); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocationRelativeTo(null); //Ajout du bouton à notre panel pan.add(bouton0); //Ajout du Champ de text a notre panel pan.add(champAffichage); this.setContentPane(pan); this.setVisible(true); //On rend la fenetre visible. bouton0.addActionListener(this);// on ajoute un ecouteur d'événement sur notre bouton } public void actionPerformed(ActionEvent evt){ // on rendre dans l'évenement du bouton if(evt.getSource()== bouton0){ //on verifie que la source du click Date dateDuJour = new Date(); // dateDujour est instancier ici afin que lorsque l'utilisateur genère un clic, la date se mette a jour. champAffichage.setText("La date du jour est le :"+dateDuJour.toLocaleString()); // on concatene la phrase avec la variable dateDuJour et on la fait s'afficher dans le champ de texte } } }