全国咨询/投诉热线:400-618-4000

JAVA培训之HttpSession第一例

更新时间:2016年08月17日16时59分 来源:传智播客JAVA培训学院 浏览次数:

通过HttpSession入门知识的学习,我们对HttpSession有了一定的了解。为了更深入的学习HttpSession,掌握其功能,下面我们来练习一个案例,具体如下所示:
首先,我们对本案例进行功能分析,在一个jsp页面中向session域中保存数据,然后在另一个jsp页面中从session域中获取数据。具体步骤如下所示:
(1)创建一个web应用,Example21,在该应用下的WebRoot目录下新建一个jsp页面,名称为save.jsp,主要代码如例1-1所示:
例1-1 save.jsp
  <body>
<h1>向session域保存数据</h1>
<%
    session.setAttribute("aaa", "AAA");
%>
  </body>
例1-1中,因为session是jsp的内置对象,所以可以直接使用。
(2)在WebRoot目录下再次新建一个jsp页面,名称为get.jsp,主要代码如例1-2所示:
例1-2 get.jsp
<body>
<h1>获取session中的数据</h1>
<%
    String s = (String)session.getAttribute("aaa");
%>
<%=s %>
</body>
例1-2中,先从session域中获取数据,然后再输出到浏览器端。
(3)将Example21发布到Tomcat服务器中,然后启动服务器,在浏览器端访问:http://localhost:8080/Example21/save.jsp,将数据存储在session域中,然后再访问get.jsp,浏览器显示结果如图1-1所示:

图1-1 浏览器显示结果
由图1-1可知,在访问save.jsp时确实将数据保存在了session域中。这时,如果打开一个新的窗口再次访问get.jsp,session域中的数据能够取出来吗?
(4)打开一个新的浏览器窗口,之前的窗口不关闭,在新窗口中再次访问get.jsp,浏览器显示结果如图1-2所示:

图1-2 浏览器显示结果
图1-2中也能从session域中获取数据,原因是我们说过session是依赖于Cookie的,我们在Cookie的路径和域中曾经看到过一个名字为JSESSIONID的Cookie,这个cookie的过期时间就是浏览器关闭该cookie就是消失,刚才在新的窗口中访问get.jsp时,之前的窗口并没有关闭,那么JSESSIONID这个cookie就仍然存在于内存中,所以第二次访问时能够找到session,从而可以从session中取出数据。大家看到这里可能还有一些不明白,我们会在后面的session原理中详细说明。
(5)选择图1-2中的工具栏选项中的【文件】,在其下拉选项中选择【新建会话】,如图1-3所示:

图1-3新建一个会话
(6)点击图1-3中的“新建会话“,就打开一个新的会话,然后再次访问get.jsp,浏览器显示结果如图1-4所示:

图1-4 浏览器显示结果
图1-4中,输出null,表明没有从session中获取到数据。新建会话,表示重新开启一次会话,那么服务器会重新创建一个session对象,所以在get.jsp页面中通过request.getSession()获取到的session就是新创建的session,该session中并没有存放数据,所以才获取不到。
(7)在IE浏览器中再次访问save.jsp,往session中存放数据,然后再打开谷歌浏览器访问get.jsp,观察是否能从session中获得数据,浏览器显示结果如图1-5所示:

图1-5 谷歌浏览器显示结果
图1-5中,访问get.jsp没有获取到session中的数据,原因是:session是依赖于Cookie,而Cookie是不能跨浏览器的,也就是说使用IE浏览器访问save.jsp,服务器创建一个session对象,由于Cookie不能跨浏览器,所以使用谷歌浏览器访问时,服务器会创建另一个session对象,因此谷歌浏览器访问get.jsp不能获取到上一个session中的数据。

本文版权归传智播客Java培训学院所有,欢迎转载,转载请注明作者出处。谢谢!
作者:传智播客Java培训学院
首发:http://www.itcast.cn/javaee

javaee

python

web

ui

cloud

test

c

netmarket

pm

Linux

movies

robot

uids

北京校区

    14天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    20天免费试学

    基础班入门课程限时免费

    申请试学名额

    8天免费试学

    基础班入门课程限时免费

    申请试学名额

    20天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    0天免费试学

    基础班入门课程限时免费

    申请试学名额

    12天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    10天免费试学

    基础班入门课程限时免费

    申请试学名额