Navigateur internet - mise à jour

0/5 (9 avis)

Vue 18 014 fois - Téléchargée 1 338 fois

Description

Ce navigateur fait une requête au serveur et affiche le contenu HTML des pages dans un JEditorPane. Étant donné qu'aucun script ne peut s'éxécuter à partir de là, il est donc sans risques d'aller n'importe où sur les sites, sans craindre que des opérations indésirables s'effectuent. C'est une sorte se sécurité absolue pour le Web ;-)

Source / Exemple :


import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import javax.swing.*;
import javax.swing.event.*;

public class SecureWebExplorer extends JFrame implements ActionListener, HyperlinkListener {
    private String currURL = null;
    private String history[] = new String[15];
    private int h = 0;
    private JMenuItem MI_NEWPAGE, MI_ACTU, MI_CODE, MI_ABOUT;
    private JButton bPREV, bNEXT, bOK;
    private JPopupMenu PM_NAV;
    private JMenuItem PMI_ACTU, PMI_CODE;
    private JTextField urlBar;
    private JEditorPane contenu;
    private JLabel barreEtat;
    
    private final String WMSG = " Bienvenue sur Secure Web Explorer !",
        P_LOAD = " Chargement de la page...",
        S_LOAD = " Chargement de la source...",
        END = " Terminé",
        ERR_NOENTRY = "Veuillez entrer une adresse dans la barre",
        ERR_URL = " URL invalide",
        ERR_FILE = " Fichier introuvable",
        ERR_DISP = " Il y a eu un problème lors de l'affichage de la page";
    
    public SecureWebExplorer() {
        initFrame(150, 150);
        lirePage("http://www.google.com");
        addPage();
    }
    
    public SecureWebExplorer(int x, int y) {
        initFrame(x, y);
        lirePage("http://www.google.com");
        addPage();
    }
    
    public SecureWebExplorer(int x, int y, String urlName) {
        initFrame(x, y);
        lirePage(urlName);
        addPage();
    }
    
    public void initFrame(int x, int y) {
        super.setTitle("Document vide - Secure Web Explorer");
        JMenuBar barre = new JMenuBar();
        
        // Menu 1: "Fichier"
        JMenu M_FILE = new JMenu("Fichier");
        MI_NEWPAGE = new JMenuItem("Ouvrir une nouvelle page");
        MI_NEWPAGE.addActionListener(this);
        MI_NEWPAGE.setMnemonic('O');
        M_FILE.add(MI_NEWPAGE);
        M_FILE.setMnemonic('F');
        barre.add(M_FILE);
        
        // Menu 2: "Affichage"
        JMenu M_DISP = new JMenu("Affichage");
        MI_ACTU = new JMenuItem("Actualiser");
        MI_ACTU.addActionListener(this);
        MI_ACTU.setMnemonic('t');
        M_DISP.add(MI_ACTU);
        M_DISP.addSeparator();
        MI_CODE = new JMenuItem("Source");
        MI_CODE.addActionListener(this);
        MI_CODE.setMnemonic('S');
        M_DISP.add(MI_CODE);
        M_DISP.setMnemonic('A');
        barre.add(M_DISP);

        // Menu 3: "Info"
        JMenu M_INFO = new JMenu("Info");
        MI_ABOUT = new JMenuItem("A propos...");
        MI_ABOUT.addActionListener(this);
        MI_ABOUT.setMnemonic('p');
        M_INFO.add(MI_ABOUT);
        M_INFO.setMnemonic('I');
        barre.add(M_INFO);
        
        setJMenuBar(barre);
        
        // Menu de navigation
        PM_NAV = new JPopupMenu();
        PMI_ACTU = new JMenuItem("Actualiser");
        PMI_ACTU.addActionListener(this);
        PMI_ACTU.setMnemonic('t');
        PM_NAV.add(PMI_ACTU);
        PM_NAV.addSeparator();
        PMI_CODE = new JMenuItem("Source");
        PMI_CODE.addActionListener(this);
        PMI_CODE.setMnemonic('S');
        PM_NAV.add(PMI_CODE);
        
        Container c = getContentPane();
        
        // Barre d'outils
        JToolBar toolBar = new JToolBar();
        
            // Page précédente
        bPREV = new JButton("Prec.");
        bPREV.addActionListener(this);
        bPREV.setEnabled(false);
        toolBar.add(bPREV);
        
            // Page suivante
        bNEXT = new JButton("Suiv.");
        bNEXT.addActionListener(this);
        bNEXT.setEnabled(false);
        toolBar.add(bNEXT);
        
            // Barre d'adresse
        urlBar = new JTextField();
        urlBar.addActionListener(this);
        toolBar.add(urlBar);
        
            // Bouton «OK»
        bOK = new JButton("OK");
        bOK.addActionListener(this);
        toolBar.add(bOK);
        
        c.add(toolBar, BorderLayout.NORTH);
        
        // Contenu de la page
        contenu = new JEditorPane();
        contenu.setEditable(false);
        contenu.addHyperlinkListener(this);
        contenu.addMouseListener(
            new MouseAdapter() {
                public void mousePressed(MouseEvent e) {
                    checkTrigger(e);
                }
                
                public void mouseReleased(MouseEvent e) {
                    checkTrigger(e);
                }
                
                private void checkTrigger(MouseEvent e) {
                    if (e.isPopupTrigger())
                        PM_NAV.show(e.getComponent(), e.getX(), e.getY());
                }
            }
        );
        JScrollPane scrollPane = new JScrollPane(contenu);
        c.add(scrollPane, BorderLayout.CENTER);
        
        // Barre d'état
        barreEtat = new JLabel(WMSG);
        c.add(barreEtat, BorderLayout.SOUTH);
        
        setSize(600, 500);
        setLocation(x, y);
        show();
    }
    
