gpt4 book ai didi

java - request.get/setAttribute() 与 this.getServletContext().get/setAttribute()

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:31:22 25 4
gpt4 key购买 nike

当您从请求和 getServletContext() 调用它们时,get/setAttribute() 之间有什么区别。我注意到你需要

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

为了使请求生效,您只需导航到应用程序中的另一个 jsp 或 servlet 即可使用 getServletContext().getAttribute()

但我不明白后面发生了什么。

最佳答案

request.setAttribute() 在请求范围内设置一个属性,因此仅在同一请求/响应周期内可用。 servletContext.setAttribute() 在应用程序范围内设置一个属性,因此在所有其他请求/ session 之间共享。当它涉及特定于请求的数据时,您不希望这样做,否则访问者 Y 将能够看到访问者 X 的数据。

如果您希望某些属性在 response.sendRedirect() 的重定向后继续存在,则请求范围不合适,因为重定向基本上指示客户端(网络浏览器)创建全新的 HTTP 请求。您需要通过 session.setAttribute() 将数据放在 session 范围内,而不是放在应用程序范围内(最好在后续请求中删除,如果它不需要在整个 session 期间坚持不懈)。

另见:

关于java - request.get/setAttribute() 与 this.getServletContext().get/setAttribute(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5232846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com