Avatar billede mik28 Seniormester
08. august 2001 - 09:46 Der er 25 kommentarer og
1 løsning

Servlets --> opdatering af en session

Er der nogen som har nogle gode eksempler på hvordan man let redigerer en session. Problemet ligger i at slette ting i sessionen. Findes der en metode?
Avatar billede disky Nybegynder
08. august 2001 - 09:47 #1
hvad er det for ting du vil slette i en session ?

Er det selve session, eller nogle variabler den indeholder ?
Avatar billede mik28 Seniormester
08. august 2001 - 09:50 #2
det er variabler (i forbindelse med en indkøbsvogn)
Avatar billede mik28 Seniormester
08. august 2001 - 09:51 #3
det er variabler (i forbindelse med en indkøbsvogn)
Avatar billede disky Nybegynder
08. august 2001 - 09:52 #4
du kan bare sætte dem til null, eller 0

Hver bruger har deres eget \'session object\' og inde i det object kan du bare lave nogle metoder der kan nulstille tingene
Avatar billede disky Nybegynder
08. august 2001 - 09:54 #5
mere specifikt, kalder du getAttribute() og setAttribute() på dit ServletRequest object.
Avatar billede mik28 Seniormester
08. august 2001 - 09:57 #6
hvis du går ind på http://mikmak.dyndns.dk:8080/shop kan du se problemet. Man kan godt ligge vare i vognen men ikke opdaterer den.
Avatar billede disky Nybegynder
08. august 2001 - 10:02 #7
undskyld jeg siger det, men siden er meget meget langsom.

Du anvender vel ikke tomcat ?

Et tip, brug JSP ovenpå servlets det er noget nemmere.


Jeg kan godt se den ikke kan opdatere.

