2011-08-31 280 views
0

我真的很陌生,java和jsp。所以这是可以理解的,我不能真正理解的参数 这里的范围是我的代码:jsp全局变量和参数范围

<%@page contentType="text/html" pageEncoding="UTF-8" %> 
<%! 
    String sRony= new String(); 
    void func() { 
     sRony += " - add in func() - "; 
    } 
%> 
<% 
    if (request.getParameter("ron")!= null){ 
     sRony = request.getParameter("ron"); 
     func(); 
    } 
    if (request.getParameter("sleep")!= null){ 
     Thread.sleep(2000); 
    } 

%> 
<html> 
<head> 
</head> 
<body> 
    <%=sRony%><%= new java.util.Date() %> 
</body> 
</html> 

的问题是,这个代码是不是线程安全的。如果你会冲浪

page.jsp?ron=sleep&sleep=1 

,并在同一时间

page.jsp?ron=no_sleep 

两页将打印“no_sleep”,引起参数sRony是全球性的。 如果我将从<%!删除!参数sRony将不会被识别void func() 我无法弄清楚如何可以声明一个参数,这将是每个请求,并将在我的函数内的范围。 不知道我的平台是否是重要信息,我正在研究redhat 5.5 64位,glassfish服务器3. 有什么帮助吗?

回答

1

使用pagescope和使用JSTL代替javacode

<c:set var="name1" value="value1" scope="page" />