在jsp
中的请求范围中设置了jstl变量<c:set var="name" value="Tiger" scope="request" />
从包含在此jsp中的jspf访问此变量。现在,以这两种方式访问变量有什么不同吗?
1) <c:out value="${name}" />
2) <c:out value="${requestScope.name}" />
何时使用requestScope?
答案 0 :(得分:22)
当您绝对希望对象来自请求而不是来自页面,会话或应用程序范围时,请使用requestScope。 Inded,使用${name}
将在页面中搜索name
属性,然后在请求中搜索,然后在会话中搜索,然后在应用程序中搜索。
假设JSP中的其他一些代码在页面范围中设置了name
属性。但是您想要访问请求中的名称:您被迫使用requestScope。
假设会话可能具有name
属性。如果JSP忘记在请求范围中设置name属性,则不使用requestScope.name
将返回会话范围的名称。
如果JSP片段的目标是访问封闭JSP中设置的内容,那么这个JSP片段可能是JSP标记,您应该将该名称作为参数传递给此标记。
答案 1 :(得分:1)
在我的研究中(我也是jstl的新研究), 请求范围可以设置值以从响应页面请求页面,例如假设我们有一个名为 index.jsp 的页面,其操作页面为 index_action.jsp 强>
如果我们将值设置为操作页面
<c:set var="nme" scope="request" value="Janaka aravinda"/>
<% request.getRequestDispatcher("index.jsp").forward(request, response); %>
(//我创建了nme
变量并将其值设置为Janaka aravinda
。然后返回重新加载请求页面(index.jsp))
现在我们可以在 index.jsp nme
变量中调用nme
,如下所示
请求值
<c:out value="${nme}"/>