我对java和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是全局的。
如果我删除 !
来自<%!
void func()
中的参数 sRony 将无法被识别
我不知道如何声明每个请求的参数,并且在我的函数内具有范围。
不确定我的平台是否重要,我正在使用 redhat 5.5 64 位、glassfish server 3。
有什么帮助吗?
最佳答案
使用pagescope
并使用JSTL代替javacode
<c:set var="name1" value="value1" scope="page" />
关于java - jsp 全局变量和参数范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7254798/