Må jeg lige se koden som du kalder hvis man f.eks. siger man ønsker 2 stk. af en vare istedet for 1, og så trykker opdater
Avatar billede mik28 Seniormester
08. august 2001 - 10:06 #8
Jo det er Tomcat. Er det noget ged *LOL*
Avatar billede disky Nybegynder
08. august 2001 - 10:07 #9
tomcat, er hamrende langsom :(

Personligt anvender jeg Resin fra www.caucho.com den er temmeligt meget hurtigere :) (og mere stabil)
Avatar billede mik28 Seniormester
08. august 2001 - 10:08 #10
import java.awt.*;
import java.awt.event.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class Butiksvogn extends HttpServlet
{
    public void doPost(HttpServletRequest req, HttpServletResponse rep) throws
    ServletException, IOException
    {
       
        HttpSession session = req.getSession(true);
        //String res;
       
        Integer antalVarer = (Integer) session.getAttribute(\"antalVarer\");
       
        if(antalVarer == null)
        {
        antalVarer = new Integer(0);   
        }   
        PrintWriter out = rep.getWriter();
        rep.setContentType(\"text/html\");
       
        String[] itemsSelected;
        String itemName;
        itemsSelected = req.getParameterValues(\"VARER\");
    //    System.out.println(\"INIT antal \" + antalVarer );
       
        System.out.println(\"OK ooooooooooooo\");
   
        String slet = req.getParameter(\"slet\");
       
   
    //    String slet = \"ON\";
       
        for(int i=0; i<itemsSelected.length;i++)
            {System.out.println(\"OK iiiiiiiiii\");
                System.out.println(\"hej med dig\");
                if (slet == \"ON\" )
                {
            //      itemName.remove(slet);
                  System.out.println(\"OK !!!!!!!!\"+ slet);
                  out.println(\"DGHDGH\");
                  System.out.println(\"hej med dig igen\");
                }
            }
       
               
       
        if(itemsSelected != null)
        {
        for(int i=0; i<itemsSelected.length;i++)
            {
                itemName = itemsSelected[i];
                antalVarer = new Integer(antalVarer.intValue() + 1);
               
                session.setAttribute(\"Vare\" + antalVarer, itemName);
                session.setAttribute(\"antalVarer\", antalVarer);   
                System.out.println(antalVarer);
            }   
           
        }
       
       
        out.println(\"<html><head><title>Vogn</title><LINK href=\'C:/tomcat/webapps/lars/main.css\' rel=stylesheet></head><BODY bgcolor=\'#ffffff\'>\");
        out.println(\"<FORM METHOD = \'POST\' NAME=\'udregn\' ACTION =\'Butiksvogn\'>\");
        out.println(\"<br><br><CENTER><font size=5><b>Varer i din vogn: </b></font><br><br><br>\");
        out.println(\"<TABLE width=\'60%\'><TBODY><TR><TH>Slet</TH><TH>Varetekst</TH><TH>Antal</TH> \"+
                \"<TH>Pris / stk.</TH><TH>Beløb (DKK)</TH></TR>\");
       
        int antal = 1;
        int x = 0;

        for(int i=1;i<=antalVarer.intValue();i++)
        {
            String item = (String) session.getAttribute (\"Vare\" + i);
            int tal = item.indexOf(\';\');
            int length = item.length();
            String navn = item.substring(0, tal);
            String pris0 = item.substring(tal +1, length);
            int pris = Integer.parseInt(pris0);
           
           
            out.println(\"<TR><TD><INPUT type=checkbox value=ON name=slet></TD><TD>\" + navn + \"</TD>\"+
                \"<TD align=right><INPUT size=4 value=\"+ antal +\" name=antal></TD><TD align=right>\" + pris + \",-</TD>\"+
                \"<TD align=right>\" + pris * antal +\",-</TD></TR>\");   
       
            x = x + (pris * antal);
           
        }
        out.println(\"<TR><TD colSpan=4><STRONG>Beløb i alt</STRONG></TD><TD align=right>\"+ x +\",-</TD></TR></TBODY></TABLE></CENTER><br><br>\");
        out.println(\"<center><INPUT type=SUBMIT value=Opdater></FORM><a href= target=_parent>&nbsp;&nbsp;Til kassen</a></TD><TD><a href=\'http://192.168.1.66:8080/lars/servlet/TomVogn\' target=_parent>&nbsp;&nbsp;Tøm vogn</a></center></BODY></HTML>\");
        out.close();
    }
   
    public void doGet(HttpServletRequest req, HttpServletResponse rep) throws
    ServletException, IOException
    {       
    }
}
Avatar billede disky Nybegynder
08. august 2001 - 10:12 #11
så vidt jeg kan se gør du slet ikke forskel på hvad der kalder din servlet.

Avatar billede delbing Nybegynder
08. august 2001 - 10:15 #12
Du henter jo kun antalVarer fra sessionen så vidt jeg kan se - du henter aldrig hvad klienten har skrevet i antal-feltet fra requesten.
Og lad være med at acceptere spørgsmål når folk ikke har svaret endnu mik28 :)
Avatar billede disky Nybegynder
08. august 2001 - 10:16 #13
mik28: du skulle virkeligt kigge på JSP, så slipper du for at blande dit html med java kode på denne måde.
JSP er bare en overbygning på servlets :)
Avatar billede delbing Nybegynder
08. august 2001 - 10:17 #14
Iøvrigt er det absolut ikke Tomcats skyld at du har de hastighedsproblemer.
Avatar billede mik28 Seniormester
08. august 2001 - 10:18 #15
hvordan gør man det. Det er det som er vores problem.
Avatar billede disky Nybegynder
08. august 2001 - 10:20 #16
delbing: tomcat kan meget vel være årsagen, den er hamrende langsom.

mik28:
Hvis du vil hente antal varer fra websiden skal du bruge:

req.getParameter(\"antal\");
Avatar billede delbing Nybegynder
08. august 2001 - 10:20 #17
Indtastningsfeltet har vel et name, så bruger du bare req.getParameter()
Avatar billede delbing Nybegynder
08. august 2001 - 10:23 #18
tomcat er helt sikkert ikke så langsom, og tag lige med at det nok kun er os 3 der har været derinde, så der er stort set ingen trafik. Hvis det var et kæmpe foretagende kunne du måske overbevise mig, men det der skyldes noget andet. Jeg ved da ihvertfald at jeg aldrig har haft noget at klage over med Tomcat.
Avatar billede disky Nybegynder
08. august 2001 - 10:23 #19
problemmet er alle indtasnings felter har samme navn \'antal\'

Prøv evt. at brug:
getParameterValues(java.lang.String name)

istedetfor den returnerer et array af string, om den lige duer kan jeg ikke huske.

Men hvis den gør får du alle \'antal\' tilbage i et huk, du skal dog så selv holde styr på rækkefølgen af varer i kurven.
Avatar billede disky Nybegynder
08. august 2001 - 10:24 #20
delbing:
Jeg har haft meget bøvl og lousy performace fra tomcat\'s side. Men pyt med det, i dette tilfælde er det nærmere langsom forbindelse eller for meget grafik osv.
Men tomcat er ikke ligefrem kendt for at være hurtig.
Avatar billede delbing Nybegynder
08. august 2001 - 10:26 #21
Desværre er det ikke garanteret hvilken rækkefølge parametrene har i det String array.
Jeg vil anbefale at navngive felterne selv:

fx:

int i = 0;

så giver du dem dette name : \"antal\" + ++i
Så kommer de til at hedde antal1, antal2 osv.
Avatar billede delbing Nybegynder
08. august 2001 - 10:28 #22
Hvis man har meget trafik kan det meget vel være at man skulle overveje at opgradere til en kommerciel model.
Avatar billede disky Nybegynder
08. august 2001 - 10:34 #23
jeg er helt enig med delbing, nummerer de enkelte felter efter hvad for en vare det er.

du kan så få en enumerator over alle parametere, denne scanner du så igennem for alle varene, updaterer dine sessions variabler med setAttribute()

og så skulle det virker
Avatar billede mik28 Seniormester
08. august 2001 - 10:44 #24
tak for hjælpen
Avatar billede disky Nybegynder
08. august 2001 - 10:44 #25
håber det hjælper dig lidt videre,

ellers bare spørg igen i samme tråd :)

held og lykke
Avatar billede mik28 Seniormester
08. august 2001 - 10:47 #26
tak for det
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