Partage
  • Partager sur Facebook
  • Partager sur Twitter

Cours Java EE - Vos questions

    15 décembre 2014 à 7:47:30

    acemicka a écrit:

    Oui en MVC un tu n'as qu'un contrôleur mais là tu appel la JSP soit directement la vue, certes derrière un contrôleur mais une partie du contrôleur est donné à la vue aux travers de la JSP.

    D’ailleurs les JSP ne sont pas dans web-inf tu peux les appeler (toutes) hors contrôleur :

    Qu'est ce que c'est ce boulot....?Du grand n'importe quoi.

    .

    • Partager sur Facebook
    • Partager sur Twitter
      15 décembre 2014 à 14:08:14

      Qu'est ce que c'est ce boulot....?Du grand n'importe quoi.

      J'étais totalement d'accord, et je disais la même chose !!!! au début...

      Maintenant je commence à changer d'avis et à chercher d'autre model que le MVC aussi simple mais plus moderne et flexible.
      Parce que avec leur architecture de "Grand n'importe quoi" ils ont gagné pas mal de gros intranet et quelque site. Aussi bien dans les banques que dans le public voir dans le luxe (intranet du groupe kering : puma /  gucci /  Yves Saint-Laurent / Sergio Rossi etc...).

      Tout simplement parce que leur archi bien que peu orthodoxe en n'a fait un produit tout aussi simple que puissant (aussi bien pour l'intégrateur que pour l'administrateur que pour les contributeurs). Mais malgré leur succès et un produit particulièrement en avance sur la concurrence (java .net et php compris) leur archi me pose problème car bien que simple voir simpliste elle est trop loin du standard.

      Si quelqu'un connait un projet MVC(1) modulaire et modulable écrit en java-ee pure et open source je suis preneur pour voir comment il ont passé certaine problématique.


      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        15 décembre 2014 à 14:21:25

        Tu sais ça veut rien dire les contrats que tu signes ni le nom des partenaires. La technique joue très souvent un rôle mineur comparé aux équipes marketing / commerciales qui font connaître le produit.

        Je suis bien placé pour le savoir, j'ai travaillé chez l'un des plus gros sites de e-commerce français et ils avaient 10 ans de retard en architecture J2EE (framework maison, EJB2, beaucoup de code dépendant de JBOSS..).

        • Partager sur Facebook
        • Partager sur Twitter
          15 décembre 2014 à 14:57:37

          Le produit est bon. Fonctionnellement rien n'a dire, techniquement je suis obligé de reconnaître que ça marche bien, mais ne me conviens pas (pour m'en inspiré, par contre toujours un plaisir de travailler dessus).

          "Tu sais ça veut rien dire les contrats que tu signes ni le nom des partenaires. La technique joue très souvent un rôle mineur comparé aux équipes marketing / commerciales qui font connaître le produit."
          -> C'est vrai mais un produit aimé des développeurs est souvent un signe et JCMS est particulièrement apprécié par les développeurs qui ont eu la chance de l'utiliser et demande souvent d'autre projet sur cette techno. Par exemple je préfère largement JCMS à ez-publish. Dès que je touche à une autre techno l'impression de repartir 10 ans en arrière et de perdre des jours en dev pour des choses qui se font en quelque clic et lignes de JSP et déclaration XML dans JCMS (système de portail et de portlet avec différent gabarits)
          De plus JCMS n'a pas de grosse équipe commerciale, il marche en bouche à oreille entre client et intégrateur.


          En faite ils n'ont pas extrait de pattern de leur produit. Et pour devenir une bonne pratique il suffit souvent de mettre un nom sur une méthode et de la documenter. Hors ils n'ont pas fait ce travail donc leur archi reste et restera marginal.

          En faite pour faire court j'aimerai toute la simplicité et puissance de leur produit mais mis dans un standard bien définie et documenté (sauf la norme JSR 286 pour les portlet qui ne m'intéresse pas).

          -
          Edité par acemicka 15 décembre 2014 à 15:37:08

          • Partager sur Facebook
          • Partager sur Twitter
            15 décembre 2014 à 18:16:23

            Les marketing croient que l'inversion de contrôle est un jeu video....Et les commerciaux que l'archi multicouche,c'est un des produits de pampers!

            -
            Edité par footsteps 15 décembre 2014 à 18:16:57

            • Partager sur Facebook
            • Partager sur Twitter
              16 décembre 2014 à 22:25:15

              Bonjour à tous,

              J'ai rencontré un problème en essayant de modifier un exercice sur les boucles. Voici mon code :

              String reponse = "Oui";
              		while (reponse == "Oui" || reponse == "oui")
              		{
              			System.out.println("What is your name  ? ");
              			String name = sc.nextLine();
              			System.out.println("Hi"+ name + " what's up ?");
              			reponse=" " ;
              			while( reponse != "Oui" && reponse != "Non" && reponse != "oui" && reponse != "non")
              			{
              				System.out.println("Do you want to retry ?");
              				reponse = sc.nextLine();
              				System.out.println(reponse);
              			
              			}
              		}
              	System.out.println("bye");	

              Le problème est que je reste coincé dans la deuximème boucle même lorsque je devrais en sortir. Le problème vient-il des conditions du deuxième while? Ou de la variable réponse elle même ?

              Merci d'avance

              • Partager sur Facebook
              • Partager sur Twitter
              cordialement fabian lapotre.
              Anonyme
                16 décembre 2014 à 23:31:32

                On n'utilise pas le == sur les objets.

                Le == teste si les références des objets sont identiques et non si le contenu des objets sont identiques. Il faut pour cela utiliser la méthode equals.

                Remplace donc dans un premier temps les reponse == "oui" par "oui".equals(reponse) et les reponse != "oui" par ! "oui".equals(reponse)

                Ne fait JAMAIS reponse.equals("oui"). Si reponse n'a pas été initialisé et vaut null, tu auras un beau NullPointerException.

                Ensuite, dans ton cas je ne vois pas bien l'utilité de la seconde boucle. On peut faire tout ce que tu veux en une unique boucle.

                -
                Edité par Anonyme 16 décembre 2014 à 23:35:44

                • Partager sur Facebook
                • Partager sur Twitter
                  17 décembre 2014 à 17:42:44

                  Merci beaucoup.

                  J'avais créé ma deuxième boucle afin que l'utilisateur puisse saisir uniquement la réponse "oui" ou "non" et que dans le cas contraire mon programme lui demande à nouveau sa réponse. Je pense que tu l'avais compris mais du coup en faisant une seule boucle, je ne vois pas comment je peux obliger l'utilisateur à saisir un oui ou non. Peux-tu m'expliquer ?

                  Merci d'avance.

                  • Partager sur Facebook
                  • Partager sur Twitter
                  cordialement fabian lapotre.
                    18 décembre 2014 à 21:51:53

                    Bonjour les zéros ! 
                    Je débute actuellement en JEE (comme beaucoup de personnes ici je suppose :p). Avant cela je développais mes sites sous PHP, et j'avais pour habitude de créer un fichier .php nommé "core" qui comportait tout ce qui était: 

                    - Gestion de la connexion à mysql

                    - Configurations du site

                    - Gestion de la connexion de l'utilisateur

                    - Gestion d'autres choses (l'utilisateur est banni ?...)

                    Et je voudrais savoir comment ça fonctionne sous java, si on peut créer un fichier .java et l'inclure sur toutes mes pages ? (et si possible automatiquement ?)

                    Merci ! Très bon cours !

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Dylan alias Ethis
                    Anonyme
                      18 décembre 2014 à 22:31:36

                      Oui on peut faire n'importe quoi en java (tout coder dans une servlet ou dans une jsp..), cependant je t'invite à étudier le cours proposé ici.

                      Tu y apprendras notamment le découpage de l'application en couches : contrôleur, services, dao.

                      Pour ce qui est du code commun (inclus sur toutes les pages), il n'y a pas énormément de possibilités. La plus évidente est de réaliser un contrôleur abstrait commun dont hérite tous les contrôleurs et qui contiendra toutes les informations communes qu'il exposera ensuite à la vue.
                      Tu peux ensuite faire des includes de jsp (de la même façon qu'on le fait en php).

                      D'autres approches permettent de gérer plutôt le code de la page et de l'inclure de façon cachée (donc sans voir de includes apparent). C'est un peu plus complexe à cerner au début.
                      Cela dit, des frameworks font cela très bien.. renseigne-toi sur tiles. 

                      • Partager sur Facebook
                      • Partager sur Twitter
                        21 décembre 2014 à 10:50:52

                        Bonjour.

                        S' il y a des dev mixtes(java web/php): est ce possible avec la même logique de développement) de transférer un spring mvc hibernate jpa (par en jee (avec les n tiers couches) en php?Juste une indication (framework par ex).Merci.

                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          21 décembre 2014 à 20:14:33

                          Oui c'est possible étant donné que l'architecture logicielle ne dépend pas d'un langage, il faut voir cela plus comme une abstraction. En symfony2 (PHP), tu retrouveras par exemple l'ORM Doctrine (comme hibernate), twig (comme les jsp/freemarker), les contrôleurs etc..

                          Par ailleurs, Symfony2 et Spring MVC implémentent tous les deux le pattern MVC2.

                          -
                          Edité par Anonyme 21 décembre 2014 à 20:16:12

                          • Partager sur Facebook
                          • Partager sur Twitter
                            22 décembre 2014 à 6:01:20

                            Merci Pappalourdo.

                            J'avais vu le similaire mais j'ai du mal avec le php (on reste quand même dans du procédural transformé en objet).Je vais m'y coller.

                            -
                            Edité par footsteps 22 décembre 2014 à 6:04:09

                            • Partager sur Facebook
                            • Partager sur Twitter
                              22 décembre 2014 à 7:36:47

                              bonjour je suis le tuto de mateo et j'essaye de faire la calculatrice mais je bloque dans la vérification de la condition pour je fait "println" avant et la j'ai bien la bonne réponse pouvez vous m'aidez voici mon projet

                              package com.octets.beans;
                              
                              import javax.servlet.http.HttpServletRequest;
                              
                              
                              public class Calcul {
                              	private int nbrUn ;
                              	private int nbrDeux;
                              	private String operation;
                              	private double result;
                              	
                              	public String getOperation() {
                              		return operation;
                              	}
                              	public void setOperation(HttpServletRequest request) {
                              		this.operation = (String)request.getParameter("operation");
                              		
                              	}
                              	public int getNbrDeux() {
                              		return nbrDeux;
                              	}
                              	public void setNbrDeux(HttpServletRequest request) {
                              		if(request.getParameter("nbrDeux")  == "")
                              			this.nbrDeux = 0;
                              		else
                              			this.nbrDeux = (int) Double.parseDouble( request.getParameter("nbrDeux"));
                              	}
                              	public int getNbrUn() {
                              		return nbrUn;
                              	}
                              	public void setNbrUn(HttpServletRequest request) {
                              		if(request.getParameter("nbrUn") == "")
                              			this.nbrUn = 0;
                              		else
                              			this.nbrUn = (int) Double.parseDouble( request.getParameter("nbrUn"));
                              	}
                              	public double getResult() {
                              		return result;
                              	}
                              	public void setResult(double result) {
                              		this.result = result;
                              	}
                              	public double operationNombres(HttpServletRequest request)
                              	{
                              		System.out.println(this.operation);// ici on m'affiche bien "+"
                              		if(request.getParameter("nbrUn") == "")
                              			this.nbrUn = 0;
                              		
                              		if(request.getParameter("nbrDeux")  == "")
                              			this.nbrDeux = 0;
                              		
                              		if ( this.operation == "+")// et ici on ne rentre pas dans la condition et si je met pas de condition fait bien le calcul
                              		{	
                              			this.result = this.nbrUn + this.nbrDeux;				
                              		}else if ( this.operation == "-")
                              		{		  
                              			this.result = this.nbrUn - this.nbrDeux;				
                              		}else if ( this.operation == "*")
                              		{			  
                              			this.result = this.nbrUn * this.nbrDeux;				
                              		}else if ( this.operation == "/")
                              		{	
                              			if(request.getParameter("nbrDeux")  == "")
                              				this.nbrDeux = 1;
                              			this.result = this.nbrUn / this.nbrDeux;			
                              		               
                              		}
                              		return this.result;
                              	}
                              	
                              	
                              }
                              

                              j' ai mit en commentaire ou je bloquais merci d'avance pour vos réponse

                              • Partager sur Facebook
                              • Partager sur Twitter
                                22 décembre 2014 à 13:54:56

                                problème résolu , il a fallut jusque j'utilise "equals()" au lieu de "==" pour que cela fonctionne 

                                bonne journée

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  22 décembre 2014 à 18:53:31

                                  Bonjour,

                                  Je suis au dernier chapitre, celui sur les bases de données et le modèle DAO du cours JavaEE en vidéo de Mateo21 et je bloque sur l'exercice de l'éditeur de sous titres, plus exactement sur la communication avec la base de données.

                                  Lors de la première éxecution d'une des méthodes de ma classe FichierDaoImpl : trouverFichier, il me sort une sql exception. je précise que j'ai testé la requête sql présente dans cette méthode dans la console mysql et qu'elle me retourne bien le résultat que j'attends.

                                  Ma base de données est composée de 3 tables :

                                  - fichiers avec les champs : id (clé primaire), nom_fich_vo, nom_fich_traduit

                                  -chaines avec les champs : idChaine (clé primaire), numéro, durée, id_fichier(clé étrangère)

                                  -lignes avec les champs : idLigne (clé primaire), text_vo, text_traduit, idChaine(clé étrangère)

                                  Voilà la structure de mon appli qui pour l'instant n'est pas finie et est sensée (lorsqu'elle marchera !):

                                  - lire le fichier "password.presentation.srt"

                                  - alimenter la table" chaines" avec le numéro et la durée de chaque séquence

                                  - alimenter la table " lignes" avec le texte de chaque ligne en vo et en traduit pour chaque séquence de chaine.

                                  - emmagasiner ces lignes dans une arrayList pour la transmettre à la vue pour affichage

                                  Voici le code de la servlet :

                                  package com.subtitlor.servlets;
                                  
                                  import java.io.IOException;
                                  
                                  import javax.servlet.ServletContext;
                                  import javax.servlet.ServletException;
                                  import javax.servlet.annotation.WebServlet;
                                  import javax.servlet.http.HttpServlet;
                                  import javax.servlet.http.HttpServletRequest;
                                  import javax.servlet.http.HttpServletResponse;
                                  
                                  import com.subtitlor.utilities.SubtitlesHandler;
                                  import com.subtitlor.dao.ChaineDao;
                                  import com.subtitlor.dao.DaoException;
                                  import com.subtitlor.dao.DaoFactory;
                                  import com.subtitlor.dao.FichierDao;
                                  import com.subtitlor.dao.LigneDao;
                                  
                                  /**
                                   * Servlet implementation class EditSubtitle
                                   */
                                  @WebServlet("/EditSubtitle")
                                  public class EditSubtitle extends HttpServlet {
                                  	private static final long serialVersionUID = 1L;
                                  	private static final String FILE_NAME = "/WEB-INF/password_presentation.srt";
                                  	private static final String NOM_FICH_VO = "password_presentation.srt";
                                  	private FichierDao fichierDao;
                                  	private ChaineDao chaineDao;
                                  	private LigneDao ligneDao;
                                  	
                                  	public void init() throws ServletException {
                                           DaoFactory daoFactory = DaoFactory.getInstance();
                                           fichierDao = daoFactory.getFichierDao();
                                           chaineDao = daoFactory.getChaineDao();
                                           ligneDao = daoFactory.getLigneDao();
                                      }
                                  
                                  	/**
                                  	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
                                  	 */
                                  	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                                  		ServletContext context = getServletContext();
                                  		System.out.println(context.getRealPath(FILE_NAME));
                                  		
                                  		SubtitlesHandler subtitles;
                                  		try {
                                  			subtitles = new SubtitlesHandler(context.getRealPath(FILE_NAME), NOM_FICH_VO);
                                  			request.setAttribute("subtitles", subtitles.getSubtitles());
                                  
                                  		} catch (DaoException e) {
                                  			// TODO Auto-generated catch block
                                  			e.printStackTrace();
                                  		}
                                  				
                                  		this.getServletContext().getRequestDispatcher("/WEB-INF/edit_subtitle.jsp").forward(request, response);
                                  	}
                                  
                                  	/**
                                  	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
                                  	 */
                                  	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                                  		// TODO Auto-generated method stub
                                  	}
                                  
                                  }
                                  

                                  Voici le code la classe SubtitlesHandler qui est chargée de lire le fichier et de remplir les tables de la bdd citée plus haut:

                                  package com.subtitlor.utilities;
                                  
                                  import java.io.BufferedReader;
                                  import java.io.FileReader;
                                  import java.io.IOException;
                                  import java.sql.SQLException;
                                  import java.util.ArrayList;
                                  import java.util.regex.Matcher;
                                  import java.util.regex.Pattern;
                                  
                                  import com.subtitlor.beans.Chaine;
                                  import com.subtitlor.dao.ChaineDao;
                                  import com.subtitlor.dao.DaoException;
                                  import com.subtitlor.dao.DaoFactory;
                                  import com.subtitlor.dao.FichierDao;
                                  import com.subtitlor.dao.LigneDao;
                                  
                                  public class SubtitlesHandler {
                                  	private ArrayList<String> originalSubtitles = null;
                                  	//private ArrayList<String> translatedSubtitles = null;
                                  	private DaoFactory daoFactory;
                                  	private FichierDao fichierDao;
                                  	private ChaineDao chaineDao;
                                  	private LigneDao ligneDao;
                                  
                                  	public SubtitlesHandler(String realPathFileName, String fileName) throws DaoException {
                                  		originalSubtitles = new ArrayList<String>();
                                  		//translatedSubtitles = new ArrayList<String>();
                                  		daoFactory = DaoFactory.getInstance();
                                  		this.fichierDao = daoFactory.getFichierDao();
                                          this.chaineDao = daoFactory.getChaineDao();
                                          this.ligneDao = daoFactory.getLigneDao();
                                  		BufferedReader br;
                                  		// récupération de l'id du fichier correspondant au nom passé en paramètre
                                  		int idFichier = fichierDao.trouverFichier(fileName);
                                  		try {
                                  			br = new BufferedReader(new FileReader(realPathFileName));
                                  			String line;
                                  			// création d'un bean Chaine
                                  			Chaine chaine =new Chaine();
                                  			/**
                                  			 *  mise en place des regex pour faire le tri dans les lignes du fichier entre 
                                  			 *  les lignes numéro de séquence de chaine,
                                  			 *   durée de la séquence de chaine,
                                  			 *    et les lignes de texte
                                  			 */
                                  			Pattern p1 = Pattern.compile("[^a-zA-Z] && ([0-9]+) && [^:]");
                                  			Pattern p2 = Pattern.compile("[0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3}");
                                  
                                  			while ((line = br.readLine()) != null) {
                                  				Matcher m1 = p1.matcher(line);
                                  				Matcher m2 = p2.matcher(line);
                                  				// si c'est une ligne numéro de séquence de chaine
                                  				if (m1.find()) {
                                  					//on ajoute une entrée dans la table chaine en renseignant les colonnes idFichier et numéro
                                  					int numChaine = chaineDao.ajouterNumeroChaine(idFichier, line);
                                  					//installation de la proriété numChaine du bean Chaine
                                  					chaine.setNumero(numChaine);
                                  					//récupération de l'idChaine de l'entrée qui vient d'être créée
                                  					int idChaine = chaineDao.trouverChaine(numChaine);
                                  					//installation de la proriété idChaine du bean Chaine
                                  					chaine.setIdChaine(idChaine);
                                  				}
                                  				// si c'est une ligne durée de séquence de chaine
                                  				if (m2.find()){ 
                                  					// on modifie l'entrée créée précédemment dans la table chaines en rajoutant la durée correspondante
                                  					chaineDao.ajouterDuree(chaine.getIdChaine(), line);
                                  					//installation de la proriété duree du bean Chaine
                                  					chaine.setDuree(line);
                                  				}
                                  				// sinon c'est une ligne texte 
                                  				else {
                                  					//on remplit la table lignes
                                  					ligneDao.ajouterLigne(chaine.getIdChaine(), line);
                                  					//ajout dans l'arrayList qui contiendra seulement les lignes texte du fichier .srt
                                  					originalSubtitles.add(line);
                                  				}
                                  			}
                                  			br.close();
                                  		} catch (IOException e) {
                                  			e.printStackTrace();
                                  		}
                                  		
                                          finally {
                                              try {
                                                  if (daoFactory.getConnection() != null) {
                                                      daoFactory.getConnection().close();  
                                                  }
                                              } catch (SQLException e) {
                                                  throw new DaoException("Impossible de communiquer avec la base de données");
                                              }
                                          }
                                  	}
                                  	
                                  	public ArrayList<String> getSubtitles() {
                                  		return originalSubtitles;
                                  	}
                                  
                                  
                                  }
                                  

                                  Le code de ma DaoFactory :

                                  package com.subtitlor.dao;
                                  
                                  import java.sql.Connection;
                                  import java.sql.DriverManager;
                                  import java.sql.SQLException;
                                  
                                  
                                  
                                  public class DaoFactory {
                                  
                                  	private String url;
                                  	private String username;
                                  	private String password;
                                  
                                  	DaoFactory(String url, String username, String password) {
                                  		this.url = url;
                                  		this.username = username;
                                  		this.password = password;
                                  	}
                                  
                                  	public static DaoFactory getInstance() {
                                  		try {
                                  			Class.forName("com.mysql.jdbc.Driver");
                                  		} catch (ClassNotFoundException e) {
                                  		}
                                  		DaoFactory instance = new DaoFactory("jdbc:mysql://localhost:3306/soustitres", "root", "");
                                  		return instance;
                                  	}
                                  
                                  	/**
                                  	 * methode qui permet à tout moment de récupérer la connection
                                  	 * @return
                                  	 * @throws SQLException
                                  	 */
                                  	public Connection getConnection() throws SQLException {
                                  		Connection connexion = (Connection) DriverManager.getConnection(url, username, password);
                                  		//pour gérer nous même les transactions
                                  		//connexion.setAutoCommit(false);
                                  		return connexion; 
                                  	}
                                  	/**
                                  	 *  Récupération du Dao
                                  	 *  représente les tables de la base de données
                                  	 *  envoie la factory elle-même pour que l'objet implémenté table FichierDao puisse accéder à la Bdd connectée
                                  	 * @return l'objet table FichierDao Implémenté
                                  	 */
                                  	public FichierDao getFichierDao() {
                                  		return new FichierDaoImpl(this);
                                  	}
                                  	/**
                                  	 * 
                                  	 * @return l'objet ChaineDao Implémenté
                                  	 */
                                  	public ChaineDao getChaineDao(){
                                  		return new ChaineDaoImpl(this);
                                  	}
                                  	/**
                                  	 * 
                                  	 * @return l'objet LigneDao Implémenté
                                  	 */
                                  	public LigneDao getLigneDao(){
                                  		return new LigneDaoImpl(this);
                                  	}
                                  }
                                  
                                  
                                  

                                  Enfin le code de ma classe FichierDao où se situe l'erreur de départ :

                                  package com.subtitlor.dao;
                                  
                                  import java.sql.Connection;
                                  import java.sql.PreparedStatement;
                                  import java.sql.ResultSet;
                                  import java.sql.SQLException;
                                  import java.sql.Statement;
                                  
                                  import com.subtitlor.beans.BeanFichierException;
                                  import com.subtitlor.dao.DaoException;
                                  import com.subtitlor.dao.DaoFactory;
                                  
                                  public class FichierDaoImpl implements FichierDao {
                                  
                                  	private DaoFactory daoFactory;
                                  
                                  
                                  	public FichierDaoImpl(DaoFactory daoFactory) {
                                          this.daoFactory = daoFactory;
                                  	}
                                  
                                  
                                  	@Override
                                  	public int trouverFichier(String fileName) throws DaoException {
                                  		int idFichier = 0;
                                  		Connection connexion = null;
                                  		//Statement statement = null;
                                  		try {
                                  			connexion = (Connection) daoFactory.getConnection();
                                  			Statement statement = (Statement) connexion.createStatement();
                                  			ResultSet idFichierRes = statement.executeQuery("SELECT id FROM fichiers WHERE nom_fich_vo = '"+fileName+"' ;");
                                  			idFichier = idFichierRes.getInt("id");
                                  			//connexion.commit();
                                  		} catch (SQLException e) {
                                          	try{
                                          	if (connexion != null){
                                          		connexion.rollback();
                                          		}
                                          	} catch (SQLException e2) {
                                          	}
                                          	 throw new DaoException("Impossible de communiquer avec la base de données");
                                          }
                                  		return idFichier;
                                  	}
                                  
                                  
                                  }
                                  

                                  Voilà j'espère vous avoir donné assez d'éléments pour vous permettre de me "débloquer". Toute aide sera la bienvenue car là, je n'arrive pas à voir ce qui cloche!

                                  Guevarine




                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  L'imagination au pouvoir!
                                  Anonyme
                                    22 décembre 2014 à 19:21:56

                                    Tu t'es mis en debug au executeQuery avec un point d'arrêt ?

                                    Que donne la requête SQL ?

                                    Il faudrait regarder par ici. Le reste du code ne sert à rien sans cette information. Il faut soit logguer à minima la requête (à l'arrache avec un sysout ou mieux avec log4j), ou mieux lancer le mode debug sur le serveur et vérifier ce que contiennent les objets.

                                    Avec ça tu trouveras tout seul la solution à ton pb ;)

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      22 décembre 2014 à 21:32:03

                                      ok merci Pappalourdo je vais essayer ce que tu me conseilles et voir si je peux trouver la solution.

                                      Guevarine

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      L'imagination au pouvoir!
                                        22 décembre 2014 à 22:58:27

                                        Désolée mauvaise manip :honte:

                                        Je reviens vers vous car j'ai suivi les conseils de Pappalourdo : j'ai lancé le serveur en mode debug mais le problème c'est que je ne comprends rien à ce qui est marqué....

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        L'imagination au pouvoir!
                                          22 décembre 2014 à 23:13:31

                                          De plus lorsque je mets un point d'arrêt au niveau de l'appel de la méthode qui contient le problème et que je fais F5 pour rentrer dans la méthode et débugger pas à pas un, onglet "WebappClassLoader.class" s'ouvre avec à l'intérieur ce message :

                                          Class File Editor

                                          Source not found

                                          The source attachment does not contain the source for the file WebappClassloader.class.

                                          You can change the source attachment by clicking Change Attachement Source below :

                                          je ne comprends pas plus ce dont il s'agit...

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          L'imagination au pouvoir!
                                          Anonyme
                                            22 décembre 2014 à 23:27:50

                                            Déjà dans un premier temps il faudrait logguer les erreurs.

                                            C'est quelque chose qui n'est pas expliqué dans le cours, mais c'est très important. Un catch c'est une bonne pratique, mais il faut au moins logguer le message d'erreur :   System.out.println(e.getMessage());

                                            Normalement on ne fait jamais de System.out.println mais on passe par des API du type log4j qui ont différents niveaux de logs, et permettent de logguers soit dans la console, soit dans un fichier, soit dans des fichiers découpés, d'envoyer des alertes par mail etc..

                                            Loguer te permettra de voir le message d'erreur dans la console, même si l'application ne "bug" pas (vu que l'exception a été catchée et qu'un traitement spécifique a été fait dans le catch).

                                            Sinon il faut débugguer, mais ce n'est pas non plus expliqué dans le cours. Il faut bien configurer le build path d'eclipse et attacher la source (en général le projet) au debug.

                                            -
                                            Edité par Anonyme 22 décembre 2014 à 23:30:44

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              23 décembre 2014 à 1:22:29

                                              ça y est! J'ai réussi à savoir (grâce à e.getMessage(), merci Pappalourdo :)) pourquoi mon appli n'arrivait pas à communiquer avec la base de données : voici le message :

                                              Data source rejected establishment of connection,  message from server: "Too many connections"

                                              Par contre, je ne sais pas trop quoi faire pour régler ce problème ...

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                              L'imagination au pouvoir!
                                                23 décembre 2014 à 9:50:06

                                                S'il vous plait , est que vous pouvez résoudre cet exercice ? 

                                                1) Ecrire une classe Client (int idClient, String nom, String ville) avec les méthodes suivantes : 
                                                Constructeur par défaut ( sans argument) 
                                                Setters + Getters 

                                                2) Ecrire une classe GestionCli (ArrayList<Client> ) permettant de gérer un ensemble de clients avec au moins les méthodes suivantes : 
                                                ajouterClient 
                                                supprimerClient 
                                                supprimerById 
                                                findById 
                                                findByName 

                                                3) Ecrire une classe principale de Test 
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  23 décembre 2014 à 10:53:39

                                                  Donc qu'on te fasse l'exercice à ta place.

                                                  Comment tu veux progresser sinon?

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    23 décembre 2014 à 18:25:13

                                                    Bonjour,

                                                    Je viens de commencer le cours java et je rencontre un problème dès le tout premier projet lors de l'affichage de "hello world". Eclipse m'indique que "The declared package ""Does not match the expected package "src".

                                                    Merci d'avance pour votre aide

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      23 décembre 2014 à 21:49:49

                                                      Bonjour,

                                                      j'ai téléchargée eclipse ide for java ee developpers pour linux ubuntu et j'ai extrait le fichier tar.gz dans le dossier opt mais je n'arrive pas à lancer eclipse à partir de l'icône se trouvant dans le dossier eclipse contenu dans le dossier opt, je reçoit un message me disant que JRE ou JDK est nécessaire, pouvez-vous m'indiquer où télécharger ces logiciels ?

                                                      Merci

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        24 décembre 2014 à 1:03:07

                                                        bonsoir , Firdaw1992 si tu vas suivre le cours de java sur ce site il te donne les liens de tous ce que tu as besoin pour faire un projet java sous eclipse

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          24 décembre 2014 à 16:43:44

                                                          Bonjour, j'ai réglé mon précédent problême, mais maintenant je n'arrive pas à ouvrir le fichier web.xml comme dans le tutoriel, voilà ce que j'obtiens à la place : 
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            24 décembre 2014 à 16:56:17

                                                            Je viens de trouver, il suffisait de cliquer sur Source en bas xD
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              27 décembre 2014 à 15:41:39

                                                              Bonjour,

                                                              Je suis arrivé à la partie associer une vue à une Servlet du cours, j'ai réussi à afficher "Bonjour" à l'aide de out.println("Bonjour") puis je lance le serveur, mais quand je modifie la chaîne de caractère dans le out.println() et que je relance j'obtiens encore "Bonjour" à l'affichage, la modification n'est pas prise en compte.

                                                              Merci.

                                                              • 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