为什么没有容器在收到第一个请求时创建HTTPSession的实例,就像它为ServletContext或ServletConfig做的那样? 由于会话是由容器管理的,因此在收到第一个请求时创建会话实例是合乎逻辑的,不是吗? 为什么我们没有简单的getSession()方法,即为什么有人需要以这种方式调用getSessin(false)。
答案 0 :(得分:2)
创建会话会对响应产生影响:它会设置一个cookie,并使每个正确编码的URL内部都有一个jsessionid
。您可能不希望这样(出于SEO原因等)。
它还对服务器产生影响:为访问应用程序的每个用户创建会话对象并将其保存在内存中。你可能不希望这样。例如,假设机器人每秒向您的应用程序发送一个请求,并拒绝应用程序服务器设置的cookie。 30分钟后,您的webapp将在内存中有108000个无用的会话。
所以开始一个会话是程序员的慎重选择。如果您需要,可以创建它。如果您不需要它,则不要创建它。