    public void hyperlinkUpdate(HyperlinkEvent e) {
        if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
            lirePage(e.getURL().toString());
            addPage();
        }
    }
    
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == MI_NEWPAGE) {
            if (currURL != null)
                new SecureWebExplorer(170, 170, currURL);
            else
                new SecureWebExplorer(170, 170);
        }
        
        if (e.getSource() == bPREV)
            go_prev();
        
        if (e.getSource() == bNEXT)
            go_next();
        
        if (e.getSource() == urlBar || e.getActionCommand() == "OK") {
            if (!urlBar.getText().equals("")) {
                lirePage(urlBar.getText());
                addPage();
            }
            else
                barreEtat.setText(ERR_NOENTRY);
        }
        
        if (e.getActionCommand() == "Actualiser") {
            if (currURL != null)
                lirePage(currURL);
        }
            
        if (e.getActionCommand() == "Source") {
            if (currURL != null)
                new TextEditor(currURL);
        }

        if (e.getSource() == MI_ABOUT)
            JOptionPane.showMessageDialog(null, getInfo(),
                    "À propos...", JOptionPane.INFORMATION_MESSAGE);
    }

    public String getInfo() {
        return "Secure Web Explorer, par FasteX";
    }

    private void addPage() {
        if (currURL != null) {
            h++;
            if (h > 10) {
                for (int i = 0; i < 9; i++)
                    history[i] = history[i + 1];
                h--;
            }
            history[h] = currURL;
            actuPREV();
            actuNEXT();
        }
    }
    
    private void actuPREV() {
        if (h - 1 < 0 || history[h - 1] == null) {
            bPREV.setEnabled(false);
            bPREV.setToolTipText("Il n'y a pas de page précédente");
        }
        else {
            bPREV.setEnabled(true);
            bPREV.setToolTipText(history[h - 1]);
        }
    }
    
    private void actuNEXT() {
        if (history[h + 1] == null) {
            bNEXT.setEnabled(false);
            bNEXT.setToolTipText("Il n'y a pas de page suivante");
        }
        else {
            bNEXT.setEnabled(true);
            bNEXT.setToolTipText(history[h + 1]);
        }
    }
    
    private void go_prev() {
        if (bPREV.isEnabled()) {
            h--;
            lirePage(history[h]);
        }
    }
    
    private void go_next() {
        if (bNEXT.isEnabled()) {
            h++;
            lirePage(history[h]);
        }
    }
    
    private void lirePage(String urlName) {
        if (urlName.indexOf("http://") == -1)
            urlName = "http://" + urlName;
        urlBar.setText(urlName);
        currURL = urlName;
        super.setTitle(" " + urlName + " - Secure Web Explorer");
        actuPREV();
        actuNEXT();

        barreEtat.setText(P_LOAD);

        try {
            contenu.setPage(urlName);
            barreEtat.setText(END); }
        catch(MalformedURLException e) {
            barreEtat.setText(ERR_URL); }
        catch(FileNotFoundException e) {
            barreEtat.setText(ERR_FILE); }
        catch(IOException e) {
            barreEtat.setText(ERR_DISP); }
        catch(Exception e) {
            barreEtat.setText(ERR_DISP);
        }
    }
    
    public static void main(String[] s) {
        SecureWebExplorer app = new SecureWebExplorer();
        app.setDefaultCloseOperation(2);
    }
}

