jsp页面中的脚本元素
我不熟悉jsp。我正在jsp页面中编写一个“声明”和一个“脚本” 但是我在声明和“scriptlet”中创建的变量不存储在任何一个 范围。ie页面范围、请求范围、应用范围。为什么 下面是我的名为“success.jsp”的jsp文件jsp页面中的脚本元素,jsp,el,scopes,Jsp,El,Scopes,我不熟悉jsp。我正在jsp页面中编写一个“声明”和一个“脚本” 但是我在声明和“scriptlet”中创建的变量不存储在任何一个 范围。ie页面范围、请求范围、应用范围。为什么 下面是我的名为“success.jsp”的jsp文件 //未在任何作用域中创建x。 //y不是在任何作用域中创建的。 var p=“${x}”//这里,变量p没有得到任何值。 var q=“${y}”//在这里,变量不获取任何值。 为什么变量“x”和“y”不在任何一个作用域中创建。以及如何获取存储在“x”和“y”变量
//未在任何作用域中创建x。
//y不是在任何作用域中创建的。
var p=“${x}”//这里,变量p没有得到任何值。
var q=“${y}”//在这里,变量不获取任何值。
为什么变量“x”和“y”不在任何一个作用域中创建。以及如何获取存储在“x”和“y”变量中的值 我认为开始理解JSP的最好方法是,它们被秘密地解释成java类。但更具体地说:它们被放入一个函数中,在计算每一行之后,逐行写出html。因此,您可以使用标签。现在,正因为如此,标记实际上是经过计算但没有写入html的行。计算结果存储在生成的java方法的作用域中。所以最终发生的事情看起来像:
public void SendHtmlPage() {
int x=20;
int y=30;
Print("<script>");
Print("var p=\"${x}\"\;"); //This gets evaluated to getSession.getAttribute("x")
//Since there is no x in the session, it returns null
Print("var q=\"${y}\"\;"); //Same here
Print("</script>);
}
public void SendHtmlPage(){
int x=20;
int y=30;
打印(“”);
Print(“var p=\”${x}\“\;”;//这将计算为getSession.getAttribute(“x”)
//由于会话中没有x,因此它返回null
打印(“var q=\”${y}\“\;”;//此处相同
印刷品(“);
}
因此。这就是为什么在您的scriptlet中不知道x和y。但是,有一些方法可以将方法作用域变量保存到会话作用域。请检查以下内容:
祝你好运,编码愉快。:)像这样更改代码
var p = <%=x%>;
var q = <%=y%>;
var p=;
var q=;
正如您所指出的,由jsp scriplet代码创建的变量在任何范围内都不可用,因为它们直接在编译的jps页面(内部编译为servlet类的任何jsp页面)中声明。对于在jsp页面的其余部分中使用变量x,您有两个不同的选项:
,在这种情况下,javascipt片段中的代码是:
var p=“”;var q=“”
请注意,
不同于
${x}用于EL而不是Scriptlet。Scriptlet使用
var p = <%=x%>;
var q = <%=y%>;