11

在 jsp 的请求范围内设置了一个 jstl 变量

<c:set var="name" value="Tiger" scope="request" />

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

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

何时使用 requestScope ?

4

2 回答 2

27

当您绝对希望您的对象来自请求而不是来自页面、会话或应用程序范围时,您可以使用 requestScope。Inded,using${name}将在页面中搜索name属性,然后在请求中,然后在会话中,然后在应用程序中。

假设 JSP 中的一些其他代码在name页面范围内设置了一个属性。但是您想访问请求中的名称:您被迫使用 requestScope。

假设会话可能有一个name属性。requestScope.name如果 JSP 忘记在请求范围内设置名称属性,则不使用将返回会话范围内的名称。

如果 JSP 片段的目标是访问在封闭 JSP 中设置的内容,那么这个 JSP 片段应该是一个 JSP 标记,并且您应该将名称作为参数传递给这个标记。

于 2013-10-01T11:26:01.733 回答
2

在我的研究中(我也是 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) )

现在我们可以nmeindex.jsp nme变量中调用如下请求值

<c:out value="${nme}"/>
于 2015-03-04T01:57:24.163 回答