Java Web学习之HttpSession的常用方法

一、HttpSession接口中的方法

方法名功能描述
getId()获取SessionID
isNew()Session是否是新的(如果客户端请求消息中返回了一个与Servlet程序当前获得的HttpSession对象的会话标识号相同,则认为这个HttpSession对象不是新建的)
setMaxInactiveInterval()设置Session的最大时效
getMaxInactiveInterval()获取Session的最大时效
getCreationTime()获取Session的创建时间
getLastAccessedTime()获取Session的最后访问时间
invalidate()销毁Session对象
setAttribute()设置数据,将数据保存在Session这个域对象中
getAttribute()获取数据,将保存在Session这个域对象中的数据获取出来

二、HttpSession常用方法的小案例

我们将通过一个小案例来深刻理解HttpSession接口中的这些方法。

2.1 案例要求

①. 有这样一个登录页面,页面中会显示一些Session的信息,然后会有一个表单,要求你输入用户名和密码进行登录。

②. 登录之后会进入欢迎页面,欢迎页面中依旧会显示一些Session的信息,然后有个 您好:XXX用户(XXX就是你的用户名),下方会有两个超链接,一个是重新登陆,一个是注销。

③. 当你点重新登陆超链接时,会使你重新跳转到登录页面,只不过用户名系统会自动根据你上次登录的用户名帮你填好,输入密码后点击登录按钮,会再次进入欢迎页面。

④. 当你点注销时,会显示 再见:XXX用户(XXX就是你的用户名) ,您已退出,请重新登录!,然后下方会有个重新登陆超链接来进行重新登录。

⑤. 在注销页面点重新登录后,用户名为空,需要你重新输入用户名进行登录。

在这里插入图片描述

2.2 案例实现

login.jsp(登录页面)

<body>
     SessionID:<%= session.getId() %>
     <br><br>
     
     Session是否是新的:<%= session.isNew() %>
     <br><br>
     
     Session的最大时效:<%= session.getMaxInactiveInterval() %>
     <br><br>
     
     Session创建时间:<%= session.getCreationTime() %>
     <br><br>
     
     Session最后的访问时间:<%= session.getLastAccessedTime() %>
     <br><br>
     
     <%
          	Object username = session.getAttribute("username");
          	if (username == null) {
          		username = "";
          	}
     %>
  
    <form action="hello.jsp" method="post">
                用户名:<input type="text"  name="username" value="<%= username %>">
                密码:<input type="password">
            <input type="submit" value="登录">
    </form>
    
  </body>

hello.jsp(欢迎页面)

<body>
    
     SessionID:<%= session.getId() %>
     <br><br>
     
     Session是否是新的:<%= session.isNew() %>
     <br><br>
     
     Session的最大时效:<%= session.getMaxInactiveInterval() %>
     <br><br>
     
     Session创建时间:<%= session.getCreationTime() %>
     <br><br>
     
     Session最后的访问时间:<%= session.getLastAccessedTime() %>
     <br><br>
     
          您好:<%= request.getParameter("username") %>
     <br><br>

	<%
		session.setAttribute("username", request.getParameter("username"));
	%>

	<a href="login.jsp">重新登录</a>
     &nbsp;&nbsp;&nbsp;&nbsp;
     <a href="logout.jsp">注销</a>
  </body>

logout.jsp(注销页面)

<body>
     SessionID:<%= session.getId() %>
     <br><br>
     
     Session是否是新的:<%= session.isNew() %>
     <br><br>
     
     Session的最大时效:<%= session.getMaxInactiveInterval() %>
     <br><br>
     
     Session创建时间:<%= session.getCreationTime() %>
     <br><br>
     
     Session最后的访问时间:<%= session.getLastAccessedTime() %>
     <br><br>
     
          再见:<%= session.getAttribute("username") %> ,您已退出,请重新登录!
     <br><br>
     
     <a href="login.jsp">重新登录</a>

	<%
		session.invalidate();
	%>

</body>

2.3 功能展示

①. 登录页面:
在这里插入图片描述
②. 输入用户名和密码后,进入欢迎页面:
在这里插入图片描述
③. 进入重新登录:
在这里插入图片描述
④. 进入注销:
在这里插入图片描述
⑤. 注销之后点重新登陆,用户名为空,需要你重新输入用户名进行登录
在这里插入图片描述

2.4 结果分析

本案例把Session的一些常用方法都用到了。

通过本案例,我们可以知道:

①. 在我们登录进入欢迎页面后,我们将用户名保存在Session这个域对象中,点重新登陆 再次进入login.jsp中我们将用户名从域对象中取出来。

②. 我们在点注销超链接后,实际上是用 invalidate() 方法将Session对象销毁了,以至于当你点重新登录时,用户名为空,需要你重新输入用户名进行登录。

③. Session是代表了浏览器和服务器的一次会话,所以只要我们的浏览器不关闭,我们始终都是一个Session对象(通过功能展示我们会发现,我们的SessionID都是同一个,除非你点注销,将Session对象销毁了,变成了一个新的SessionID);于是我们在Session这个域对象中存储数据的时候,我们就可以在另一个页面中得到那个存储的数据了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值