Jsp 使用表达式语言访问servlet属性
有两件事我很困惑 在servlet类中,我有:Jsp 使用表达式语言访问servlet属性,jsp,servlets,Jsp,Servlets,有两件事我很困惑 在servlet类中,我有: String name = "James Bond"; Session.setAttribute("name", name); 为什么我读过的所有书中的属性名和属性值都是一样的。我知道一个是字符串文字,一个是对象,但它必须是相同的吗 第二件事我很困惑。。。假设我将servlet代码更改为 String name = "James Bond"; Session.setAttribute("hisname", name
String name = "James Bond";
Session.setAttribute("name", name);
为什么我读过的所有书中的属性名和属性值都是一样的。我知道一个是字符串文字,一个是对象,但它必须是相同的吗
第二件事我很困惑。。。假设我将servlet代码更改为
String name = "James Bond";
Session.setAttribute("hisname", name);
当我尝试使用JSP访问它时:
${sessionScope.name}
它很好用。那么Session.setAttribute()中第一个参数的意义是什么呢?我猜,您仍然可以从会话中访问旧的“name”,尝试使会话无效,并且“name”属性将被删除 我猜,您仍然可以从会话访问旧的“名称”,尝试使会话无效,“名称”属性将被删除 使用setAttribute()方法在作用域上存储数据时,第一个参数是稍后在.jsp中使用的名称。它可以是你想要的任何东西。第二个参数是要存储的对象,它将使用第一个参数中使用的名称进行访问
String name = "James Bond";
request.setAttribute("007",name);
然后在.jsp中,您可以使用
${requestScope.007}
EL表达式将按以下顺序在所有范围内搜索007对象:
String name = "James Bond";
Session.setAttribute("name", name);
然后在同一范围内(在同一会话中)存储另一个属性
访问fist${sessionScope.name}不会出现任何错误,因为它仍然可用。尝试使用其他作用域。使用setAttribute()方法在作用域上存储数据时,第一个参数是稍后在.jsp中使用的名称。它可以是你想要的任何东西。第二个参数是要存储的对象,它将使用第一个参数中使用的名称进行访问
String name = "James Bond";
request.setAttribute("007",name);
然后在.jsp中,您可以使用
${requestScope.007}
EL表达式将按以下顺序在所有范围内搜索007对象:
String name = "James Bond";
Session.setAttribute("name", name);
然后在同一范围内(在同一会话中)存储另一个属性
访问fist${sessionScope.name}不会出现任何错误,因为它仍然可用。尝试使用其他作用域。名称和值不必相同 当你做
${sessionScope.name}
时,你仍然得到了“詹姆斯·邦德”。这一定是因为您仍然可以在会话范围中使用您定义的“name”属性
第二次将名称更改为其他名称,如下所示:
String name = "James Bond";
Session.setAttribute("name", name);
String name = "The Bond";////////////////make this change.
Session.setAttribute("hisname", name);
因此,当您这次执行${sessionScope.name}
时,您将得到“詹姆斯·邦德”,而不是“邦德”
如果您执行
${sessionScope.hisname}
,您将得到“债券”名称和值不需要相同
当你做${sessionScope.name}
时,你仍然得到了“詹姆斯·邦德”。这一定是因为您仍然可以在会话范围中使用您定义的“name”属性
第二次将名称更改为其他名称,如下所示:
String name = "James Bond";
Session.setAttribute("name", name);
String name = "The Bond";////////////////make this change.
Session.setAttribute("hisname", name);
因此,当您这次执行${sessionScope.name}
时,您将得到“詹姆斯·邦德”,而不是“邦德”
如果你做了
${sessionScope.hisname}
,你会得到“债券”名称和值不需要相同。为什么属性名称和属性值在我读过的所有书籍中基本上是相同的,为了代码可读性和维护的目的。假设您通过所有应用程序将Dog
数据保存在一个名为login
的对象中,反之亦然,您必须对该应用程序进行维护。如果你在一到两页中工作,就不会那么痛苦了……名称和值不需要相同。为什么我读过的所有书籍中的属性名称和属性值基本上都是相同的,以便于代码可读性和维护。假设您通过所有应用程序将Dog
数据保存在一个名为login
的对象中,反之亦然,您必须对该应用程序进行维护。如果你只写一两页,就不会那么痛苦了。。。