__________________________________________________________________________

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;

public class TextEditor extends JFrame implements ActionListener {
   private JTextArea tA;
   private JMenu M_FILE, M_EDIT;
   private JMenuItem MI_OPEN, MI_SAVE, MI_SAVEAS, MI_CLOSE, MI_EXIT;
   private JMenuItem MI_CUT, MI_COPY, MI_PASTE;
   private JPopupMenu pop;
   private JMenuItem PMI_CUT, PMI_COPY, PMI_PASTE;

   public TextEditor() {
      super.setTitle("Document vide - TextEditor");
      initFrame();
   }

   public TextEditor(String urlName) {
      super.setTitle("Source de " + urlName + " - TextEditor");
      initFrame();
      displayHtmlSource(urlName);
   }

   public void initFrame() {
      Container c = getContentPane();

      JMenuBar menuBar = new JMenuBar();

      M_FILE = new JMenu("Fichier");
      MI_OPEN = new JMenuItem("Ouvrir...");
      MI_OPEN.setMnemonic('O');
      M_FILE.add(MI_OPEN);
      MI_SAVE = new JMenuItem("Enregistrer");
      MI_SAVE.setMnemonic('E');
      M_FILE.add(MI_SAVE);
      MI_SAVEAS = new JMenuItem("Enregistrer sous...");
      MI_SAVEAS.setMnemonic('s');
      M_FILE.add(MI_SAVEAS);
      MI_CLOSE = new JMenuItem("Fermer");
      MI_CLOSE.setMnemonic('F');
      M_FILE.add(MI_CLOSE);
      M_FILE.addSeparator();
      MI_EXIT = new JMenuItem("Quitter");
      MI_EXIT.addActionListener(this);
      MI_EXIT.setMnemonic('Q');
      M_FILE.add(MI_EXIT);
      M_FILE.setMnemonic('F');
      menuBar.add(M_FILE);

      M_EDIT = new JMenu("Edition");
      MI_CUT = new JMenuItem("Couper");
      MI_CUT.addActionListener(this);
      MI_CUT.setMnemonic('C');
      M_EDIT.add(MI_CUT);
      MI_COPY = new JMenuItem("Copier");
      MI_COPY.addActionListener(this);
      MI_COPY.setMnemonic('p');
      M_EDIT.add(MI_COPY);
      MI_PASTE = new JMenuItem("Coller");
      MI_PASTE.addActionListener(this);
      MI_PASTE.setMnemonic('o');
      M_EDIT.add(MI_PASTE);
      M_EDIT.setMnemonic('E');
      menuBar.add(M_EDIT);

      setJMenuBar(menuBar);
      
      pop = new JPopupMenu();
      PMI_CUT = new JMenuItem("Couper");
      PMI_CUT.addActionListener(this);
      PMI_CUT.setMnemonic('C');
      pop.add(PMI_CUT);
      PMI_COPY = new JMenuItem("Copier");
      PMI_COPY.addActionListener(this);
      PMI_COPY.setMnemonic('P');
      pop.add(PMI_COPY);
      PMI_PASTE = new JMenuItem("Coller");
      PMI_PASTE.addActionListener(this);
      PMI_PASTE.setMnemonic('O');
      pop.add(PMI_PASTE);

      tA = new JTextArea();
      tA.addMouseListener(
         new MouseAdapter() {
            public void mousePressed(MouseEvent e) {
               checkPopupTrigger(e);
            }

            public void mouseReleased(MouseEvent e) {
               checkPopupTrigger(e);
            }

            private void checkPopupTrigger(MouseEvent e) {
               if ( e.isPopupTrigger() )
                  showContext(e);
            }
         }
      );

      JScrollPane scrollPane = new JScrollPane(tA);
      c.add(scrollPane, BorderLayout.CENTER);

      setSize(600, 500);
      setLocation(200, 75);
      show();
   }

