Ik heb een probleem met het volgende stuk code:
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:
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?
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?