JSP中是否有任何方法可以声明除<%! int like=0;%>
之外的静态变量?自定义标记中是否有任何标记用于在JSP页面上声明静态变量?
如果没有,并且如果我以这种方式<%! int like=0;%>
声明我的静态整数变量','是否有任何方法可以使用像${like}
这样的EL来获取此变量值?我想在JQuery
函数中使用此值,并且我知道我可以使用<%=like>
获取此值,但我需要其他方式。
答案 0 :(得分:3)
不是静态的,但您可以使用JSTL <c:set>
声明应用程序作用域变量。
<c:set var="like" value="0" scope="application" />
你可以通过让JSP打印它就像JS变量那样在JS / jQuery代码中获取它。
<script>
var like = ${like};
</script>
答案 1 :(得分:2)
如果你想在服务器端声明一个可以在客户端(浏览器)上使用的变量,你可以在web.xml中声明一个Servlet Context Parameter:
<web-app>
<context-param>
<param-name>yourParamName</param-name>
<param-value>yourParamValue</param-value>
</context-param>
...
</web-app>
表达式语言有一个隐式对象initParam
,您可以在其中访问JSP上的Servlet上下文参数:
${initParam.yourParamName}
答案 2 :(得分:1)
在JSP中使用"trans_id"
在上下文初始化期间执行:
${staticVar.ClassName_staticPropertyName}
答案 3 :(得分:0)
使用EL访问静态变量是不可能的。如果要将静态变量声明为
,则无法使用EL获取值<%!
public static int a=343;
%>
因此,您必须使用 EL 将变量声明为<c:set var="a" value="${'hello'}" ></c:set>
,然后只有您将使用 EL 获得值(<c:out value="${a}"></c:out>
)。 / p>
您需要将其声明为实例变量,因为只存在jsp页面(servlet)的一个副本,并且_jspService方法为每个请求调用,因此所有用户都可以使用相同的实例变量(_jspService方法)。这意味着,不会为每个请求创建servlet的新实例。请参阅jsp life cycle。