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

Servlets/JSP Java Discussion :

Récupérer une variable de type String


Sujet :

Servlets/JSP Java

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 42
    Points : 17
    Points
    17
    Par défaut Récupérer une variable de type String
    J'ai une classe qui permet de déterminer la capacité du disque dur.
    En 1er état elle s'affiche en unité d'allocation. Je l'ai multiplié par l'unité d'allocation.
    Le résultat s'affiche la première fois mais lorsque j'actualise ma page le résultat se change à chaque fois!
    Comment je peux faire?
    Voilà mes codes:


    Classe test:
    Elle contient tous les traitements des chaines de caractères nécessaires pour prendre que l'information à manipuler.
    Cette classe utilise bibliothèque SNMP4j.

    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
     
    package testpackage;
    import java.io.IOException;
    import org.snmp4j.CommunityTarget;
    import org.snmp4j.PDU;
    import org.snmp4j.Snmp;
    import org.snmp4j.TransportMapping;
    import org.snmp4j.event.ResponseEvent;
    import org.snmp4j.event.ResponseListener;
    import org.snmp4j.mp.SnmpConstants;
    import org.snmp4j.smi.Address;
    import org.snmp4j.smi.GenericAddress;
    import org.snmp4j.smi.OID;
    import org.snmp4j.smi.OctetString;
    import org.snmp4j.smi.VariableBinding;
    import org.snmp4j.transport.DefaultUdpTransportMapping;
     
     
    public class test {
     
         String str2 ="";
         String res2 ="";
         String str3 ="";
         String res3 ="";
     
         public String tailleDisk() throws IOException 
     
    {
    Address targetAddress = GenericAddress.parse("udp:127.0.0.1/161");
    TransportMapping transport = new DefaultUdpTransportMapping();
    Snmp snmp = new Snmp(transport);
     
    transport.listen();
     
    CommunityTarget target = new CommunityTarget();
    target.setCommunity(new OctetString("public"));
    target.setAddress(targetAddress);
    target.setRetries(2);
    target.setTimeout(1500);
    target.setVersion(SnmpConstants.version1);
     
    PDU pdu = new PDU();
    pdu.add(new VariableBinding(new OID(new int[] {1,3,6,1,2,1,25,2,3,1,5,1})));//taille C:\
     
    pdu.setType(PDU.GETNEXT);
     
    ResponseListener listener = new ResponseListener()
    {
    public void onResponse(ResponseEvent event)
    {
     
     
    ((Snmp)event.getSource()).cancel(event.getRequest(), this);
     
    str2+=event.getResponse();
    String mano = str2;
    //System.out.println("La chaine traitee = " + mano);
     
    int i = 0;
    int ind1 = 0;
    int ind2 = 0;
    int lgreste = 0;
    int nbrExtract = 0;
     
    ind1 = mano.indexOf("VBS"); // mais est-ce que nous n'avons que VBS ? si non on corrige
    // en ne prenant que la partie de reponse qui commence par le deuxieme ([)
    ind1 = mano.lastIndexOf("["); // on trouve le deuxieme ([) celui de (VBS[) ou de (XXX[)
    if (ind1 > -1) // si oui OK si non >>>>>> erreur de structure
    {
    mano = mano.substring(ind1); // on ne garde que la partie ou on veut extraire
    //System.out.println("La zone d'extraction = " + mano + "\n");
    ind1 = 0;
    ind2 = 0;
     
    //Extraction:
    while (ind1 > -1)
    {
    ind1 = mano.indexOf(";");
    if (ind1 > -1) // si oui OK
    {
    ind2 = mano.indexOf("= ");
    if (ind2 > -1) // si oui OK, si non c'est une erreur de structure
    {
    nbrExtract++;
    res2+=mano.substring(ind2+2, ind1) + "\n";
    //System.out.println("resultat = " + resultat);
    // on supprime la partie qui nous a servi a faire cette extraction
    mano = mano.substring(ind1+1);
    //System.out.println("mano = " + mano);
    }
    }
    }
    // il reste >>>> 1.3.6.1.2.1.1.5.0 = PCS]]
     
    lgreste = mano.length();
    // nous vérifions que mano termine bien par ]]
    if (mano.endsWith("]]"))
    {
    ind2 = mano.indexOf("= ");
    if (ind2 > -1) // si oui OK
    {
    nbrExtract++;
    res2+= mano.substring(ind2+2, lgreste-2);
    //System.out.println(resultat); //"resultat = " + resultat);
    }
    }
    }
    }
    };
        snmp.send(pdu, target, null, listener);
     
       return res2;
        }
     
     
     
    public String uniteAlloc() throws IOException 
     
    {
    Address targetAddress = GenericAddress.parse("udp:127.0.0.1/161");
    TransportMapping transport = new DefaultUdpTransportMapping();
    Snmp snmp = new Snmp(transport);
     
    transport.listen();
     
    CommunityTarget target = new CommunityTarget();
    target.setCommunity(new OctetString("public"));
    target.setAddress(targetAddress);
    target.setRetries(2);
    target.setTimeout(1500);
    target.setVersion(SnmpConstants.version1);
     
    PDU pdu = new PDU();
    pdu.add(new VariableBinding(new OID(new int[] {1,3,6,1,2,1,25,2,3,1,4,1})));//unité allocation
     
    pdu.setType(PDU.GET);
     
    ResponseListener listener = new ResponseListener()
    {
    public void onResponse(ResponseEvent event)
    {
     
     
    ((Snmp)event.getSource()).cancel(event.getRequest(), this);
     
    str3+=event.getResponse();
    String mano = str3;
    //System.out.println("La chaine traitee = " + mano);
     
    int i = 0;
    int ind1 = 0;
    int ind2 = 0;
    int lgreste = 0;
    int nbrExtract = 0;
     
    ind1 = mano.indexOf("VBS"); // mais est-ce que nous n'avons que VBS ? si non on corrige
    // en ne prenant que la partie de reponse qui commence par le deuxieme ([)
    ind1 = mano.lastIndexOf("["); // on trouve le deuxieme ([) celui de (VBS[) ou de (XXX[)
    if (ind1 > -1) // si oui OK si non >>>>>> erreur de structure
    {
    mano = mano.substring(ind1); // on ne garde que la partie ou on veut extraire
    //System.out.println("La zone d'extraction = " + mano + "\n");
    ind1 = 0;
    ind2 = 0;
     
    //Extraction:
    while (ind1 > -1)
    {
    ind1 = mano.indexOf(";");
    if (ind1 > -1) // si oui OK
    {
    ind2 = mano.indexOf("= ");
    if (ind2 > -1) // si oui OK, si non c'est une erreur de structure
    {
    nbrExtract++;
    res3+=mano.substring(ind2+2, ind1) + "\n";
    //System.out.println("resultat = " + resultat);
    // on supprime la partie qui nous a servi a faire cette extraction
    mano = mano.substring(ind1+1);
    //System.out.println("mano = " + mano);
    }
    }
    }
    // il reste >>>> 1.3.6.1.2.1.1.5.0 = PCS]]
     
    lgreste = mano.length();
    // nous vérifions que mano termine bien par ]]
    if (mano.endsWith("]]"))
    {
    ind2 = mano.indexOf("= ");
    if (ind2 > -1) // si oui OK
    {
    nbrExtract++;
    res3+= mano.substring(ind2+2, lgreste-2);
    //System.out.println(resultat); //"resultat = " + resultat);
    }
    }
    }
    }
    };
        snmp.send(pdu, target, null, listener);  
       return res3;
        }  
     
     
    }

    Le main:
    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
     
    package testpackage;
     
    import java.io.IOException;
     
    public class Main {
     
        /** Creates a new instance of Main */
        public Main() {
        }
        public static void Main(String[] args) throws IOException
        {
             test ts =new test();
             String a=ts.tailleDisk();
             String b=ts.uniteAlloc();
             long mon_long1 = Long.parseLong(a);
             long mon_long2 = Long.parseLong(b);
             long c=mon_long1*mon_long2;
     
          }
    }
    La page index.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
     
    <%@page contentType="text/html"%>
    <%@page pageEncoding="UTF-8"%>
    <%@ page import="testpackage.test" %>
     <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>JSP Page</title>
        </head>
        <body>
     
        <h1>JSP Page</h1><br>
            <jsp:useBean id="ts" scope="application" class="testpackage.tata" />
            <jsp:getProperty name="ts" property="ta" />
        </body>
    </html>

    L'éxécution: La 1ère fois est exacte en octets:

    JSP Page

    68565901312


    Lorsque j'actualise plusieurs fois:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    org.apache.jasper.JasperException: For input string: "16739722167397221673972216739722167397221673972216739722167397221673972216739722"
    	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
     
    cause mère

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    on peut voir la 'cause mère' ?

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 42
    Points : 17
    Points
    17
    Par défaut re
    cause mère

    java.lang.NumberFormatException: For input string: "1673972216739722167397221673972216739722"
    java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
    java.lang.Long.parseLong(Long.java:415)
    java.lang.Long.parseLong(Long.java:461)
    testpackage.tata.getTa(tata.java:29)
    org.apache.jsp.index_jsp._jspService(index_jsp.java:70)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
    Lorsque j'actualise plusieurs fois le nombre 16739722 se répète.

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    parce que tu a mis tes string comme champ au lieu d variable locales à tes méthodes, que tu a mis ton bean e application scope et que donc, l'un dans l'autre, t'arrête pas d'ajouter à tes strings.

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 42
    Points : 17
    Points
    17
    Par défaut re
    désolé, j'ai pas compris.

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 42
    Points : 17
    Points
    17
    Par défaut re
    Voilà mon projet tomcat qui peut le tester sur Netbeans 5.5 pour mieux assimiler les erreurs?

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Citation Envoyé par ramzouni Voir le message
    désolé, j'ai pas compris.
    tu réutilise toujours la même instance de test, hors cette classe réutilise toujours elle même les champs str2,str3, res2, res3 -> de fait tu ne fait que rajouter encore et toujours plus de chiffres à ces champs

    solution: convertit tes champs str2, str3 etc. en variable locale de ta méthode, y a pas de raison d'utiliser des variable de champs alors que des variables locales font très bien l'affaire.

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 42
    Points : 17
    Points
    17
    Par défaut re
    Comment je vais les convertir en variables locales??

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 42
    Points : 17
    Points
    17
    Par défaut re
    voilà mon code sur une application normale pas dans jsp:

    Classe test:

    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
     
    package simpledisk;
    import java.io.IOException;
    import org.snmp4j.CommunityTarget;
    import org.snmp4j.PDU;
    import org.snmp4j.Snmp;
    import org.snmp4j.TransportMapping;
    import org.snmp4j.event.ResponseEvent;
    import org.snmp4j.event.ResponseListener;
    import org.snmp4j.mp.SnmpConstants;
    import org.snmp4j.smi.Address;
    import org.snmp4j.smi.GenericAddress;
    import org.snmp4j.smi.OID;
    import org.snmp4j.smi.OctetString;
    import org.snmp4j.smi.VariableBinding;
    import org.snmp4j.transport.DefaultUdpTransportMapping;
     
     
    public class test {
     
         String str2 ="";
         String res2 ="";
         String str3 ="";
         String res3 ="";
         public test()
         {
         }
     
         public String TailleDisk() throws IOException 
     
    {
    Address targetAddress = GenericAddress.parse("udp:127.0.0.1/161");
    TransportMapping transport = new DefaultUdpTransportMapping();
    Snmp snmp = new Snmp(transport);
     
    transport.listen();
     
    CommunityTarget target = new CommunityTarget();
    target.setCommunity(new OctetString("public"));
    target.setAddress(targetAddress);
    target.setRetries(2);
    target.setTimeout(1500);
    target.setVersion(SnmpConstants.version1);
     
    PDU pdu = new PDU();
    pdu.add(new VariableBinding(new OID(new int[] {1,3,6,1,2,1,25,2,3,1,5,1})));//taille C:\
     
    pdu.setType(PDU.GETNEXT);
     
    ResponseListener listener = new ResponseListener()
    {
    public void onResponse(ResponseEvent event)
    {
     
     
    ((Snmp)event.getSource()).cancel(event.getRequest(), this);
     
    str2+=event.getResponse();
    String mano = str2;
    //System.out.println("La chaine traitee = " + mano);
     
    int i = 0;
    int ind1 = 0;
    int ind2 = 0;
    int lgreste = 0;
    int nbrExtract = 0;
     
    ind1 = mano.indexOf("VBS"); // mais est-ce que nous n'avons que VBS ? si non on corrige
    // en ne prenant que la partie de reponse qui commence par le deuxieme ([)
    ind1 = mano.lastIndexOf("["); // on trouve le deuxieme ([) celui de (VBS[) ou de (XXX[)
    if (ind1 > -1) // si oui OK si non >>>>>> erreur de structure
    {
    mano = mano.substring(ind1); // on ne garde que la partie ou on veut extraire
    //System.out.println("La zone d'extraction = " + mano + "\n");
    ind1 = 0;
    ind2 = 0;
     
    //Extraction:
    while (ind1 > -1)
    {
    ind1 = mano.indexOf(";");
    if (ind1 > -1) // si oui OK
    {
    ind2 = mano.indexOf("= ");
    if (ind2 > -1) // si oui OK, si non c'est une erreur de structure
    {
    nbrExtract++;
    res2+=mano.substring(ind2+2, ind1) + "\n";
    //System.out.println("resultat = " + resultat);
    // on supprime la partie qui nous a servi a faire cette extraction
    mano = mano.substring(ind1+1);
    //System.out.println("mano = " + mano);
    }
    }
    }
    // il reste >>>> 1.3.6.1.2.1.1.5.0 = PCS]]
     
    lgreste = mano.length();
    // nous vérifions que mano termine bien par ]]
    if (mano.endsWith("]]"))
    {
    ind2 = mano.indexOf("= ");
    if (ind2 > -1) // si oui OK
    {
    nbrExtract++;
    res2+= mano.substring(ind2+2, lgreste-2);
    //System.out.println(resultat); //"resultat = " + resultat);
    }
    }
    }
    }
    };
        snmp.send(pdu, target, null, listener);
     
       return res2;
        }
      }

    Le main:

    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
    package simpledisk;
     
    import java.io.IOException;
    public class Main {
     
        public Main() {
        }
     
     
        public static void main(String[] args) throws IOException {
     
            test ts=new test();
     
            System.out.println(ts.TailleDisk());
        }
     
    }
    Il ne m'affiche pas le résultat.

  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Citation Envoyé par ramzouni Voir le message
    Comment je vais les convertir en variables locales??
    En les faisant descendre dans la méthode , le b-a-ba du language java que t'es supposé maitriser avant d'attaquer les jsp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class MaClasse {
        String a;  // ceci est un champ
        public void maMethode(){
           String b;   // ceci est une variable locale à 'maMethode', a toi de jouer
        }
    }

Discussions similaires

  1. Réponses: 6
    Dernier message: 14/02/2007, 22h08
  2. Des " dans une variable de type String
    Par 4lkaline dans le forum Langage
    Réponses: 6
    Dernier message: 06/11/2006, 15h20
  3. convertir une variable de type String en Number
    Par lilbrother974 dans le forum Flash
    Réponses: 13
    Dernier message: 06/09/2006, 09h28
  4. [JSTL] Récupérer une variable du style <%String bob = "bobby"%>
    Par nickoshiba dans le forum Taglibs
    Réponses: 2
    Dernier message: 15/03/2005, 09h50
  5. Ajouter a une variable de type string, un entier
    Par Little-Freud dans le forum SL & STL
    Réponses: 12
    Dernier message: 05/03/2005, 20h33

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