IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Struts 1 Java Discussion :

Projet de gestion de factures d'abonnement telephonique


Sujet :

Struts 1 Java

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2008
    Messages : 101
    Par défaut Projet de gestion de factures d'abonnement telephonique
    Bonjour a tous
    je travaille sur une application web qui va servir à gerer les factures d'un abonnement gsm ou fixe.
    J'utilise le modèle MVC pour le developpement. La partie modèle à été traiter avec Hibernate et elle contient s
    • Abonnement
    • Abonnement GSM
    • Abonnement FIXE
    • Client
    • Facture
    • Operateur
    ix classe:
    La classe Operateur est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
    package mod;
     
     
    import java.util.Date;
    import java.util.List;
     
     
     
    import org.hibernate.Session;
     
    import util.HibernateUtil;
     
    public class Operateur {
    	public List chercheClientsParMotCles(String motCle){
    		Session session=HibernateUtil.getSessionFactory().getCurrentSession();
    	 	session.beginTransaction();
    	 	List lesCli= session.createQuery("from CLIENT where nom:=y").setString("y", motCle).list();
     
    	 	return lesCli;
     
    	}
     
    	public Abonnement getAbonnement(Long idAb){
    		Session session=HibernateUtil.getSessionFactory().getCurrentSession();
    	 	session.beginTransaction();
     
    	 	Abonnement ab=(Abonnement)session.load(Abonnement.class,idAb);
     
    	 	ab.getFactures();
     
    		return ab;
     
    	}
     
    	public void addClient(Client c){
    		Session session=HibernateUtil.getSessionFactory().getCurrentSession();
    	 	session.beginTransaction();
    	 	session.save(c);
    	 	session.getTransaction().commit();
    	}
    	public void addAbonnementGSM(String numAb, String nomAb, Date dateAb, double solde, Long idClient, String fidelio){
    		Session session=HibernateUtil.getSessionFactory().getCurrentSession();
    	 	session.beginTransaction();
    	 	Client cli=(Client)session.load(Client.class,idClient);
    	 	AbonnementGSM a= new AbonnementGSM();
    	 	a.setNumAb(numAb);
    	 	a.setNomAb(nomAb);
    	 	a.setDateAb(dateAb);
    	 	a.setSolde(solde);
    	 	a.setFidelio(fidelio);
    	 	cli.addAbonnement(a);
    	 	session.save(a);
    	 	session.getTransaction().commit();
    	}
    	public void addFacture(String numFacture, Date dateFacture, double montant,boolean regle, Long idAb){
    		Session session=HibernateUtil.getSessionFactory().getCurrentSession();
    	 	session.beginTransaction();
    	 	Abonnement a=(Abonnement) session.load(Abonnement.class,idAb);
    	 	Facture f= new Facture();
    	 	f.setNumFacture(numFacture);
    	 	f.setDateFacture(dateFacture);
    	 	f.setMontant(montant);
    	 	a.addFactures(f);
    	 	session.save(f);
    	 	session.getTransaction().commit();
    	}
     
    	public void reglerFacture(Long idFact){
    		Session session=HibernateUtil.getSessionFactory().getCurrentSession();
    	 	session.beginTransaction();
    	 	Facture f=(Facture) session.load(Facture.class, idFact);
    	 	f.setRegle(true);
    	 	session.save(f);
    	 	session.getTransaction().commit();
    	}
     
    }
    Pour la vue, j'utilise le framework Struts
    Voici les fichiers que j'ai créer:
    AbonnementForm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    package pres;
     
     
    //import java.util.Vector;
     
    import java.util.Vector;
     
    import mod.*;
     
    import org.apache.struts.action.ActionForm;
     
    public class AbonnementForm extends ActionForm{
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
     
    	private Long idAb;
    	private String action="";
    	private Abonnement ab;
    	private Client cli;
    	private Facture f=new Facture();
    	private Vector vect=new Vector();
        static int temp;
     
    	public Abonnement getAb() {
    		return ab;
    	}
    	public void setAb(Abonnement ab) {
    		this.ab = ab;
    	}
    	public Client getCli() {
    		return cli;
    	}
    	public void setCli(Client cli) {
    		this.cli = cli;
    	}
     
    	public static int getTemp() {
    		return temp;
    	}
    	public static void setTemp(int temp) {
    		AbonnementForm.temp = temp;
    	}
    	public String getAction() {
    		return action;
    	}
    	public void setAction(String action) {
    		this.action = action;
    	}
    	public Vector getVect() {
    		return vect;
    	}
    	public void setVect(Vector vect) {
    		this.vect = vect;
    	}
    	public Facture getF() {
    		return f;
    	}
    	public void setF(Facture f) {
    		this.f = f;
    	}
    	public Long getIdAb() {
    		return idAb;
    	}
    	public void setIdAb(Long idAb) {
    		this.idAb = idAb;
    	}
    }
    ActionAbonnement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    package pres;
     
     
     
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
     
    import mod.*;
     
     
     
     
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
     
     
     
    public class ActionAbonnement {
     
    	public ActionForward execute(
    			 ActionMapping map, 
    			 ActionForm form, 
    			 HttpServletRequest request, 
    			 HttpServletResponse response) throws Exception {
    		AbonnementForm af=(AbonnementForm) form;
    		Operateur op=new Operateur();
     
    		if(af.getAction().equals("Rechercher")){
    			af.setAb(op.getAbonnement(af.getIdAb()) );
     
     
    		}
     
    		if(af.getAction().equals("Regler")){
    			op.reglerFacture(af.getIdAb());
     
     
    		}
     
     
     
     
     
     
    		return map.findForward("vueClients");
    	}
    }
    le fichier struts-config.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?xml version="1.0" encoding="iso-8859-1"?>
    <!DOCTYPE struts-config PUBLIC
              "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
              "http://struts.apache.org/dtds/struts-config_1_2.dtd">
     
    <struts-config>
     <form-beans>
    	<form-bean name="af" type="pres.AbonnementForm"/>
     </form-beans>
     <global-forwards>
      <forward name="vueClients" path="/vues/abonnement.jsp"/>
     </global-forwards>
     <action-mappings>
    	<action 
    	 path="/abonnement" 
    	 name="af" 
    	 type="pres.AbonnementAction" 
    	 scope="request"
     
    	 />
     </action-mappings>
     <message-resources parameter="ApplicationResources"/>
    </struts-config>
    et finalement la vue abonnement.jsp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%> 
    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>       
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>  
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    		<title>Insert title here</title>
    	</head>
    	<body>
    		<html:form action="abonnement.do" method="post">
    			<table border="1">
    				<tr>
    					<td>Entrer le numeros d'abonnement</td>
    					<td><html:text property="idAb" value=""></html:text></td>
    					<td><html:submit property= "action" value="Rechercher"></html:submit></td>
    				</tr>
    			</table>
    		</html:form><br>
     
    		<table border="1">
     
    			<tr>
    				<td>id Abonnement</td>
    				<td>num Abonnement</td>
    				<td>nom Abonnement</td>
    				<td>date Abonnement</td>
    				<td>solde</td>
    				<td>fidelio</td>
    				<td>debit</td>
    			</tr>
    			 <logic:iterate id="a" name="af" property="ab" >
    			<tr>
        			<td><bean:write name="a"  property="idab"  /></td>
        			<td><bean:write name="a" property="numAb"/></td>
        			<td><bean:write name="a" property="nomAb"/></td>
        			<td><bean:write name="a" property="ateAb"/></td>
        			<td><bean:write name="a" property="solde"/></td>
        			<td><bean:write name="a" property="fidelio"/></td>
        			<td><bean:write name="a" property="debit"/></td>
       			</tr>
       			</logic:iterate>
    	</table>
     
    		<table>
    			<tr>
    				<td>id Client</td>
    				<td>nom</td>
    				<td>email</td>
    				<td>telephone</td>
    				<td>ville</td>
    			</tr>
    			<logic:iterate id="c" name="af" property="cli" >
     
    			<tr>
    			 	<td><bean:write name="c" property="cli.idClient"/></td>
    			 	<td><bean:write name="c" property="cli.nom"/></td>
    			 	<td><bean:write name="c" property="cli.email"/></td>
    			 	<td><bean:write name="c" property="cli.tel"/></td>
    			 	<td><bean:write name="c" property="cli.ville"/></td>
    		 	</tr>
    		 	</logic:iterate>
    		</table>
     
    		<table>
    			<tr></tr>
    			<logic:iterate id="fact" name="af" property="f">
    			<tr>
    				<td><bean:write name="fact" property="f.idFacture"/></td>
    			 	<td><bean:write name="fact" property="f.numFacture"/></td>
    			 	<td><bean:write name="fact" property="f.dateFacture"/></td>
    			 	<td><bean:write name="fact" property="f.montant"/></td>
     
    			</tr>
    			</logic:iterate>
    		</table>
    	</body>
    </html>
    quand j'ouvre la page, le navigateur me dit que le path abonnement n'a pas pu etre créer.
    merci de jeter un petit coup d'oeil à mon travail et me dire ce qui ne va pas si c'est possible.

  2. #2
    Membre chevronné Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Par défaut
    Une petite stacktrace ?

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2008
    Messages : 101
    Par défaut
    voici le stacktrace

    type Rapport d'exception
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    message
     
    description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.
     
    exception
     
    javax.servlet.ServletException: No collection found
        org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
        org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
        org.apache.jsp.vues.abonnement_jsp._jspService(abonnement_jsp.java:288)
        org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
     
    cause mère
     
    javax.servlet.jsp.JspException: No collection found
        org.apache.struts.taglib.logic.IterateTag.doStartTag(IterateTag.java:236)
        org.apache.jsp.vues.abonnement_jsp._jspService(abonnement_jsp.java:106)
        org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

  4. #4
    Membre chevronné Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Par défaut
    C'est ton tag logic:iterate qui pose problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <logic:iterate id="a" name="af" property="ab" >
    Il n'y a pas de collection dans ton Form ayant le nom "af".

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 433
    Par défaut
    Essaie d'eviter des nom comme f , ou af , ou ag , car ça perturbe la bonne lisibilité de ton code , aussi , je te conseille de voire le projet display et utiliser le tag display:table , qui te donne la possibilité de trier et d'afficher tes résultats selon des pages!

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2008
    Messages : 101
    Par défaut
    bonjour
    je ne trouve pas le probleme avec af car dans l'actionform j'ai bien creer un form que j'ai nommée af.

  7. #7
    Membre chevronné Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Par défaut
    Ha oui, mais "ab" est-il un objet ayant un type autorisé par le tag logic:iterate comme mentionné dans la doc ?
    * An array of Java objects or primitives.
    * An implementation of java.util.Collection, including ArrayList and Vector.
    * An implementation of java.util.Enumeration.
    * An implementation of java.util.Iterator.
    * An implementation of java.util.Map, including HashMap, Hashtable, and TreeMap. NOTE - See below for additional information about accessing Maps.

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Il y a surtout que ta classe n'étend pas Action ou DispatchAction ou LookupDispatchAction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    
    public class ActionAbonnement extends Action
    {
       ...
    }
    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Inactif  
    Inscrit en
    Mai 2008
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 135
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(af.getAction().equals("Regler")){
    			op.reglerFacture(af.getIdAb());
     
     
    		}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ist lesCli= session.createQuery( ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Abonnement ab=(Abonnement) ... ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Facture f= new Facture();

    si je peux me permettre, tu devrais écrire proprement ... En faite, même si l'utilisateur n'a pas accès au code qui lui est totalement transparent, pour les développeurs qui se chargeront de la continuité de ton code, seront très vite saoulé par ce brouillon.

    Tu sais, écrire proprement un code, c'est comme écrire une belle lettre avec soin.
    par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Abonnement ab=(Abonnement) ... ;
    pourrait devenir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Abonnement abonnement=(Abonnement) ... ;

    Dans la vie quand tu écris une lettre tu dis par exemple :

    "Bonjour Monsieur, comment allez-vous ?"

    et non

    " 'Jour M'sieur, bien ?"

    A première vue ... dans un code ... ce n'est pas important . Mais si tu as des classes de 5.000 lignes avec que des :

    - ab.laMethode, f.laMethode, abs.laMethode, cod.laMethode, chab.laMethode , f.laMethode, po.laMethode, ma.laMethode, pa.laMethode, so.laMethode, volaMethode ...


    pffou lourd.

    d'ici deux mois tu écrira en binaire.

    écrire des noms de variables explicite, un code doit être lu très facilement, de la prose(c'est a dire écrire les événements comme tu les expliquerais oralement), doit être bien commenté, ... avoir sa petite signature personnelle.

    Pour cela je te conseillerais de jeter par exemple un petit coups d'œil sur les class que tu utilise ... la panoplie de java.util.* ...

    c'est magnifique

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MCD] Projet de gestion d'un parc de matériel informatique
    Par merimac dans le forum Schéma
    Réponses: 15
    Dernier message: 20/12/2013, 10h33
  2. Réponses: 4
    Dernier message: 05/01/2012, 21h19
  3. Architecture projet de gestion avec dynamisme
    Par n8ken dans le forum Plateformes (Java EE, Jakarta EE, Spring) et Serveurs
    Réponses: 15
    Dernier message: 20/04/2009, 15h41
  4. Rendre invisible projet dans Gestion de tâches
    Par cocot dans le forum Delphi
    Réponses: 2
    Dernier message: 29/01/2007, 16h45
  5. Gestion des factures avec interbase
    Par AlexB59 dans le forum Bases de données
    Réponses: 1
    Dernier message: 25/10/2005, 12h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo