Partage
  • Partager sur Facebook
  • Partager sur Twitter

Cours Java EE - Vos questions

    16 novembre 2014 à 15:30:44

    Bonjour à tous,

    Je suis à l'étape 6 du TP fil rouge et je bloque sur un truc depuis un moment: la création d'une commande en base de données ne fonctionne pas, alors que celle d'un client fonctionne parfaitement.

    Lors de la création d'une commande, j'ai une erreur 500: Le serveur a rencontré une erreur interne qui l'a empêché de satisfaire la requête.

    Voici le rapport d'erreur: 

    Grave: "Servlet.service()" pour la servlet CreationCommande a généré une exception

    java.lang.NullPointerException

    at com.gaetan.tp.forms.CommandeForm.creerCommande(CommandeForm.java:117)

    at com.gaetan.tp.servlets.CreationCommande.doPost(CreationCommande.java:40)

    at javax.servlet.http.HttpServlet.service(HttpServlet.java:644)

    at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)

    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)

    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

    at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)

    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

    at com.gaetan.tp.filters.PrechargementFilter.doFilter(PrechargementFilter.java:68)

    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)

    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)

    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)

    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)

    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)

    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)

    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)

    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:537)

    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1081)

    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658)

    at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)

    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1566)

    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1523)

    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

    at java.lang.Thread.run(Unknown Source)

    Et voici les fragments de code concernés:

    CreationCommande.java:

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
    		CommandeForm form = new CommandeForm(commandeDao, clientDao);
    		Commande commande = form.creerCommande(request); //ligne 40
    		request.setAttribute(ATTR_COMMANDE, commande);
    		request.setAttribute(ATTR_FORM, form);


    CommandeForm.java:

    if(erreurs.isEmpty()){
        resultat = "Commande créée avec succès !";
        commandeDao.creer(commande); //ligne 117
    }

    Méthode creer dans ma classe CommandeDaoImpl:

    public void creer(Commande commande) throws DAOException{
    		Connection connexion = null;
    		PreparedStatement preparedStatement = null;
    		ResultSet valeursAutoGenerees = null;
    		
    		try{
    			//recuperation d'une connexion depuis la factory
    			connexion = daoFactory.getConnection();
    			preparedStatement = initialisationRequetePreparee(connexion, SQL_INSERT, true, commande.getClient().getId(), 
    					new DateTime(commande.getDate().getMillis()),
    					commande.getMontant(), commande.getModeLivraison(), commande.getStatutLivraison(), commande.getModePaiement(), 
    					commande.getStatutPaiement());
    			int statut = preparedStatement.executeUpdate();
    			if(statut == 0){
    				throw new DAOException("Échec de la création de la commande, aucune ligne ajoutée dans la table");
    			}
    			valeursAutoGenerees = preparedStatement.getGeneratedKeys();
    			if ( valeursAutoGenerees.next() ) {
                    // Puis initialisation de la propriété id du bean Utilisateur avec sa valeur 
    				commande.setId( valeursAutoGenerees.getLong( 1 ) );
                } else {
                    throw new DAOException( "Échec de la création de la commande en base, aucun ID auto-généré retourné." );
                }
    		}
    		catch(SQLException e){
    			throw new DAOException(e);
    		}
    		finally{
    			fermeturesSilencieuses( valeursAutoGenerees, preparedStatement, connexion );
    		}
    	}

    J'ai bien vérifié la syntaxe de la requête, le nom des champs dans ma table etc... mais rien à faire, j'ai toujours la même erreur. Si quelqu'un a déjà rencontré ce problème ou est susceptible de m'aider, c'est avec plaisir :) Merci


    • Partager sur Facebook
    • Partager sur Twitter
      16 novembre 2014 à 16:55:31

      Bonjour,

      Je suis au chapitre Associer une vue à une servlet. 

      A l’exécution j'obtiens une erreur 404: message /test/WEB-INF/bonjour.jsp

      Voici mon code java:

      package com.test.servlets;

      import java.io.IOException;

      import java.io.PrintWriter;

      import javax.servlet.ServletException;

      import javax.servlet.annotation.WebServlet;

      import javax.servlet.http.HttpServlet;

      import javax.servlet.http.HttpServletRequest;

      import javax.servlet.http.HttpServletResponse;

      @WebServlet("/Test")

      public class Test extends HttpServlet {

          private static final long serialVersionUID = 1L;

          public Test() {

              super();

              // TODO Auto-generated constructor stub

          }

          protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

              this.getServletContext().getRequestDispatcher("/WEB-INF/bonjour.jsp").forward(request, response);

          }

          protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

              // TODO Auto-generated method stub

          }

      }

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        16 novembre 2014 à 17:39:27

        Maastok, donne nous le contenu de la ligne 117 de ta classe CommandeForm. Il y a un NullPointerException.
        Voilà typiquement le truc qu'il manque à ce cours... la compréhension des logs d'erreur.

        A priori c'est pas bien sorcier à corriger ;) 

        • Partager sur Facebook
        • Partager sur Twitter
          16 novembre 2014 à 18:25:59

          PhilippeTHEBAULT a écrit:

          Bonjour,

          Je suis au chapitre Associer une vue à une servlet. 

          A l’exécution j'obtiens une erreur 404: message /test/WEB-INF/bonjour.jsp

          La servlet semble bonne mais tu n'aurais pas du avoir ce message avec WEB-INF. Comment as tu démarré l'application? si tu as lancé le serveur depuis la  servlet (lorsque tu es dans la page de la servlet dans eclipse) alors tu aurais dû avoir l'url : /test/bonjour si tu as bien suivi le code du cours.

          Si tu as lancé le serveur depuis la page bonjour.jsp alors là tu as cette url qui ne marche pas car tout ce qui est dans la directory WEB-INF est invisible (les fichiers présents sont invisibles). Il faut donc supprimer WEB-INF et le .jsp et garder :test/bonjour. Cet url doit correspondre à ce que tu as dans le fichier web.xml : voir le chapitre1.:honte:



          -
          Edité par DARDOR 16 novembre 2014 à 18:28:07

          • Partager sur Facebook
          • Partager sur Twitter
            16 novembre 2014 à 18:43:11

            @Pappalourdo

            A la ligne 117 de ma classe CommandeForm j'appelle la méthode creer de ma classe CommandeDaoImpl, j'ai mis le code dans mon précédent post.

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              16 novembre 2014 à 19:19:51

              Dans CommandeForm tu fais appel au Dao qui n'est pas initialisé et qui vaut NULL.
              Comment l'injectes-tu ? 

              • Partager sur Facebook
              • Partager sur Twitter
                16 novembre 2014 à 19:42:46

                DARDOR a écrit:

                PhilippeTHEBAULT a écrit:

                Bonjour,

                Je suis au chapitre Associer une vue à une servlet. 

                A l’exécution j'obtiens une erreur 404: message /test/WEB-INF/bonjour.jsp

                La servlet semble bonne mais tu n'aurais pas du avoir ce message avec WEB-INF. Comment as tu démarré l'application? si tu as lancé le serveur depuis la  servlet (lorsque tu es dans la page de la servlet dans eclipse) alors tu aurais dû avoir l'url : /test/bonjour si tu as bien suivi le code du cours.

                Si tu as lancé le serveur depuis la page bonjour.jsp alors là tu as cette url qui ne marche pas car tout ce qui est dans la directory WEB-INF est invisible (les fichiers présents sont invisibles). Il faut donc supprimer WEB-INF et le .jsp et garder :test/bonjour. Cet url doit correspondre à ce que tu as dans le fichier web.xml : voir le chapitre1.:honte:



                -
                Edité par DARDOR il y a 21 minutes


                Je le lance bien depuis le servlet. Ma page est correcte http://localhost:8080/test/bonjour mais il recherche le jsp dans /test/WEB-INF !!
                • Partager sur Facebook
                • Partager sur Twitter
                  16 novembre 2014 à 20:10:37

                  @Pappalourdo

                  Je l'ai déclaré comme paramètre (private) de ma classe CommandeForm.

                  private CommandeDao commandeDao;

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    16 novembre 2014 à 20:26:24

                    Justement, il n'est pas initialisé. Il vaut donc NULL.

                    Il faut soit l'injecter (@Inject), soit l'instancier (new CommandeDaoImpl()). Je ne connais pas l'architecture de ton site, mais voilà les deux solutions qui s'offrent à toi.

                    • Partager sur Facebook
                    • Partager sur Twitter
                      16 novembre 2014 à 20:50:51

                      @pappalourdo

                      Justement, ce qui est étrange c'est que j'utilise exactement le même mode de fonctionnement pour créer des clients et ca fonctionne très bien :/

                      La seule chose qui change ici c'est que une commande prend en paramètre un Client, mais sinon c'est exactement la même chose.

                      • Partager sur Facebook
                      • Partager sur Twitter
                        16 novembre 2014 à 22:01:50

                        Bonjour,j'ai écrit un programme JAVA qui permet de chiffrer et déchiffrer des textes sur l'alphabet latin de 26 lettres de A à Z pour les systèmes cryptographiques suivants : 1- Chiffre de César. 2- Chiffre affine. 3- Chiffre de Vigenère. j'ai réussi de programmer le chiffrement et le déchiffrement de césar mais affine et Vigenère j'arrive plus a cause d'une plus petite erreur j'ai pas pu la corriger voici mon code: i import java.awt.BorderLayout; import java.awt.Container; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JTextField; import java.awt.TextArea; import javax.swing.ButtonGroup; import javax.swing.JTextPane; import javax.swing.JButton; import javax.swing.JRadioButton; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JComboBox; import javax.swing.DefaultComboBoxModel; public class securité extends JFrame { private JPanel contentPane; private JTextField textField; private JTextField textField_1; private JRadioButton Cesar; private JRadioButton affine; private JRadioButton Hill; private JRadioButton Vigenere; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { securité frame = new securité(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public securité() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 300); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); final JTextPane absolue = new JTextPane(); absolue.setBounds(10, 31, 211, 43); contentPane.add(absolue); textField = new JTextField(); textField.setBounds(10, 100, 211, 43); contentPane.add(textField); textField.setColumns(10); JButton btnNewButton = new JButton("chiffrer"); btnNewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { } }); btnNewButton.setBounds(50, 76, 89, 23); contentPane.add(btnNewButton); JButton btnNewButton_1 = new JButton("dechiffrer"); btnNewButton_1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { String N =textField.getText(); String j=""; int[]t= new int [N.length()]; for(int i=0;i<t.length t="" char="" c="(char)" j="j+c;" textfield_1.settext="" void="" actionperformed1="" arg0="" int="" a1="" b1="Integer.parseInt(b.getText());" string="" g="" s="textField.getText();" for="" i="1;i&lt;26;i++)" if="" l="S.charAt(i);" o="(char)" de="" vigener.................="" public="" actionperformed2="" des="" variables="" :="" message="" clef="" messagecrypte="" compteur="0;" final="" vigenereun="" vigeneredeux="" new="" message.length="" clef-="clef.charAt(i%clef.length());" while="" vegeneredeux="" pour="" obtenir="" la="" ligne="" utile="" au="" cryptage="" k="1;">'z') { vigenereDeux[k]=vigenereUn[0+j]; j++; } } j=vigenereUn.length; } //application du principe de vegenere : for (int i=0; i<26; i++) if(message.charAt(compteur)==vigenereUn[i]) { messageCrypte+=vigenereDeux[i]; i=vigenereUn.length; } compteur++; } textField.setText(); } }); btnNewButton_1.setBounds(50, 154, 89, 23); contentPane.add(btnNewButton_1); JLabel lblTexteOriginal = new JLabel("Texte original"); lblTexteOriginal.setBounds(10, 11, 113, 14); contentPane.add(lblTexteOriginal); textField_1 = new JTextField(); textField_1.setBounds(10, 188, 211, 49); contentPane.add(textField_1); textField_1.setColumns(10); JComboBox comboBox = new JComboBox(); comboBox.setModel(new DefaultComboBoxModel(new String[] {"1", "3", "5", "7", "9", "15", "17", "19", "21", "23", "25"})); comboBox.setBounds(290, 212, 38, 20); contentPane.add(comboBox); JComboBox comboBox_1 = new JComboBox(); comboBox_1.setModel(new DefaultComboBoxModel(new String[] {"1", "3", "5", "7", "9", "15", "17", "21", "23", "25"})); comboBox_1.setBounds(369, 212, 38, 20); contentPane.add(comboBox_1); JLabel lblA = new JLabel("a"); lblA.setBounds(258, 215, 21, 14); contentPane.add(lblA); JLabel lblB = new JLabel("b"); lblB.setBounds(338, 215, 21, 14); contentPane.add(lblB); // les botton ButtonGroup groupe=new ButtonGroup(); Container contenu =getContentPane(); Cesar =new JRadioButton("Cesar") ; Cesar.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { String s=absolue.getText(); String m=""; int[]t=new int [s.length()]; for (int i=0;i<t.length t="" char="" c="(char)" m="m+c;" textfield.settext="" cesar.setbounds="" groupe.add="" contenu.add="" affine..................="" buttongroup="" groupe1="new" container="" contenu1="getContentPane();" affine="new" jradiobutton="" affine.addactionlistener="" actionlistener="" public="" void="" actionperformed="" arg0="" string="" s="absolue.getText();" int="" a1="" b1="Integer.parseInt(b.getcomboBox());" for="" i="0;i&lt;t.length;i++){" affine.setbounds="" groupe1.add="" contenu1.add="" vigenere.......................="" vigenere="new" vigenere.addactionlistener="" des="" variables="" :="" message="" clef="" messagecrypte="" compteur="0;" final="" vigenereun="" vigeneredeux="" new="" if="" message.length="" while="" de="" vegeneredeux="" pour="" obtenir="" la="" ligne="" utile="" au="" cryptage="" j="0;" k="1;">'z') { vigenereDeux[k]=vigenereUn[0+j]; j++; } } j=vigenereUn.length; } //application du principe de vegenere : for (int i=0; i<26; i++) if(message.charAt(compteur)==vigenereUn[i]) { messageCrypte+=vigenereDeux[i]; i=vigenereUn.length; } compteur++; } textField.setText(); //g pas pu recuperer le texte } } } ); Vigenere.setBounds(306, 108, 79, 23); groupe1.add(Vigenere) ; contenu1.add(Vigenere) ; //................................... Hill=new JRadioButton("Hill"); Hill.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { } }); Hill.setBounds(238, 108, 55, 23); groupe1.add(Hill); contenu1.add(Hill); //............................. } } Mercii d'avance je souhaite que vous pouvez m'aidez car je suis débutante en java éclipse et surtout dans l'implémentation dans les interfaces graphiques</t.length></t.length>
                        • Partager sur Facebook
                        • Partager sur Twitter
                          16 novembre 2014 à 22:10:00

                          Bonjour,j'ai écrit un programme JAVA qui permet de chiffrer et déchiffrer des textes sur l'alphabet 
                          latin de 26 lettres de A à Z pour les systèmes 
                          cryptographiques suivants : 
                          1- Chiffre de César. 
                          2- Chiffre affine. 
                          3- Chiffre de Vigenère. 
                          j'ai réussi de programmer le chiffrement et le déchiffrement de césar mais affine et Vigenère j'arrive plus a cause d'une plus petite erreur j'ai pas pu la corriger voici mon code: 

                          import java.awt.BorderLayout; 
                          import java.awt.Container; 
                          import java.awt.EventQueue; 
                          
                          import javax.swing.JFrame; 
                          import javax.swing.JPanel; 
                          import javax.swing.border.EmptyBorder; 
                          import javax.swing.JTextField; 
                          
                          import java.awt.TextArea; 
                          
                          import javax.swing.ButtonGroup; 
                          import javax.swing.JTextPane; 
                          import javax.swing.JButton; 
                          import javax.swing.JRadioButton; 
                          
                          import java.awt.event.ActionListener; 
                          import java.awt.event.ActionEvent; 
                          
                          import javax.swing.JLabel; 
                          import javax.swing.JList; 
                          import javax.swing.JComboBox; 
                          import javax.swing.DefaultComboBoxModel; 
                          
                          
                          public class securité extends JFrame { 
                          
                          private JPanel contentPane; 
                          private JTextField textField; 
                          private JTextField textField_1; 
                          private JRadioButton Cesar; 
                          private JRadioButton affine; 
                          private JRadioButton Hill; 
                          private JRadioButton Vigenere; 
                          
                          /** 
                          * Launch the application. 
                          */ 
                          public static void main(String[] args) { 
                          EventQueue.invokeLater(new Runnable() { 
                          public void run() { 
                          try { 
                          securité frame = new securité(); 
                          frame.setVisible(true); 
                          } catch (Exception e) { 
                          e.printStackTrace(); 
                          } 
                          } 
                          }); 
                          } 
                          
                          /** 
                          * Create the frame. 
                          */ 
                          public securité() { 
                          setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
                          setBounds(100, 100, 450, 300); 
                          contentPane = new JPanel(); 
                          contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
                          setContentPane(contentPane); 
                          contentPane.setLayout(null); 
                          
                          final JTextPane absolue = new JTextPane(); 
                          absolue.setBounds(10, 31, 211, 43); 
                          contentPane.add(absolue); 
                          
                          textField = new JTextField(); 
                          textField.setBounds(10, 100, 211, 43); 
                          contentPane.add(textField); 
                          textField.setColumns(10); 
                          
                          JButton btnNewButton = new JButton("chiffrer"); 
                          btnNewButton.addActionListener(new ActionListener() { 
                          public void actionPerformed(ActionEvent arg0) { 
                          } 
                          }); 
                          btnNewButton.setBounds(50, 76, 89, 23); 
                          contentPane.add(btnNewButton); 
                          
                          JButton btnNewButton_1 = new JButton("dechiffrer"); 
                          btnNewButton_1.addActionListener(new ActionListener() { 
                          public void actionPerformed(ActionEvent arg0) { 
                          String N =textField.getText(); 
                          String j=""; 
                          int[]t= new int [N.length()]; 
                          for(int i=0;i<t.length;i++){ 
                          t[i]=((int)N.charAt(i)+23)-97; 
                          t[i]=t[i]%26; 
                          t[i]=t[i]+97; 
                          char c=(char) t[i]; 
                          j=j+c; 
                          
                          } textField_1.setText(j); 
                          
                          }public void actionPerformed1(ActionEvent arg0) { 
                          int a1,b1,n = 0; 
                          a1=Integer.parseInt(a.getText()); 
                          b1=Integer.parseInt(b.getText()); 
                          String g=""; 
                          String S=textField.getText();	
                          int[] t=new int [S.length()]; 
                          for (int i=1;i<26;i++) 
                          { 
                          if ((a1*i)%26==1) 
                          
                          {n=i; 
                          i=26; 
                          } 
                          } 
                          
                          for(int i=0;i<t.length;i++){ 
                          char L=S.charAt(i); 
                          t[i]=(int) L; 
                          t[i]-=97; 
                          
                          t[i]=n*(t[i]+26-b1)%26; 
                          
                          t[i]=t[i]%26; 
                          t[i]=t[i]+97; 
                          char o=(char) t[i]; 
                          g=g+o; 
                          
                          } 
                          textField_1.setText(g); 
                          } 
                          //........................dechiffrement de vigener................. 
                          public void actionPerformed2(ActionEvent arg0) { 
                          //Creation des variables : 
                          String message; 
                          String clef; 
                          String messageCrypte = ""; 
                          int compteur = 0; 
                          final char vigenereUn[] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}; 
                          char vigenereDeux[] = new char[26]; 
                          
                          
                          
                          if(clef.length()< message.length()) 
                          for(int i=clef.length(); i<message.length(); i++) 
                          clef-=clef.charAt(i%clef.length()); 
                          while(compteur<message.length()) 
                          { 
                          //Réorganisation de vegenereDeux pour obtenir la ligne utile au cryptage : 
                          for(int i=0; i<26; i++) 
                          if(clef.charAt(compteur)==vigenereUn[i]) 
                          { 
                          vigenereDeux[0]=vigenereUn[i]; 
                          int j=0; 
                          
                          for(int k=1; k<26; k++) 
                          { 
                          vigenereDeux[k]=(char)(vigenereDeux[0]+k); 
                          
                          if(vigenereDeux[k]>'z') 
                          { 
                          vigenereDeux[k]=vigenereUn[0+j]; 
                          j++; 
                          } 
                          } 
                          
                          j=vigenereUn.length; 
                          } 
                          
                          //application du principe de vegenere : 
                          for (int i=0; i<26; i++) 
                          if(message.charAt(compteur)==vigenereUn[i]) 
                          { 
                          messageCrypte+=vigenereDeux[i]; 
                          i=vigenereUn.length; 
                          } 
                          
                          compteur++; 
                          
                          } 
                          textField.setText(); 
                          
                          
                          } 
                          
                          }); 
                          
                          
                          btnNewButton_1.setBounds(50, 154, 89, 23); 
                          contentPane.add(btnNewButton_1); 
                          
                          
                          
                          
                          JLabel lblTexteOriginal = new JLabel("Texte original"); 
                          lblTexteOriginal.setBounds(10, 11, 113, 14); 
                          contentPane.add(lblTexteOriginal); 
                          
                          textField_1 = new JTextField(); 
                          textField_1.setBounds(10, 188, 211, 49); 
                          contentPane.add(textField_1); 
                          textField_1.setColumns(10); 
                          
                          JComboBox comboBox = new JComboBox(); 
                          comboBox.setModel(new DefaultComboBoxModel(new String[] {"1", "3", "5", "7", "9", "15", "17", "19", "21", "23", "25"})); 
                          comboBox.setBounds(290, 212, 38, 20); 
                          contentPane.add(comboBox); 
                          
                          JComboBox comboBox_1 = new JComboBox(); 
                          comboBox_1.setModel(new DefaultComboBoxModel(new String[] {"1", "3", "5", "7", "9", "15", "17", "21", "23", "25"})); 
                          comboBox_1.setBounds(369, 212, 38, 20); 
                          contentPane.add(comboBox_1); 
                          
                          JLabel lblA = new JLabel("a"); 
                          lblA.setBounds(258, 215, 21, 14); 
                          contentPane.add(lblA); 
                          
                          JLabel lblB = new JLabel("b"); 
                          lblB.setBounds(338, 215, 21, 14); 
                          contentPane.add(lblB); 
                          // les botton 
                          
                          ButtonGroup groupe=new ButtonGroup(); 
                          Container contenu =getContentPane(); 
                          Cesar =new JRadioButton("Cesar") ; 
                          Cesar.addActionListener(new ActionListener() { 
                          public void actionPerformed(ActionEvent arg0) { 
                          
                          String s=absolue.getText(); 
                          String m=""; 
                          int[]t=new int [s.length()]; 
                          for (int i=0;i<t.length;i++){ 
                          t[i]=((int)s.charAt(i)+3)-97; 
                          t[i]=t[i]%26; 
                          t[i]=t[i]+97; 
                          char c =(char) t[i]; 
                          m=m+c; 
                          } 
                          textField.setText(m); 
                          } 
                          }); 
                          //........................ 
                          Cesar.setBounds(238, 75, 66, 23); 
                          groupe.add(Cesar) ; 
                          contenu.add(Cesar) ; 
                          //...............................CHiffrement Affine.................. 
                          ButtonGroup groupe1=new ButtonGroup(); 
                          Container contenu1 =getContentPane(); 
                          affine =new JRadioButton("Affine") ; 
                          affine.addActionListener(new ActionListener() { 
                          public void actionPerformed(ActionEvent arg0) { 
                          String s=absolue.getText(); 
                          int a1,b1; 
                          String m=""; 
                          a1=Integer.parseInt(a.getcomboBox()); 
                          b1=Integer.parseInt(b.getcomboBox()); 
                          int[]t=new int [s.length()]; 
                          for (int i=0;i<t.length;i++){ 
                          t[i]=(((int)s.charAt(i)* a1)+b1)-97; 
                          t[i]=t[i]%26; 
                          t[i]=t[i]+97; 
                          char c =(char) t[i]; 
                          m=m+c; 
                          } 
                          textField.setText(m); 
                          
                          
                          } 
                          }); 
                          affine.setBounds(306, 75, 79, 23); 
                          groupe1.add(affine) ; 
                          contenu1.add(affine) ; 
                          //..................................chiffrement vigenere....................... 
                          Vigenere =new JRadioButton("Vigenère") ; 
                          Vigenere.addActionListener(new ActionListener() { 
                          public void actionPerformed(ActionEvent arg0) { 
                          
                          { 
                          //Creation des variables : 
                          String message; 
                          String clef; 
                          String messageCrypte = ""; 
                          int compteur = 0; 
                          final char vigenereUn[] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}; 
                          char vigenereDeux[] = new char[26]; 
                          
                          
                          
                          if(clef.length()< message.length()) 
                          for(int i=clef.length(); i<message.length(); i++) 
                          clef+=clef.charAt(i%clef.length()); 
                          while(compteur<message.length()) 
                          { 
                          //Réorganisation de vegenereDeux pour obtenir la ligne utile au cryptage : 
                          for(int i=0; i<26; i++) 
                          if(clef.charAt(compteur)==vigenereUn[i]) 
                          { 
                          vigenereDeux[0]=vigenereUn[i]; 
                          int j=0; 
                          
                          for(int k=1; k<26; k++) 
                          { 
                          vigenereDeux[k]=(char)(vigenereDeux[0]+k); 
                          
                          if(vigenereDeux[k]>'z') 
                          { 
                          vigenereDeux[k]=vigenereUn[0+j]; 
                          j++; 
                          } 
                          } 
                          
                          j=vigenereUn.length; 
                          } 
                          
                          //application du principe de vegenere : 
                          for (int i=0; i<26; i++) 
                          if(message.charAt(compteur)==vigenereUn[i]) 
                          { 
                          messageCrypte+=vigenereDeux[i]; 
                          i=vigenereUn.length; 
                          } 
                          
                          compteur++; 
                          
                          } 
                          textField.setText(); 
                          } 
                          
                          } 
                          } 
                          
                          ); 
                          Vigenere.setBounds(306, 108, 79, 23); 
                          groupe1.add(Vigenere) ; 
                          contenu1.add(Vigenere) ; 
                          //................................... 
                          Hill=new JRadioButton("Hill"); 
                          Hill.addActionListener(new ActionListener() { 
                          public void actionPerformed(ActionEvent arg0) { 
                          
                          } 
                          }); 
                          Hill.setBounds(238, 108, 55, 23); 
                          groupe1.add(Hill); 
                          contenu1.add(Hill); 
                          //............................. 
                          } 
                          } 

                          Mercii d'avance je souhaite que vous pouvez m'aidez car je suis débutante en java éclipse et surtout dans l'implémentation dans les interfaces graphiques

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            16 novembre 2014 à 23:41:32

                            Bonjour, je t'invite à lire cet article : http://en.wikipedia.org/wiki/Single_responsibility_principle
                            C'est difficile de mettre le nez dans ton programme et surtout ça ne donne pas très envie de chercher à comprendre le code. 

                            • Partager sur Facebook
                            • Partager sur Twitter
                              17 novembre 2014 à 9:35:49

                              @Maastok : crée un sujet à part entière, ça sera plus simple pour t'aider.

                              Au passage, ce post-it "global" est vraiment un échec : son objectif c'est de centraliser les problèmes d'utilisation liés au cours vidéo et à son format, et clairement pas d'y poster tous les problèmes liés aux erreurs de code de chaque étudiant. Où est la modération ? :/

                              • Partager sur Facebook
                              • Partager sur Twitter
                                17 novembre 2014 à 16:45:45

                                MacDev1 a écrit:

                                Bonjour,

                                j'ai des difficultés à faire marcher mon servelet /bonjour. J'ai vérifier partout il n'y a pas d'erreur/ Mais pourtant ça m'affiche:

                                "erreur d'instanciation de la classe java (com.mycourse.Test)."

                                Pouvez-vous me dire quels peuvent avoir été les problèmes?

                                Sorry, j'ai trouvé l'erreur et j'ai pu corriger. Le fichier web.xml manquait une reference.

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  18 novembre 2014 à 10:54:04

                                  bonjour coyote,

                                  j'ai suivis parfaitement le cours "créez votre application web en java EE" et tous fonctionnais parfaitement jusqu’à ce que j'arrive a l’étape 8 où il est question de refaire le même projet en jsf. j'ai fais le formulaire d'enregistrement des client qui marche bien aussi. Mais je suis butté au niveau de la création de la page d'enregistrement des commande que j'ai nommé "creerCommande.xhtml" cette dernière doit contenir des bouton radio pour la sélection d'un nouveau client qui ouvre le formulaire d'enregistrement des clients ou la sélection d'un ancien client qui nous affichera un menu déroulant contenant les client existant en base. le problème de situe au niveau de la fonction java-script qui doit gérer le "masquage" ou l'affichage du formulaire d'enregistrement du nouveau client en fonction du bouton radio sélectionner que . lorsque j’insère ladite fonction java-script, et que je compile le projet  la page s'affiche avec le formulaire d'enregistrement d'un nouveau client sans les bouton radios et encore moins le menu déroulant.

                                  merci d'avance.

                                  ci joint le contenu de mon fichier creerCommande.xhtml

                                  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
                                  <html xmlns="http://www.w3.org/1999/xhtml"
                                  	xmlns:f="http://java.sun.com/jsf/core"
                                  	xmlns:h="http://java.sun.com/jsf/html"
                                  	xmlns:ui="http://java.sun.com/jsf/facelets">
                                  
                                  <h:head>
                                  <script type="text/javascript"  >
                                  	
                                          	jQuery(document).ready(function(){
                                          		/* 1 - Au lancement de la page, on cache le bloc d'éléments du formulaire correspondant aux clients existants */
                                          		$("div#ancienClient").hide();
                                          		/* 2 - Au clic sur un des deux boutons radio "choixNouveauClient", on affiche le bloc d'éléments correspondant (nouveau ou ancien client) */
                                                  jQuery('input[name=choixNouveauClient]:radio').click(function(){
                                                  	$("div#nouveauClient").hide();
                                                  	$("div#ancienClient").hide();
                                                      var divId = jQuery(this).val();
                                                      $("div#"+divId).show();
                                                  });
                                              });
                                          	
                                          </script>
                                  	<meta charset="utf-8" />
                                  	<title>Création d'une commande</title>
                                  	<h:outputStylesheet library="default" name="css/form.css" />
                                  
                                  	<f:loadBundle basename="com.sdzee.bundle.messages" var="msg" />
                                  	<f:loadBundle basename="com.sdzee.bundle.menu" var="msg1" />
                                  
                                  
                                  
                                  
                                  </h:head>
                                  <body>
                                  	<fieldset>
                                  		<legend>Menu</legend>
                                  		<ui:insert name="menu">
                                  			<ui:include src="inc/menu.xhtml" />
                                  		</ui:insert>
                                  	</fieldset>
                                  	<div>
                                  		<h:form enctype="multipart/form-data">
                                  			<fieldset>
                                  				<legend>Informations client</legend>
                                  				<!-- Si et seulement si la Map des clients en session n'est pas vide,
                                  			alors on propose un choix à l'utilisateur -->
                                  				<ui:repeat rendered="#{sessionScope.clients!=null }">
                                  					<h:outputLabel for="choixNouveauClient">Nouveau client ? <span
                                  							class="requis">*</span>
                                  					</h:outputLabel>
                                  					<h:selectOneRadio id="choixNouveauClient" required="true"
                                  						value="choixNouveauClient">
                                  						<f:selectItem id="nouveauClient" itemLabel="Yes" itemValue="nouveauClient" />
                                  						<f:selectItem id="ancienClient" itemLabel="No" itemValue="ancienClient" />
                                  					</h:selectOneRadio>
                                  
                                  					<br />
                                  					<br />
                                  				</ui:repeat>
                                  
                                  
                                  				<!--c:set var="client" value="#{commandeBean.commande.client }" scope="request" /-->
                                  				<div id="nouveauClient">
                                  					<ui:include src="inc/inc_client_form.xhtml" />
                                  				</div>
                                  
                                  				<!-- Si et seulement si la Map des clients en session n'est pas
                                  				vide, alors on crée la liste déroulante -->
                                  				<ui:repeat rendered="#{sessionScope.clients!=null }"
                                  					value="#{clientBean.clients}">
                                  					<div id="ancienClient">
                                  						<h:selectOneMenu name="listeClients" id="listeClients"
                                  							rendered="true" value="#{clientBean.clients}">
                                  							<f:selectItem itemLabel="Choisissez un client..."
                                  								noSelectionOption="true" />
                                  							<!-- Boucle sur la map des clients -->
                                  							<ui:repeat value="#{ sessionScope.clients }" var="mapClients">
                                  								<f:selectItems value="#{ clientBean.clients }" var="item"
                                  									itemLabel="#{item.title}" />
                                  							</ui:repeat>
                                  						</h:selectOneMenu>
                                  					</div>
                                  				</ui:repeat>
                                  			</fieldset>
                                  			<fieldset>
                                  				<legend>Informations commande</legend>
                                  
                                  				<h:outputLabel for="dateCommande">Date <span
                                  						class="requis">*</span>
                                  				</h:outputLabel>
                                  				<h:inputText id="dateCommande" name="dateCommande"
                                  					value="#{commandeBean.commande.date}" size="30" maxlength="30"
                                  					disabled="true">
                                  					<f:convertDateTime pattern="dd/MM/yyyy HH:mm:ss" />
                                  				</h:inputText>
                                  				<h:message id="dateCommandeMessage" for="dateCommande"
                                  					errorClass="erreur" />
                                  				<!--span class="erreur">#{form.erreurs['dateCommande']}</span-->
                                  				<br />
                                  
                                  				<h:outputLabel for="montantCommande">Montant <span
                                  						class="requis">*</span>
                                  				</h:outputLabel>
                                  				<h:inputText for="montantCommande" id="montantCommande"
                                  					name="montantCommande" value="#{commandeBean.commande.montant}"
                                  					size="30" maxlength="30">
                                  					<f:ajax event="blur" render="montantCommandeMessage" />
                                  				</h:inputText>
                                  				<h:message id="montantCommandeMessage" for="montantCommande"
                                  					errorClass="erreur" />
                                  				<!--span class="erreur">#{form.erreurs['montantCommande']}</span-->
                                  				<br />
                                  
                                  				<h:outputLabel for="modePaiementCommande">Mode de paiement <span
                                  						class="requis">*</span>
                                  				</h:outputLabel>
                                  				<h:inputText for="modePaiementCommande" id="modePaiementCommande"
                                  					name="modePaiementCommande"
                                  					value="#{commandeBean.commande.modePaiement}" size="30"
                                  					maxlength="30">
                                  					<f:ajax event="blur" render="modePaiementCommandeMessage" />
                                  					<!--span class="erreur">${form.erreurs['modePaiementCommande']}</span-->
                                  				</h:inputText>
                                  				<h:message id="modePaiementCommandeMessage"
                                  					for="modePaiementCommande" errorClass="erreur" />
                                  
                                  				<br />
                                  
                                  				<h:outputLabel for="statutPaiementCommande">Statut du
                                  					paiement</h:outputLabel>
                                  
                                  				<h:inputText id="statutPaiementCommande"
                                  					for="statutPaiementCommande"
                                  					value="#{commandeBean.commande.statutPaiement}" size="30"
                                  					maxlength="30">
                                  
                                  					<f:ajax event="blur" render="statutPaiementCommandeMessage" />
                                  				</h:inputText>
                                  				<h:message id="statutPaiementCommandeMessage"
                                  					for="statutPaiementCommande" errorClass="erreur" />
                                  				<br />
                                  
                                  				<h:outputLabel for="modeLivraisonCommande">Mode de livraison <span
                                  						class="requis">*</span>
                                  				</h:outputLabel>
                                  				<h:inputText id="modeLivraisonCommande" for="modeLivraisonCommande"
                                  					value="#{commandeBean.commande.modeLivraison}" size="30"
                                  					maxlength="30">
                                  					<!--span class="erreur">${form.erreurs['modeLivraisonCommande']}</span-->
                                  					<f:ajax event="blur" render="modeLivraisonCommandeMessage" />
                                  				</h:inputText>
                                  				<h:message id="modeLivraisonCommandeMessage"
                                  					for="modeLivraisonCommande" errorClass="erreur" />
                                  				<br />
                                  
                                  				<h:outputLabel for="statutLivraisonCommande">Statut de la livraison</h:outputLabel>
                                  				<h:inputText id="statutLivraisonCommande"
                                  					for="statutLivraisonCommande"
                                  					value="#{commandeBean.commande.statutLivraison}" size="30"
                                  					maxlength="30">
                                  					<f:ajax event="blur" render="statutLivraisonCommandeMessage" />
                                  
                                  					<!--span class="erreur">${form.erreurs['statutLivraisonCommande']}</span-->
                                  				</h:inputText>
                                  				<h:message id="statutLivraisonCommandeMessage"
                                  					for="statutLivraisonCommande" errorClass="erreur" />
                                  				<br />
                                  
                                  				<h:messages globalOnly="true" infoClass="succes" />
                                  			</fieldset>
                                  
                                  			<h:commandButton id="OK" value="#{msg['valider.OK']}"
                                  				action="#{commandeBean.inscrire}" styleClass="sansLabel">
                                  				<f:ajax execute="@form" render="@form" />
                                  			</h:commandButton>
                                  			<h:commandButton type="reset" value="#{msg['reset.reset']}"
                                  				id="reset" />
                                  
                                  			<h:messages globalOnly="true" infoClass="succes" />
                                  			<br />
                                  		</h:form>
                                  	</div>
                                  
                                  
                                  
                                  
                                  
                                  
                                  
                                  
                                  	<ui:define name="creerCommande">
                                  		<h:outputScript library="default" name="js/jquery.js"  />
                                  
                                   
                                  		
                                  
                                  
                                  	</ui:define>
                                  
                                  </body>
                                  
                                  
                                  
                                  
                                  
                                  </html>



                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    18 novembre 2014 à 13:26:10

                                    Tu as bien inclus jquery dans ton projet ? Vérifie qu'il est bien chargé en regardant la source HTML générée, depuis ton navigateur via un clic doirt > afficher la source, puis en allant voir la tête du lien présent tout en bas du code de la page.
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      18 novembre 2014 à 14:55:28

                                      en bas du code de la source HTML générée j'ai le code  suivant:
                                      "<script type="text/javascript" src="/pro_jsf1/javax.faces.resource/js/jquery.js.xhtml?ln=default"></script>" 
                                      qui me renvoi ouvre directement le fichier jquery.js quand je clique dessus.
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        18 novembre 2014 à 15:59:00

                                        Ok. Dans ce cas, vérifie également que les id de tes éléments HTML sont bien ceux qui sont adressés par le petit script JS en haut de ta page (#nouveauClient, #ancienClient, etc.)
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          18 novembre 2014 à 17:30:59

                                          je suis largué. mes "ids" correspondent parfaitement avec les appels que j'ai faite dans le code java-script mais ça marche pas toujours

                                          -
                                          Edité par duplexT 18 novembre 2014 à 17:32:55

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            19 novembre 2014 à 11:15:43

                                            je crois que je comprend d’où vient le problème même si j'ai pas toujours la solution

                                            puisque c'est un TP qui a déjà été fais en jsp que je suis en train de refaire en jsf. ET a cet endroit en jsp vous avez utilisé la balise c:if pour gérer la liste déroulante et le formulaire en fontion du choix sur les boutons radios. je voulais savoir avec quel balise refaire les "c:if" en jsf pour avoir le même résultat qu'en jsp

                                            merci d'avance.

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              19 novembre 2014 à 12:47:03

                                              Bonjour,

                                              Ma note de l'exercice de la calculatrice (Java EE) est toujours indisponible (depuis avant hier)  bien que mon exercice soit corrigé par 3 élèves.

                                              La première condition, 0/0 exercices notés, qui devrait donc être remplie reste écrite en rouge.

                                              Suis je obligé de noter d'autres élèves pour avoir ma note? Ce n'est pas que je ne veuille pas, mais juste que je ne suis pas très à l'aise avec la responsabilité de noter d'autres élèves. Je le ferai si il le faut.

                                              Est il aussi possible d'avoir un corrigé de l'exercice?

                                              Merci à vous

                                              -
                                              Edité par Broccoli 20 novembre 2014 à 23:57:25

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                19 novembre 2014 à 20:19:36

                                                Bonjour,

                                                Je suis rendue au chapitre "ASSOCIER UNE VUE À UNE SERVLET". Sauf qu'il ne reconnait pas PrintWriter out comme un type. Lorsque je lance la page, il m'indique "HTTP Status 500 - Servlet execution threw an exception" - "PrintWriter cannot be resolved to a type"

                                                Comment puis-je procéder?
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                Katy
                                                Anonyme
                                                  19 novembre 2014 à 23:32:47

                                                  L'import de PrintWinter n'est pas présent en haut du fichier jsp.

                                                  Tu places ton curseur juste après PrintWinter dans ta jsp puis tu fais ctrl+espace.
                                                  Sinon tu fais ctrl+shift+o en mettant d'abord le focus dans la jsp. 

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    20 novembre 2014 à 13:08:11

                                                    PrintWriter n'est pas dans la JSP, il est présent dans la servlet.

                                                    Il suffit de mettre en place une action d'imports automatique lors de la sauvegarde d'un fichier dans Eclipse, et tout roule (cf. le cours au format livre, lien dans ma signature).

                                                    -
                                                    Edité par Coyote 20 novembre 2014 à 13:15:06

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      22 novembre 2014 à 10:09:26

                                                      Bonjour à tous,

                                                      Je viens de découvrir les MOOC sur JavaEE (je cherche une autoformation sur le sujet pour découvrir).

                                                      Par contre, je n'arrive pas à trouver des informations sur ce que signifie les niveaux "moyen" ou "difficile" ? 

                                                      Pouvez-vous me donner une indication sur la quantité (en heure par semaine) de travail nécessaire pour suivre le cours http://fr.openclassrooms.com/informatique/cours/creez-votre-application-web-avec-java-ee ou http://openclassrooms.com/courses/developpez-des-sites-web-avec-java-ee ?

                                                      Ou un lien vers une page qui donne des précisions sur ces notions ? Parce que "moyen" ou "difficile", j'avoue que sans référentiel ...

                                                      Merci :)

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        22 novembre 2014 à 23:20:21

                                                        Bonjour

                                                        Je suis actuellement le cours Developpez des sites web avec java EE.

                                                        Il est très interressant.

                                                        Par contre s'agissant de l'exercice de la calculatrice et de sa notation je constate que je n'ai pu corriger à peu prés correctement qu'1 exercice sur les 3 que l'on m'a demandé de corriger.

                                                        Et encore il a fallu d'abord systématiquement que je modifie l'accès aux librairie de JRE et du server Tomcat et ensuite que je modifie le l'url du servelt mapping.

                                                        Et lorsque malgré tout cela ne démarrait pas, je pense que la cause en était ma configuration d'Eclipse et pas seulement des erreurs de code.

                                                        Cela se confirme quand je regarde les commentaires de ceux qui m'ont corrigés : 2 correcteurs du 3 n'ont pas réussi à démarrer mon site (or ce site démarre très bien et fonctionne sous mon eclipse, ainsi que sur celui du 3e correcteur). C'est dommage.

                                                        N'y a t-il pas une procédure à respecter pour que les projets à corriger fonctionnent indépendamment des configurations d'eclipse (hors le path des librairies) ? 

                                                        Merci pour votre réponse.

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                        Anonyme
                                                          23 novembre 2014 à 8:24:02

                                                          La procédure serait de fournir un .war et les sources dans un autre fichier archivé.

                                                          Il n'est pas normal de fournir dans les sources un fichier .classpath, .project et le répertoire .settings... qui correspondent à de la configuration d'IDE. Peut-être que nous n'utilisons pas tous la même version d'eclipse, peut-être n'avons-nous pas tous les mêmes plugins installés, peut-être n'avons-nous pas les mêmes tomcat (moi par exemple j'ai un tomcat 7 et JDK7 sur mon poste) voire peut-être que certains utilisent autre chose qu'eclipse !

                                                          En effet, l'accès au PATH de la JRE dépend d'où l'a installée le développeur sur son poste de travail, donc c'est problématique si le correcteur est un novice qui ne sait pas configurer le buildpath pour régler cela et pouvoir compiler en local.

                                                          L'application doit pouvoir être déployée sur n'importe quel serveur d'application J2EE, et pour ça il faut une application compilée dès le début.
                                                          Concernant les problèmes d'url, c'est une erreur de développeur. Il ne faut pas lier l'url au contexte applicatif et utiliser des chemins relatifs, ou bien calculer l'url dynamiquement en se servant du pathInfo des HttpServletRequest.

                                                          Tu peux très bien configurer un tomcat de DEV sur localhost:8080/nomapplication/ et un tomcat de PROD simplement sur localhost:8888. Dans les deux cas les url de la page nomdusite/Calculatrice doivent être accessibles.

                                                          -
                                                          Edité par Anonyme 23 novembre 2014 à 8:31:14

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            23 novembre 2014 à 15:39:45

                                                            Bonjour,

                                                            Je ne suis pas d'accord avec le corrigé du chapitre 4 "Développer une application web" sur la question n°9. Peut-on écrire un cookie sur l'ordinateur du visiteur depuis une page JSP ?

                                                            Etant donné que l'on peut écrire du code java dans une jsp, on peut créer un cookie dans la jsp de la même manière que dans la servlet, la preuve :

                                                            <%

                                                            Cookie cookie = new Cookie("prenom","mathieu");

                                                            response.addCookie(cookie);

                                                            %>

                                                            Après que cela soit recommandé ou pas, c'est une autre question, mais rien ne l'empêche.
                                                            Cordialement.
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                            L'erreur est humaine, pour faire une grosse bêtise, il faut un ordinateur.
                                                              24 novembre 2014 à 2:06:15

                                                              bon jour


                                                              je cherche pourquoi il affiche le message d'erreur :

                                                              Etat HTTP 404 - /test/servlet/com.octest.servelet.Test

                                                              type Rapport d''état

                                                              message /test/servlet/com.octest.servelet.Test

                                                              description La ressource demandée n''est pas disponible.


                                                              Apache Tomcat/8.0.14

                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              Cours Java EE - Vos questions

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                              • Editeur
                                                              • Markdown