Session对象
大家都知道HTTP是无状态的通信协议,Web服务器为了区别不同的用户和跟踪用户的操作状态,在Java Servlet API中使用Session机制来实现。存放于服务器端的Session对象中保存每一个用户的信息,而Session的ID却保存在客户端的Cookie中,这样一来,客户端和服务器端在每次请求/相应过程中就能确保不会错位了。 每一个客户端都会得到一个唯一的SessionID,在服务器端有一个与之对应的Session对象。Session对象有其特定的声明周期,它开始于客户端的第一次访问,结束于以下几种情况:
(1)客户端关闭浏览器 (2)Session过期 (3)服务器端调用了Session对象的invalidate()方法
用法举例:
sessionDemo.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head></head> <body> <h2>Session对象实例</h2><hr/> <% String[] users ={"admin","liubin","dywdyw"}; String user=null; String logined =null; Date createTime,lastAccessTime; if(request.getParameter("user")!=null){ user =request.getParameter("user"); }else{ out.println("对不起,请在请求参数中附加用户账号!"); return ; } for(int i=0;i<users.length;i++){ if(users[i].equalsIgnoreCase(user)){ session.setAttribute("logined","yes"); } } if(session.getAttribute("logined")!=null){ logined=session.getAttribute("logined").toString(); if(logined.equals("yes")){ createTime =new Date(session.getCreationTime()); lastAccessTime =new Date(session.getLastAccessedTime()); out.println("恭喜你成功登陆!<br/>"); out.println("你的SessionID为:"+session.getId()+"<br/>"); out.println("创建时间为:"+createTime+"<br/>"); out.println("最后的访问时间为:"+lastAccessTime+"<br/>"); out.println("最大不活动时间为:"+session.getMaxInactiveInterval()+"秒<br/>"); }else{ out.println("对不起,你输入的账户有误!"); } }else{ out.println("对不起,你输入的账户有误!"); } %> </body> </html> 结果:
1.没有带请求参数
2.带请求参数
|
|