Session对象,Java servlet与ASP .NET中的cookie

时间:2012-02-18 14:08:31

标签: c# java asp.net java-ee

我已经阅读过会话对象和cookie。 会话对象在服务器端维护。 Cookie是维护客户端并通过浏览器按请求发送到服务器的东西。 我有一些疑问,我仍然无法澄清是

1.)在ASP .NET中,可以通过cookie跟踪会话。在配置文件中使用以下内容

<configuration>
  <sessionstate 
      mode="inproc"
      cookieless="false" 
      timeout="20" 
      sqlconnectionstring="data source=127.0.0.1;user id=<user id>;password=<password>"
      server="127.0.0.1" 
      port="42424" 
  />
</configuration>

上面的等效Java servlet配置是什么,它在哪里配置?

2.)在Java中,如果启用了cookiefull状态跟踪,那么我们仍然必须编写 用于从请求中提取cookie并使用它获取会话对象详细信息的代码, 或者这是由J2EE框架在内部完成的,即J2EE框架是否看到cookie并自动将相应的会话对象分配给页面请求?

2 个答案:

答案 0 :(得分:2)

ASP.NET和J2EE在某种意义上是不同的,因为J2EE只是企业Java应用程序的规范,它缺乏实际的实现。 J2EE有很多实现,这里有一个列表:http://en.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition#Certified_application_servers

如果您查看HttpServletRequest界面,您会注意到getSession()方法,该方法返回HttpSession,其中显示:

  

服务器可以通过多种方式维护会话,例如使用cookie   或重写网址

不同的服务器可以通过不同的方式处理这个问题。您需要找到特定服务器的答案,即:Supporting Sessions Without Cookies in Tomcat

答案 1 :(得分:1)

Java EE Con​​tainers默认会话管理正在使用cookie(尽管它支持其他方法,如URL重写)。

没有必要 - 你不应该 - 自己管理会话cookie,因为容器会为你做所有这些事情。它公开了一个代表当前用户会话的HttpSession实例:如果您希望特定对象在请求之间保持不变,您可以将其作为属性存储在此处,并在以后恢复访问该HttpSession对象。无需编写与cookie相关的代码。