Avatar billede madsokist Nybegynder
17. april 2001 - 11:09 Der er 48 kommentarer og
2 løsninger

Arkivering

Jeg har behov for at hente/gemme en række variable i en fil.

Jeg har kigget på .jar filer men jeg er i tviv om hvodan man bruger dem.

1) Hvordan oprettes en .jar fil
2) Hvordan henter man fra en .jar fil
3) Hvordan skriver jeg til en .jar fil

4) Er jar filer det rette valg :)???
Madsokist
Avatar billede Slettet bruger
17. april 2001 - 11:11 #1
Du slipper billigere, hvis du opretter en java.util.Properties.

Denne klasse har håndtag til at læse og skrive sig selv ned i en fil.
Avatar billede madsokist Nybegynder
17. april 2001 - 11:12 #2
har du et eksempel?
Avatar billede disky Nybegynder
17. april 2001 - 11:22 #3
Her kan du se den klasse jeg bruger til at loade Properties med, den gemmer dem i en hasmap for at de ikke skal loades næste gang de skal bruges, bliver anvendt sammen med JSP

/*
* Settings.java
*
* Created on 25. marts 2001, 21:41
*/

package disky.property;

import java.util.*;
import java.io.*;


/*
* Denne klasse er grund klassen der loader og håndterer Properties
* Man nedarver denne klasse for at tilpasse paths osv.
*/

