何时在jstl中使用requestScope?

时间:2013-10-01 09:05:38

标签: jstl

在jsp

中的请求范围中设置了jstl变量
<c:set var="name" value="Tiger" scope="request" />

从包含在此jsp中的jspf访问此变量。现在,以这两种方式访问​​变量有什么不同吗?

1) <c:out value="${name}" />
2) <c:out value="${requestScope.name}" />

何时使用requestScope?

2 个答案:

答案 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}"/>