【问题标题】:where HttpSession's setAttribute("attributename",object) Object will be stored?HttpSession 的 setAttribute("attributename",object) 对象将存储在哪里?
【发布时间】:2018-07-03 03:32:27
【问题描述】:
class SessionStorage extends HttpServlet
{       
   public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    {
        HttpSession session=request.getSession();
        int schoolId=100;
        session.setAttribute("schoolId", schoolId);     
    }

}

我只想知道schoolId 属性的存储位置。它要么在 Web 容器(例如 tomcat)上,要么在内存中(例如 .RAM)。 如果它在服务器上,我会在哪个位置找到这个属性?

【问题讨论】:

标签: java session tomcat httpsession


【解决方案1】:

SchooldId 保存在 HttpSession 中(在 tomcat 上)。 HttpSession 本身存储在服务器的内存 (RAM) 中。只有当对同一 http 会话的新请求到达服务器时,您才能再次查找该值。

【讨论】:

  • JVM 正在服务器上运行,因此在 JVM 中用于 StoreData 的不同内存区域(如堆栈、堆、方法区域)。 HttpSession 属性存储在哪个区域。如果我在上面的句子中错了,请纠正我。
  • 会话是一个java对象,所以它会被存储在堆中。
  • 服务器如何知道这个属性是针对特定用户的,它是否在堆中存储了带有属性的会话 ID?
  • 确实取决于服务器的实现,但我想可以将它存储在 HashMap 中(也将包含在堆中)。
【解决方案2】:

SchoolId 将存储在 httpSession 对象中。 HttpSession 将在 tomcat 或任何其他应用程序/网络服务器中创建

【讨论】:

    猜你喜欢
    • 2011-12-14
    • 2011-08-15
    • 2015-07-05
    • 2021-03-17
    • 2012-02-24
    • 1970-01-01
    • 2016-06-17
    • 2015-12-26
    • 2017-03-19
    相关资源
    最近更新 更多