如何访问JSP中的servlet设置的请求属性?

时间:2012-06-05 13:39:00

标签: java jsp servlets el

我正在尝试在JSP页面中检索由servlet设置的属性值,但我只是通过${param}的参数运气。我不确定我能做些什么不同。也许它很简单,但我还是无法管理它。

public void execute(HttpServletRequest request, HttpServletResponse response) {

    //there's no "setParameter" method for the "request" object
    request.setAttribute("attrib", "attribValue");

    RequestDispatcher rd = request.getRequestDispatcher("/Test.jsp");
    rd.forward(request,response);
}

在JSP中,我一直在尝试检索“attribValue”,但没有成功:

<body>
    <!-- Is there another tag instead of "param"??? -->
    <p>Test attribute value: ${param.attrib}
</body>

如果我通过所有进程(调用页面,servlet和目标页面)传递参数,那么它的效果非常好。

4 个答案:

答案 0 :(得分:26)

它已经在默认的EL范围内可用,所以只需

${attrib}

应该这样做。

如果您想明确指定范围(EL将按顺序搜索与属性名称匹配的第一个非null属性值的页面,请求,会话和应用程序范围),那么您需要通过范围引用它而是映射,对于请求范围是${requestScope}

${requestScope.attrib}

这只有在可能在页面范围内具有完全相同名称的属性时才有用,否则它将优先(但这种情况通常表示设计不佳)。

另见:

答案 1 :(得分:9)

也许EL语法和scriptlet语法之间的比较可以帮助您理解这个概念。

  • paramrequest.getParameter()
  • 类似
  • requestScoperequest.getAttribute()
  • 类似

您需要告诉request attribute request parameter

答案 2 :(得分:2)

你尝试过使用

吗?
<% request.getAttribute("attrib"); %>

答案 3 :(得分:0)

如果范围是请求类型,则在请求中使用request.setAttribute(key,value)设置属性,并在jsp中使用$ {requestScope.key}进行检索。