   public void actionPerformed(ActionEvent e) {
      if ( "Quitter" == e.getActionCommand() )
         System.exit(0);
      if ( "Couper" == e.getActionCommand() )
         tA.cut();
      if ( "Copier" == e.getActionCommand() )
         tA.copy();
      if ( "Coller" == e.getActionCommand() )
         tA.paste();
   }

   public void showContext(MouseEvent e) {
      updatePopupContext();
      pop.show(e.getComponent(), e.getX(), e.getY());
   }

   public void updatePopupContext() {
      if (tA.getSelectedText() == null) {
         PMI_CUT.setEnabled(false);
         PMI_COPY.setEnabled(false);
      }
      else {
         PMI_CUT.setEnabled(true);
         PMI_COPY.setEnabled(true);
      }
   }

   public void displayHtmlSource(String urlName) {
      String s;
      StringBuffer buf = new StringBuffer();
      try {
         URL url = new URL(urlName);
         HttpURLConnection connection = (HttpURLConnection) url.openConnection();
         BufferedReader in = new BufferedReader(
            new InputStreamReader( connection.getInputStream() ) );
         while ((s = in.readLine()) != null)
            buf.append(s + "\n");
         tA.setText( buf.toString() );
      }
      catch(MalformedURLException e) {}
      catch(FileNotFoundException e) {}
      catch(IOException e) {}
   }

   public void err(String errorMsg) {
      JOptionPane.showMessageDialog(null, errorMsg,
            "Erreur", JOptionPane.ERROR_MESSAGE);
   }

   public static void main(String[] args) {
      TextEditor app = new TextEditor();
      app.setDefaultCloseOperation(EXIT_ON_CLOSE);
   }
}

Conclusion :


N'hésitez pas à laisser des commentaires ;-)

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Un problème que je me doit de résoudre, c'est qu'il ne gère pas les boutons dans les ///
pages qu'il affiche (il ne réagis pas au clique). Et évidement, vu qu'il n'y a aucun ///
script qui s'éxécute, certains sites s'affichent très mal. ///
////////////////////////////////////////////////////////////////////////////////////////////////////////////////

FasteX_

Codes Sources

A voir également

Ajouter un commentaire Commentaires
naivoh
Messages postés
9
Date d'inscription
vendredi 28 octobre 2011
Statut
Membre
Dernière intervention
30 novembre 2012

10 sept. 2012 à 17:49
Bjr!est ce quelqu'un peut donner un moyen pour connecter à un serveur à distance?urgent
FasteX_
Messages postés
44
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
29 février 2008

1 mai 2006 à 22:59
Non, n'ayant aucun interpréteur JavaScript, il se contente d'afficher le contenu HTML qu'il trouve. C'est un peu la raison du nom «Secure Web Explorer», car aucun code 'actif' ne s'éxécute. ;)
jugriepon
Messages postés
2
Date d'inscription
mercredi 15 février 2006
Statut
Membre
Dernière intervention
1 mai 2006

1 mai 2006 à 12:57
c'est bon je te remercie, j'ai regarde le code, j'ai justement enleve la ligne qui rajoutait http:/ et j'ai mis file:/. ca fonctionne.
Par contre, juste comme ca, est ce qu'il lit les javascripts ? j'ai en effet voulu lire une page html contenant des java-script et la ca a n peu cafouiller. En tout cas merci.
Merci
FasteX_
Messages postés
44
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
29 février 2008

28 avril 2006 à 21:29
Salut JUGRIEPON,

Je crois savoir ce qui t'arrives. Une condition dans mon code vérifie la présence de "http://" pour que l'on puisse simplement écrire une adresse de la forme "www.monsite.domaine". Ca doit être pour ca que tu n'arrive pas à lire des fichiers locaux. Par exemple, si tu écris "c:/page.html", le navigateur s'attend à trouver sur le net une page appelée "http://c:/page.html". La condition est dans la fonction lirePage(String urlName), tu peux la supprimer. J'espère que ça marchera, sinon je ne sais pas trop comment faire.
jugriepon
Messages postés
2
Date d'inscription
mercredi 15 février 2006
Statut
Membre
Dernière intervention
1 mai 2006

28 avril 2006 à 11:20
Est il possible un fichier html local? Par exemple j'essais de lire mon fichier page.html sur mon c:.
En url je donne : c:/page.html.
A chaque fois il me donne url invalide.
Comment faire ?
Afficher les 9 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.