Servlet et image

advertisement
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
}
}
}
Téléchargement