在JSP中声明并获取静态变量

时间:2013-02-26 10:37:44

标签: jsp el

JSP中是否有任何方法可以声明除<%! int like=0;%>之外的静态变量?自定义标记中是否有任何标记用于在JSP页面上声明静态变量?

如果没有,并且如果我以这种方式<%! int like=0;%>声明我的静态整数变量','是否有任何方法可以使用像${like}这样的EL来获取此变量值?我想在JQuery函数中使用此值,并且我知道我可以使用<%=like>获取此值,但我需要其他方式。

4 个答案:

答案 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