三(5)、JSP九大内置对象——session

session

每个用户的一次会话就是session。

session对象是客户端与服务器的一次会话,在Web中session表示从进入网站到关闭网站的这段时间。当客户访问一个服务器时,客户会在服务器上的几个页面互相切换,这时服务器时通过session对象来知道这是同一个用户


一、session几个常用例子

session通常的用处:

  1. 保存登用户信息
  2. 将某些数据存储在session中,这样用户可以访问这个网站的多个页面
  3. 防止用户登入到某个页面中(重)
  4. 网上商城中的购物车

二、基本方法

<!--session的唯一标识符 -->
<%= session.getId() %>


<!-- session的创建时间-->
<%= 
new java.util.Date(session.getCreationTime()).toString()
%>


<!--session的最后访问时间-->
<%= new java.util.Date(session.getLastAccessedTime()).toString() 
%>


<!--session的有效时间-->
<%= session.getMaxInactiveInterval()
%>

<!--设置session的有效时间-->
<%   
session.setMaxInactiveInterval(10);//时间为10秒过期
%>
<!--session的创建时间-->
<%
//设置时间格式
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");

//实例话时间对象
Date d=new Date(session.getCreationTime());
%>
//format()格式化
session创建时间:<%=sdf.format(d) %>
<!--获取session中所有属性-->
<%
       String [] names=session.getValueNames();
       for(int i=0;i<names.length;i++)
        {
           out.println(names[i]+"  ");    
        }
%>

三、设置销毁时间

在项目里的WEB-INF中的web-xml中设置

这里写图片描述

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

<!-- 设置session销毁时间(分钟) -->
  <session-config>
  <session-timeout>10</session-timeout>
  </session-config>
</web-app>

四、session的生命周期

(1)创建:
当客户端第一次访问某个jsp或者servlet时候,服务器会为当前会话创建一个session ID,每次客户端向服务器端发送请求时,都会将此session ID携带过去,服务端会对此session ID进行校验。

(2)活动:
某次会话当中通过超链接打开的新页面属于同一次会话,或者只要当前会话页面没有关闭,重新打开新的浏览器窗口访问同一项目资源时,还是属于同一次会话。除非本次会话的所有页面都关闭后在重新访问某个jsp或者servlet将会创建新的会话,但是注意是注意原有会话还存在,只是这个旧的session ID仍然存在于服务端,只不过再也没有客户端会携带它然后交予服务端校验。

(3)销毁session
第一:调用session.invalidate()
第二:session过期
第三:服务器重新启动

五、session几个常用的方法

1.内容保存在session中,同时在其他页面中获取session内容

<!--将内容“我们”保存在HttpSession中的“a”-->
<% 
session.setAttribute("session_name","session_value")
session.setAttribute("a",我们);
%>

<!--从HttpSession中获取“a”的值-->
<% 
session.getAttribute("a");
%>

2.销毁session的内容 (重)

<%
 session.invalidate();
%>

由于我们保存了session的内容,当我们要退出的时候必须销毁所有保存在session的信息,这时候用到session.invalidate( )

六、session的一个例子

1.创建login.jsp用于登入

  <body>
    <form action="do_login.jsp" method="post">
     username:<input type="text" name="username"><br>
     passward:<input type="text" name="passward"><br>
     <input type="submit" name="提交">
     <input type="reset" name="重置">
    </form>
  </body>

通过post方法提交信息到do_login.jsp中

2.创建do_login.jsp处理信息

<%
    String username=request.getParameter("username");
    String passward=request.getParameter("passward");
    if(username!=null&&passward!=null){
        session.setAttribute("username",username);
        response.setHeader("refresh","1;URL=welcome.jsp");
    }
%>

通过request.getParameter( )方法获取提交“username”“passward”信息,通过session.setAttribute( )将username保存在session中,通过response.setHeader( )自动刷新跳转到welcome.jsp中

3.创建welcome

 <%if(session.getAttribute("username")!=null){ %>
   欢迎:<%= session.getAttribute("username") %>用户
   <a href="loginout.jsp">注销</a>
   <%}else{ %>
   请登入:<a href="login.jsp">登入</a>
   <%} %>
   <%if(session.isNew()) {%>
   欢迎新用户
   <%} else{%>
   欢迎老用户
   <%} %>
  </body>

通过session.getAttribute(“username”) 获取到username信息。注销是跳转到loginout.jsp

4.创建loginout.jsp将session内容销毁

<%
session.invalidate(); response.setHeader("refresh","1;URL=welcome.jsp");
%>

通过session.invalidate()销毁session,在跳转到welcome.jsp中判断是否还有session内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值