2011-08-31 288 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" />