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

来源:互联网 发布:内存 知乎 编辑:程序博客网 时间:2024/06/15 23:25

    • session
      • 一session几个常用例子
      • 二基本方法
      • 三设置销毁时间
      • 四session的生命周期
      • 五session几个常用的方法
      • 六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内容

原创粉丝点击