Toon posts:

[XML] XSP reset variabelen niet!!!

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een probleem met het volgende stuk code:
code:
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
<?xml version="1.0"?>
<?xml-stylesheet href="xsl/userform.xsl" type="text/xsl"?> 
<!-- Author: Stefano Mazzocchi "stefano@apache.org" -->
<!-- Version: $Id: page.xml,v 1.5 2000/01/08 07:19:41 ricardo Exp $ -->
<?cocoon-process type="xsp"?>
<?cocoon-process type="xslt"?>
<xsp:page language="java" xmlns:xsp="http://www.apache.org/1999/XSP/Core" xmlns:util="http://www.apache.org/1999/XSP/Util">
     <xsp:structure>
      <xsp:include>java.net.*</xsp:include>
    </xsp:structure>
 <xsp:logic><![CDATA[
  static private int counter = 0; 
  public String params = "";  
  public String thestuff = "";
  private String theoutput = "";
  public String thetest = "<foo><bar/><fgfg/></foo>";
  public String showOutput()  {
    return theoutput;
    }
  private synchronized int count() { 
   return counter++; 
  }]]>
 </xsp:logic>
<imode>
<marco/>
  <xsp:logic><![CDATA[
   Enumeration e = request.getParameterNames(); 
   if (e != null) { ]]>   
     <xsp:logic><![CDATA[
    params = "";
    while (e.hasMoreElements()) { 
     String k = (String) e.nextElement();
     String val = request.getParameter(k); 
   
     if(e.hasMoreElements())  {
       params = params + k + "=" + val + "&"; 
       }
        ]]>
        </xsp:logic>
        <xsp:logic>  
     else  {
       params = "http://develop.endemol.com:9000/userform.php?" + params + k + "=" + val;
       URL myURL = new URL(params);
       URLConnection con = myURL.openConnection();
       con.setDoInput(true);
       InputStream foo = con.getInputStream();
       InputStreamReader bla = new InputStreamReader(foo);

        BufferedReader br = new BufferedReader(bla);
        String line = null;
        //theoutput = "";
        while ( (line = br.readLine()) != null)
        {
            theoutput = theoutput + line;
        }   
       }
    }
     </xsp:logic>
   } 
  </xsp:logic>
<util:include-expr><util:expr>theoutput</util:expr></util:include-expr> 
</imode>
</xsp:page>

Het probleem is het volgende:

De eerste keer dat ik de pagina run werkt alles perfect.
Echter de tweede keer loopt alles de mist in. Dit komt doordat de variabele "theoutput" om een of andere mistige reden "onthoudt" wat er in is gezet bij het vorige request.

Weet iemand waarom dit gebeurt?

Ik KAN het probleem oplossen door voor de while loop deze regel:
code:
1
//theoutput = "";

uit te commentarieren maar dit geeft me nog geen gerust gevoel over wat er met die inhoud gebeurt zodra veel mensen tegelijk het script aan zitten te roepen.

Kan iemand mij iets vertellen over waarom die variabelen zichzelf "onthouden" en hoe ik dat omzeil?

Verwijderd

Topicstarter
Sterk versimpeld is het probleem ook zo te reproduceren:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0"?>
<!-- Author: Stefano Mazzocchi "stefano@apache.org" -->
<!-- Version: $Id: page.xml,v 1.5 2000/01/08 07:19:41 ricardo Exp $ -->
<?cocoon-process type="xsp"?>
<xsp:page language="java" xmlns:xsp="http://www.apache.org/1999/XSP/Core" xmlns:util="http://www.apache.org/1999/XSP/Util">

 <xsp:logic><![CDATA[
  private String theoutput = "";  
]]>
 </xsp:logic>
<imode>
<xsp:logic>
<![CDATA[theoutput = theoutput + "<bla/>";]]>
</xsp:logic>
<xsp:expr>theoutput</xsp:expr> 
</imode>
</xsp:page>

Iedere keer dat je de page reload of zelfs op een andere computer laad wordt er een bla tag toegevoegd.
Die theoutput string wordt dus om een of andere reden server side "onthouden". :(