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

2022-09-01 17:04:48

我正在尝试检索由 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>

如果我通过所有过程(调用页面,servlets和目标页面)传递一个参数,它的工作效果非常好。


答案 1

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

${attrib}

应该做。

如果要显式指定范围(EL 将按顺序搜索页面、请求、会话和应用程序范围,以查找与属性名称匹配的第一个非 null 属性值),则需要通过范围映射来引用它,该范围映射用于请求范围${requestScope}

${requestScope.attrib}

仅当页面范围中可能有一个名称完全相同的属性时,这才有用,否则该属性将获得优先级(但这种情况通常表示毕竟设计不佳)。

另请参阅:


答案 2

也许语法和句法之间的比较将帮助您理解这个概念。ELscriptlet

  • param就像request.getParameter()
  • requestScope就像request.getAttribute()

您需要从 中分辨。request attributerequest parameter