/**
*
* @author  administrator
* @version
*/
public class PropertyLoader
{
    protected static final Locale defaultLocale=new Locale(\"en\",\"US\");
    static final String keyNotFound=\"Sorry property value does not exist\";
   
    static private HashMap properties=new HashMap();
   
    private static ResourceBundle loadProperties(String name,Locale locale)
    {
        System.out.println(\"loadingProperties(\"+name+\", \"+locale+\")\");
       
        try
        {
            ResourceBundle res=ResourceBundle.getBundle(name, locale);
//            System.out.println(\"name = \"+name);
            Locale loc=res.getLocale();

            properties.put(name+locale.getLanguage()+locale.getVariant(),res);
            return res;
        }
        catch (MissingResourceException e)
        {
            e.printStackTrace(System.out);
            return null;
        }
    }

    private static ResourceBundle getResource(String name, Locale locale)
    {
        if(properties.containsKey(name+locale.getLanguage()+locale.getVariant()))
        {
            return (ResourceBundle)properties.get(name+locale.getLanguage()+locale.getVariant());
        }
        return loadProperties(name,locale);
    }
   
    protected static String get(String name, String key, Locale locale)
    {
//        System.out.println(\"name  = \"+name);
//        System.out.println(\"key    = \"+key);
//        System.out.println(\"locale = \"+locale);
       
        ResourceBundle res=getResource(name, locale);
        if(res==null)
        {
            res=getResource(name, locale);
        }

        try
        {
            String value=res.getString(key);
            //if key does not exist then exception is called
            return value;
        }
        catch (MissingResourceException e)
        {
        }
        return keyNotFound;
    }
}



Men du kan også gemme dem i en alm. text fil. En jar fil er jo fil nogenlunde ligesom .zip
Avatar billede madsokist Nybegynder
17. april 2001 - 11:33 #4
Det ser lidt kompliceret ud..

nedenstående kode indlæser indholdet af en txt fil, men er der en \"find(\'hej\')\" metode der henter en bestemt tekststreng eller lign. Jeg tror at den klasse du har er lidt overkill for mig.

      FileInputStream inStream = new FileInputStream(\"statix.txt\");
        int inBytes = inStream.available();
      byte inBuf[] = new byte[inBytes];
      int bytesread = inStream.read(inBuf,0,inBytes);
      inStream.close();
Avatar billede disky Nybegynder
17. april 2001 - 11:34 #5
brug en tokenstream istedet og adskil dine data med f.eks. \',\' Så deler Java det selv op for dig (næsten)
Avatar billede disky Nybegynder
17. april 2001 - 11:35 #6
At ovenstående ser stort ud skyldes at jeg forsøger at lave det så objectorienteret korrekt som muligt, og samtidigt generelt, så det kan anvendes i mange projekter.
Avatar billede Slettet bruger
17. april 2001 - 11:39 #7
Programstumpen

// Lav en Properties med to poster
java.util.Properties props=new java.util.Properties();
props.put(\"variabel1\",\"værdi1\");
props.put(\"variabel2\",\"værdi2\");
System.out.println(\"-- Indhold af props1 --\");
props.list(System.out);
java.io.FileOutputStream fo=new java.io.FileOutputStream(\"C:\\\\value.txt\");
props.save(fo,\"header\");


// Læs filen der lige er lavet ind i en anden Properties-instans
java.util.Properties props2=new java.util.Properties();
props2.load(new java.io.FileInputStream(\"C:\\\\value.txt\"));
java.util.Enumeration e=props2.keys();
System.out.println(\"-- Indhold af props2 --\");
while (e.hasMoreElements()) {
    String nøgle=(String)e.nextElement();
    String værdi=(String)props2.getProperty(nøgle);
    System.out.println(nøgle+\"=\"+værdi);
}


Giver output:

-- Indhold af props1 --
-- listing properties --
variabel2=værdi2
variabel1=værdi1
-- Indhold af props2 --
variabel2=værdi2
variabel1=værdi1


Det er vist rigeligt, til at du kan komme igang.
Avatar billede disky Nybegynder
17. april 2001 - 11:42 #8
Og hvis du så importerer java.util.* og java.io.*
slipper du for at skulle skrive java.util. og java.io foran de steder hvor de bruges. (giver pænere kode)
Avatar billede Slettet bruger
17. april 2001 - 11:50 #9
disky --> Helt ærligt, tror du jeg er idiot?
Avatar billede madsokist Nybegynder
17. april 2001 - 11:51 #10
tak til jer begge... kan jeg fordele pointsne mellem jer? Eller skal de gives til en person?
Avatar billede Slettet bruger
17. april 2001 - 11:53 #11
Jeg synes disky\'s løsning er overkill.

Men hvis du vil bruge diskys svar, skal du selvfølgelig give ham halvdelen.
Avatar billede madsokist Nybegynder
17. april 2001 - 11:57 #12
Jeg kan godt lide at diskys løsning kan genbruges i et andet projekt og jeg har snuppet koden hehe.... Desværre er jeg selv temmelig uerfaren med JSP (endnu) og går lige nu og her efter den lette løsning.

Tak for din løsning...
Avatar billede disky Nybegynder
17. april 2001 - 12:04 #13
joern_h: hvorfor er det overkill at lave det objectorienteret korrekt ?

Når jeg nu arbejde som konsulent skal det netop være lavet ordentligt, og ikke bare en løsning der er klyttet sammen.

Din løsning ville f.eks. totalt stresse en JSP server, hvis mange brugere samtidigt skulle have hentet nogle properties, hvorimod min gemmer dem statisk i hukommelsen. Tro mig det gør en stor forskel på store sites.
Avatar billede Slettet bruger
17. april 2001 - 12:31 #14
disky --> Du har ret! Det er sørme en god ide at anvende de rette værktøjer til de rigtige opgaver!

Det er godt man har konsulenter! Hvad skulle vi da gøre, hvis alle bare klyttede noget sammen.

Men problemformuleringen indeholder intet om at løsningen skal køre på en webserver. Ej heller noget om at værdierne skal kunne gemmes i alle mulige og umulige sprogvarianter.

Din løsning er en typisk konsulent-løsning: Tag noget gammelt kode, udviklet til et andet formål og send det afsted, så man kan snuppe nogen billige point. At modtageren så ikke har forudsætninger for at læse din kode er vel underordnet. Bare du kan skrive *objektorienteret*, så går det nok.
Avatar billede disky Nybegynder
17. april 2001 - 12:39 #15
Når du engang lærer at programmere kan vi snakke om det.

Det er tydeligt du ikke har lært om fornuftigt software udvikling. Man kan tydeligt høre du ikke har lært om kode genbrug som er det eneste rigtige, man opfinder jo heller ikke den dybe tallerken 2 gange vel, man vasker bare den gamle.

Det er korrekt han ikke skrev den skulle kunne alt dette, men han bad om et eksempel og det fik han, som han selv skrev tog han al koden til senere brug.

Men som sagt kom igen når du har lært at programmere og lært software udvikling på andet en newbie niveau.

Det der viser om en software udvikler er dygtig er netop at koden er generel så den kan anvendes igen og igen, uden at man skal starte helt forfra hver gang.

Angående det med point, se lige hvor mange jeg har i forhold til dig, og lær ud fra det.
Avatar billede Slettet bruger
17. april 2001 - 12:43 #16
disky --> Jeg bøjer mig i støvet. Det er imponerende at en travl konsulent som dig har tid til at svare på Eksperten-spørgsmål.

Men det vel fordi dine svar gør brug af genbrug?
Avatar billede disky Nybegynder
17. april 2001 - 12:46 #17
Hvad er dit problem ??

Kan du ikke klare kritik, det var ligesom dig der begyndte med at min skulle være overkill.
Kunne du ikke klare du ikke fik alle points ?

Nej jeg genbruger ikke mine svar, tværtimod svarer jeg individuelt på dem.
Men når folk beder om eksempler får de dette, og har jeg lavet tingene i forvejen bruger jeg selvfølgelig et af dem.

Og hvordan kan du udtale dig om jeg har travlt eller lignende ?
Avatar billede madsokist Nybegynder
18. april 2001 - 11:57 #18
Jeg vil have en funktion der tilføjer en property til de eksisterende.. Denne funktion overskirver blot de eksisterende. Hvad er det der går galt?

  public boolean setVar(String varName, String varValue)
  {
    Properties props=new Properties();
    Properties props2=new Properties();
    try
    {
      props2.load(new FileInputStream(\"value.txt\"));
      Enumeration e=props2.keys();
      while (e.hasMoreElements())
      {
        String nøgle=(String)e.nextElement();
        String værdi=(String)props2.getProperty(nøgle);
        props.put(nøgle,værdi);
      }
      props.put(varName,varValue);
      FileOutputStream fo = new FileOutputStream(\"value.txt\");
      props.save(fo,\"header\");
    } catch (Exception tmp){return false;}
    return false;
  }
Avatar billede madsokist Nybegynder
18. april 2001 - 11:58 #19
props.put inde i while løkken gemmer blot oveni.. Kan den kun indeholde en property ad gangen?
Avatar billede disky Nybegynder
18. april 2001 - 12:35 #20
Loader den ikke de gamle props og gemmer dem i samme fil igen ?

p.s. det er MEGET grim programmering af fange en \'Exception\' du skulle hellere fange dem en efter en
Avatar billede madsokist Nybegynder
18. april 2001 - 12:41 #21
Det var meningen at den skulle hente de gamle props og tilføje en ny.. Jeg har bøvlet med at finde en metode der ikke overskrev de gamle, men det er ikke lykkedes mig.

hvad mener du med at jeg skulle fange exceptions en efter en? eller rettere hvordan?
Avatar billede disky Nybegynder
18. april 2001 - 12:43 #22
  public boolean setVar(String varName, String varValue)
  {
    Properties props=new Properties();
    Properties props2=new Properties();
    try
    {
      props2.load(new FileInputStream(\"value.txt\"));
      Enumeration e=props2.keys();
      while (e.hasMoreElements())
      {
        String nøgle=(String)e.nextElement();
        String værdi=(String)props2.getProperty(nøgle);
        props.put(nøgle,værdi);
      }



      props.put(varName,varValue);
//her skal du props.put() de nye værdier


      FileOutputStream fo = new FileOutputStream(\"value.txt\");
      props.save(fo,\"header\");
    } catch (Exception tmp){return false;}
    return false;
  }


jeg mener at du f.eks. har

catch (FileNotFoundException e)
{

}
catch (IOException e)
{

}

Så kan du nemlig bedre fortælle dig selv hvad og hvor det går galt.
Avatar billede madsokist Nybegynder
18. april 2001 - 13:02 #23
Mange Tak :),
Jeg skal nok huske at give dig nogle flere points næste gang du svarer på et af mine spørgsmål...

Ved at fange de exceptions, der opnår du at fange evt. undtagelser og handle derefter... Right?

Jeg leder efter et godt JSP/JAVA kursus. Er der nogle du vil anbefale. Jeg kunne godt bruge lidt mere viden om java.

Madsokist
Avatar billede disky Nybegynder
18. april 2001 - 13:07 #24
det med exceptions er helt korrekt.

Nogle exceptions skal man forsøge at fange ellers vil programmet slet ikke compile, andre er mere friviligt.


jeg kan desværre ikke hjælpe dig med et kursus, men hvis du har ICQ er du altid velkommen til at kontakte mig.

Bruger du ICQ ?
Avatar billede madsokist Nybegynder
18. april 2001 - 14:01 #25
Jeg skal til det.. Jeg har tidligere brugt det. Hvis du gider høre på mine (endeløse) spørgsmål, så vil det da være herligt for mig at kunne stille dem direkte til dig. Det lader jo til at du kender de fleste af svarene.

Avatar billede disky Nybegynder
18. april 2001 - 14:02 #26
du skal være velkommen mit nummer er #1413069 :-)
Avatar billede madsokist Nybegynder
18. april 2001 - 14:04 #27
Når kommer hjem fra arbejde, vil jeg registrere mig hos ICQ. Så får du mit nummer.

TAKKER! :)
Avatar billede disky Nybegynder
18. april 2001 - 14:04 #28
fint fint
Avatar billede madsokist Nybegynder
18. april 2001 - 16:58 #29
Det nedenstående driller mig. Jeg vil aflæse om en given key allerede eksisterer for at tælle værdien op.

Den finder aldrig nøgler...if (props2.containsKey(key)) giver altid false som det ser ud nu


  public boolean setVar(String varName, String varValue)
  {
    Properties props=new Properties();
    Properties props2=new Properties();
    try
    {
      props2.load(new FileInputStream(\"value.txt\"));
      Enumeration e=props2.keys();
      while (e.hasMoreElements())
      {
        String key=(String)e.nextElement();
        String value=(String)props2.getProperty(key);
        if (props2.containsKey(key))
        {
          int tmpval = Integer.parseInt(props.getProperty(key));
          tmpval++;
          props.put(key,String.valueOf(tmpval));
        } else {
            props.put(key,value);
        }
      }
      props.put(varName,varValue);
      FileOutputStream fo = new FileOutputStream(\"value.txt\");
      props.save(fo,\"header\");
    }
    catch (FileNotFoundException e)
    {    }
    catch (IOException e)
    {    } 
    return true;
  }
Avatar billede madsokist Nybegynder
18. april 2001 - 17:12 #30
Hovsa.. det passer ikke. den er altid true.. men der sker ikke det jeg ønsker skal ske.

Træls
Avatar billede madsokist Nybegynder
18. april 2001 - 17:15 #31
Det er noget i linjen

int tmpval = Integer.parseInt(props2.getProperty(key));
Avatar billede disky Nybegynder
19. april 2001 - 08:21 #32
Hmmm mystisk det ser umiddelbart rigtigt ud
Avatar billede madsokist Nybegynder
19. april 2001 - 09:05 #33
Det følgende virker... den tæller godt nok op med 2 i stedet for en.. men det finder jeg nok ud af.

  public boolean setVar(String varName, String varValue)
  {
    Properties props=new Properties();
    Properties props2=new Properties();
    try
    {
      props2.load(new FileInputStream(\"value.txt\"));
      Enumeration e=props2.keys();
      while (e.hasMoreElements())
      {
        String key=(String)e.nextElement();
        String value=(String)props2.getProperty(key);
        int tmpval = Integer.parseInt(props2.getProperty(key));
        tmpval++;
        props.put(key,String.valueOf(tmpval));
      }
      props.put(varName,varValue);
      FileOutputStream fo = new FileOutputStream(\"value.txt\");
      props.save(fo,\"header\");
    }
    catch (FileNotFoundException e)
    { System.out.println(\"File Not found exception\"); }
    catch (IOException e)
    { System.out.println(\"IO exception\"); } 
    catch (NumberFormatException e)
    { System.out.println(\"Number format exception\"); }
    return true;
  }
Avatar billede madsokist Nybegynder
19. april 2001 - 11:32 #34
det er nu en gåde.. jeg har brugt to timer og en autoriseret JSP mand.. Hvorfor tæller nedenstående op med 2 i stedet for 1. Ellers virker det fint.

  //skal indlæse de eksisterende properties og tilføje en ny
  public boolean setVar(String varName, String varValue)
  {
    Properties props=new Properties();
    try
    {
      props.load(new FileInputStream(\"value.txt\"));
        if (props.containsKey(varName + varValue))
      {
        int tmpval = Integer.parseInt(props.getProperty(varName + varValue)) + 1;
        props.setProperty(varName + varValue,String.valueOf(tmpval));
      } else props.setProperty(varName + varValue,\"1\");
    } catch (NumberFormatException e) { System.out.println(\"Number format exception\"); }
      catch (IOException e) { System.out.println(\"IO exception\"); } 
    try
    {
      FileOutputStream fo = new FileOutputStream(\"value.txt\");
      props.save(fo,\"header\");
    } catch (FileNotFoundException e) { System.out.println(\"File Not found exception\"); }
    return true;
  }
Avatar billede disky Nybegynder
19. april 2001 - 11:49 #35
Først hvorfor gør du følgende ?
varName + varValue ?? så ændre navnet sig på keyen hele tiden.

Følgende virker som det skal (tror jeg)
Den tæller kun 1 op ad gangen:
/*
* Tester.java
*
* Created on 19. april 2001, 11:41
*/

import java.util.*;
import java.io.*;
/**
*
* @author  reinke
* @version
*/
public class Tester extends java.lang.Object
{
   
    /** Creates new Tester */
    public Tester()
    {
    }
   
    public static void main(String args[])
    {
        Tester t=new Tester();
       
        t.setVar(\"test\",\"2\");   
    }
   
    public boolean setVar(String varName, String varValue)
    {
        Properties props=new Properties();
        try
        {
            props.load(new FileInputStream(\"d:\\\\value.txt.properties\"));
            if (props.containsKey(varName))
            {
                String temp=props.getProperty(varName);
                int tmpval = Integer.parseInt(temp) + 1;
                props.setProperty(varName,String.valueOf(tmpval));
            }
            else
            {
                props.setProperty(varName,\"1\");
            }
            FileOutputStream fo = new FileOutputStream(\"d:\\\\value.txt.properties\");
            props.save(fo,\"header\");
        }
        catch (NumberFormatException e)
        {
            System.out.println(\"Number format exception\");
        }
        catch (FileNotFoundException e)
        {
            System.out.println(\"File Not found exception\");
        }
        catch (IOException e)
        {
            System.out.println(\"IO exception\");
        }
        return true;
    }
}
Avatar billede disky Nybegynder
19. april 2001 - 11:50 #36
forresten jeg har lagt alle dine exceptions in i en try/catch :-)
Avatar billede madsokist Nybegynder
19. april 2001 - 12:52 #37
VarName + varValue er noget der er overlevet fra den oprindelige tanke. Der er ikke behov for den ene af dem. Tænk ikke på dem.

Jeg kopierede din funktion setVar, men den tæller stadig op med 2.

klasse erklæringen:
public class Tester extends java.lang.Object

kan jeg ikke lave:
public is not a valid modifier for a local inner class

så jeg fjernede public
Avatar billede madsokist Nybegynder
19. april 2001 - 12:53 #38
klassen i sin helhed:

class FileOptions  extends java.lang.Object
{
    public FileOptions()
    {
    }

  //skal indlæse de eksisterende properties og tilføje en ny
  public boolean setVar(String varName, String varValue)
    {
        Properties props=new Properties();
        try
        {
            props.load(new FileInputStream(\"value.txt\"));
            if (props.containsKey(varName))
            {
                String temp=props.getProperty(varName);
                int tmpval = Integer.parseInt(temp) + 1;
                props.setProperty(varName,String.valueOf(tmpval));
            }
            else
            {
                props.setProperty(varName,\"1\");
            }
            FileOutputStream fo = new FileOutputStream(\"value.txt\");
            props.save(fo,\"header\");
        }
        catch (NumberFormatException e)
        {
            System.out.println(\"Number format exception\");
        }
        catch (FileNotFoundException e)
        {
            System.out.println(\"File Not found exception\");
        }
        catch (IOException e)
        {
            System.out.println(\"IO exception\");
        }
        return true;
    }
}
Avatar billede disky Nybegynder
19. april 2001 - 12:54 #39
hvad ?

Jeg har kørt og kompilet det program med Forte sammen med Jdk1.3

Hvilken version bruger du ?
Og den tæller altså kun op med 1.

Er du sikker på du ikke kalder den 2 gange ?
Avatar billede madsokist Nybegynder
19. april 2001 - 12:54 #40
setVar kaldes ikke fra en løkke eller lign. Fejlen ser ud til at opstå i funktionen.
Avatar billede disky Nybegynder
19. april 2001 - 12:55 #41
har lige kørt programmet 3 gange, og værdien er talt korrekt op med 3
Avatar billede madsokist Nybegynder
19. april 2001 - 13:00 #42
Tricky...

Egentlig kører det udemærket, hvis man ser bort fra +2..

Jeg bliver nødt til at gå videre, så jeg dividerer med 2 når jeg skal bruge den en property...

en lidt.... sær løsning, men det virker!
:)
Avatar billede disky Nybegynder
19. april 2001 - 13:00 #43
hvordan kalder du den setVar ??

Er det fra en JSP side ? hvis ja post den lige
Avatar billede madsokist Nybegynder
19. april 2001 - 13:02 #44
Her er hele molevitten:

<%@ page  language = \"java\"
          extends  = \"dk.bonnier.bwp.util.BwpUserServlet\"
          import    = \"java.util.*,
                      java.io.*,
                        java.io.FileInputStream,
                      java.io.FileNotFoundException,
                      java.io.FileOutputStream,
                      dk.bonnier.bwp.databaseservice.selectexerciseservice.entity.*,
                      com.polopoly.cm.jsp.*,
                      com.polopoly.cm.core.*,
                      com.polopoly.user.server.*,
                      com.polopoly.user.server.jsp.*,
                      dk.bonnier.bwp.beans.pao.*,
                      dk.bonnier.bwp.util.*,
                      dk.bonnier.bwp.bwpAPI.*,
                      dk.bonnier.bwp.databaseservice.emailqueueservice.entity.*,
                      dk.bonnier.bwp.databaseservice.emailqueueservice.serviceinterface.*,
                      java.rmi.*,
                      javax.ejb.*\"
      errorPage =  \"../../../Shared/Error.jsp\"
%>

<%

/*
      Enumeration e=props2.keys();
      while (e.hasMoreElements())
      {
        String key=(String)e.nextElement();
        String value=(String)props2.getProperty(key);
        if (props2.containsKey(key))
        {
          int tmpval = Integer.parseInt(props2.getProperty(key)) + 1;
          props.put(key,String.valueOf(tmpval));
        }
      }
*/



class FileOptions  extends java.lang.Object
{
    public FileOptions()
    {
    }

  //skal indlæse de eksisterende properties og tilføje en ny
  public boolean setVar(String varName, String varValue)
    {
        Properties props=new Properties();
        try
        {
            props.load(new FileInputStream(\"value.txt\"));
            if (props.containsKey(varName))
            {
                String temp=props.getProperty(varName);
                int tmpval = Integer.parseInt(temp) + 1;
                props.setProperty(varName,String.valueOf(tmpval));
            }
            else
            {
                props.setProperty(varName,\"1\");
            }
            FileOutputStream fo = new FileOutputStream(\"value.txt\");
            props.save(fo,\"header\");
        }
        catch (NumberFormatException e)
        {
            System.out.println(\"Number format exception\");
        }
        catch (FileNotFoundException e)
        {
            System.out.println(\"File Not found exception\");
        }
        catch (IOException e)
        {
            System.out.println(\"IO exception\");
        }
        return true;
    }

  //skal indlæse de eksisterende properties og tilføje en ny
  public String getVar(String varName, String varValue)
  {
    Properties props=new Properties();
    try
    {
      props.load(new FileInputStream(\"value.txt\"));
        return props.getProperty(varName + varValue);
    }
    catch (FileNotFoundException e)
    { System.out.println(\"File Not found exception\"); }
    catch (IOException e)
    { System.out.println(\"IO exception\"); } 
    return null;
  }
 
  public ArrayList getVars()
  {
    Properties props=new Properties();
    ArrayList res = new ArrayList();
    try
    {
      props.load(new FileInputStream(\"value.txt\"));
      Enumeration e=props.keys();
      while (e.hasMoreElements())
      {
        String key=(String)e.nextElement();
        res.add(props.getProperty(key));
      }
      return res;
    }
    catch (FileNotFoundException e)
    { System.out.println(\"File Not found exception\"); }
    catch (IOException e)
    { System.out.println(\"IO exception\"); } 
    return null;
  }
}

  // constants
    String TEXT1  = \"elementnummer\";
    String TEXT2  = \"last\";
    String TEXT3  = \"headline\";
    String TEXT4  = \"manchet\";
    String TEXT5  = \"headpic\";
    String TEXT6  = \"picplace\";
    String TEXT7  = \"visning\";

    // Get request parameters
    String formText1 = request.getParameter(TEXT1);
    String formText2 = request.getParameter(TEXT2);
    String formText3 = request.getParameter(TEXT3);
    String formText4 = request.getParameter(TEXT4);
    String formText5 = request.getParameter(TEXT5);
    String formText6 = request.getParameter(TEXT6);
    String formText7 = request.getParameter(TEXT7);

    // Get Article object
    CMUtil cmUtil        = initPage(pageContext);
    Integer articleId    = CMUtil.toInteger(cmUtil.findAttribute(\"articleId\"));
    Article article      = cmUtil.publication.getArticle(articleId.intValue());

    // Get parameters from article
    String text1        = article.getComponentValue(TEXT1);//element nummer
    String text2        = article.getComponentValue(TEXT2);//er det sidste element - boolean værdi
    String text3        = article.getComponentValue(TEXT3);//overskrift
    String text4        = article.getComponentValue(TEXT4);//manchet
    String text5        = article.getComponentValue(TEXT5);//billede URL
    String text6        = article.getComponentValue(TEXT6);//placering af billede
    String text7        = article.getComponentValue(TEXT7);//type af visning
    String tmpNoExternal = article.getComponentValue(\"last\"); //Sidste element i formen?
    boolean last = true;
      if (\"true\".equals(tmpNoExternal)) last = false; else last = true;
%>

<%

int tmpname = Integer.parseInt(text1);
if (tmpname == 1) out.println(\"<table border=\'0\' cellpadding=\'0\' cellspacing=\'0\' bgcolor=\'#ebeff3\'>\");

out.println(\"<tr><td bgcolor=\'#a4c5e5\' width=\'1\'><td width=\'50\'></td></td><td></td><td bgcolor=\'#a4c5e5\' width=\'1\'></td><td width=\'3\'></td></tr>\");
if (tmpname == 1) out.println(\"<tr><td colspan=\'5\'><IMG height=50 alt=Guide src=\" + Constants.IMAGE_PATH + \"/kalkulator/guide_393_top.gif width=393 border=0></td></tr>\");

out.println(\"<tr><td bgcolor=\'#a4c5e5\'></td><td></td><td>\");
if (text3 != null && (text3.length()>0)) out.println(\"<h2 CLASS=\'head2\'>\" + text3 + \"</h2>\");
if (text5 != null && (text5.length()>0)) out.println(\"<img src=\'\" + Constants.IMAGE_PATH + \"/\" + text5 + \"\' align=\'\" + text6 + \"\'><p>\");
if (text4 != null && (text4.length()>0)) out.println(\"<b>\" + text4 + \"</b><br><br>\");
out.println(\"</td><td bgcolor=\'#a4c5e5\'></td><td></td></tr>\");

if (text1 != null)
{
  if (text7.equals(\"integer\")){}

  if (text7.equals(\"poles\")){}

  if (text7.equals(\"percent\")){}
}

if (!last) out.println(\"<tr><td colspan=\'5\'><IMG height=23 alt=Guide src=\" + Constants.IMAGE_PATH + \"/kalkulator/dit_personlige_393_bund.gif width=393 border=0></td></tr>\");
if (!last) out.println(\"</table>\");

    //Get parameters from form
    FileOptions handler = new FileOptions();

    java.util.Enumeration enum = request.getParameterNames();
    String param = null;
    String[] values = null;
    while( enum.hasMoreElements() )
    {
      param = ( String )enum.nextElement();
        out.println(\" Parameter: \" + param + \"<br>values: \");
      values = request.getParameterValues( param );
      if(values.length == 0)
      {
        out.println( request.getParameter( param ) + \"<br>\" );
      } else {
        for( int i = 0; i < values.length; i++ )
        {
          out.println( values[i] + \"<br>\" );
//          handler.setVar( param , values[i] );
        }
    }
}

  handler.setVar( \"hej\" , \"ziggy\" );

%>


Avatar billede madsokist Nybegynder
19. april 2001 - 13:16 #45
Både klasse erklæring og jsp ligger i en .jsp.

Her kommer dagens dumme spørgsmål:
Giver det problemer?
Avatar billede disky Nybegynder
19. april 2001 - 13:27 #46
puha aner jeg ikke har aldrig prøvet jeg har altid tingene adskilt.

Og bruger klassen som var det en Bean.

forresten er det undskyld jeg siger det meget grimt at du outputter html på den måde du gør.
Avatar billede madsokist Nybegynder
19. april 2001 - 13:35 #47
Det er ok :) jeg er i en læringsproces.

Jeg antager at du tænker på at jeg skulle gøre noget i retning af:

<% ..jsp.. { %>
<HTML>
<% } ..jsp.. %>

I stedet for. Eller hvordan burde det se ud?
Avatar billede disky Nybegynder
19. april 2001 - 13:36 #48
lige netop :)

Og hvis det skal være rigtigt smukt så har du næsten kun funktions kald i JSP siderne, resten ligger i java klasser bagved :)

Men det ovenstående kan jeg altså ikke lige se hvad der er galt med, jeg tror at setVar() bliver kaldt 2 gange, men har ikke lige fundet hvorfor
Avatar billede madsokist Nybegynder
24. april 2001 - 13:53 #49
Hejsa disky ... jeg bruger lige det her forum til at stille dig et spørgsmål igen.

Jeg har en bekendt der lige har spurgt om jeg var interesseret i en freelanceopgave omhandlende en oracle database..

Er du interesseret?
Avatar billede disky Nybegynder
24. april 2001 - 13:54 #50
puha umiddelbart ja, men jeg skal have noget mere info.

Kontakt mig enten på ICQ #1413069

eller disky@disky-design.dk
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester