为什么浏览器会共享session啊!

这是代码::::

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestSession1 extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String num = (String) request.getSession().getAttribute("num");
if(num == null){
num = "0";
}
int n = Integer.parseInt(num);
n++;
response.getWriter().write(n+"");
request.getSession().setAttribute("num", n+"");
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}

}

我第一次打开浏览器得到一些数据,然后回到桌面 又重新建了一个浏览器,但是得到的在已经打开那个浏览器的数据上加的1~~~
就是session共享了 为什么啊 ~~~~~~~~!1
我用的是IE9 而且我用谷歌,火狐都试了试 也是共享
为什么会这样 腻歪我一天了~~
是不是我的代码有问题啊!~~~

代码是没有问题的.session其实也是用cookie来实现的.
不同浏览器会读取相同的cookie.于是session就共享了.
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-08-23
在Web应用程序中浏览器很重要,Web程序依赖浏览器。微软之前的IE版本,如IE6、IE7, 如果同时打开两个窗口会产生两个会话,彼此互不影响。但在IE8、IE9中情况截然不同,IE8、IE9存在SESSION共享的问题,虽然可同时打开多个窗口,但他们共用了一个会话。
Session共享给应用程序带来了很大的方便,但在带给用户方便的同时,也给应用程序带来了一定的风险。尤其是企业级的应用程序,一旦出现数据错误,可能带来严重的后果。
除了开发人员在应用程序开发过程中要注意并利用浏览器的这个特性外,测试人员和用户也应该了解此特性,通过人为控制浏览器的这一特性,使浏览器的这个特性更好的为我们服务。
通过下列方法打开的窗口不会共用会话:
第一种: 用户通过菜单 文件 > 新建会话(或File > New session)打开新窗口
第二种: 使用命令行参数 iexplore.exe -nomerge 打开浏览器
第三种:修改浏览器的快捷方式属性,在 C:\Program Files\Internet Explorer 文件夹下,通过iexplore.exe
新建一快捷方式至桌面,在桌面的快捷方式上点击右键选择属性,修改“目标”为 "C:\Program Files\Internet
Explorer\iexplore.exe" -nomerge
通过此快捷方式启动的浏览器不会共享会话。
相似回答