session对象
session对象主要用于保存用户的各种信息,直到它的生命周期(一般为900s)超时或被人释放掉为止
可以通过session对象来判断此用户是否是合法用户
1. 譬如,如果用户没有登陆,则无论访问哪几个页面都会跳转以登陆页面
2. 购物车---à张三买东西,不能放到李四购物车上
在服务器上,通过session ID来区分 每一个上网用户
session 对象属于javax.serlvet.http.HttpSession接口的实例化对象
session属于Http协议范畴这内对象,所以只有唯一的一个http包下有此接口,没有任何继承关系
Session的主要方法
1, 服务器上通过session来区不同的用户 -->SessionID:任何连到服务器上的用户,
sessionID 是由服务器统一管理的,人为不能控制
方法:session.getId()
1. 判断是否是新session
public boolean isNew():判断当前的session是否是新建立的session
session的属性:
取得属性:
public void setAttribute(java.lang.String name,
java.lang.Object value)
取得属性:
public java.lang.Object getAttribute(java.lang.String name)
删除属性:
public void removeAttribute(java.lang.String name)
2. 范例户输入姓名:mldn,密码:lxh则表示成功,成功之后可以浏览welcome.jsp页面
login.jsp:表单,接收,判断
welcome.jsp:欢迎页,要求用户必须先登陆后,才能访问,否则不能访问会跳转到login.jsp页面
能过session能够对用户是否登陆做出验证
login.jsp
<%@page contentType="text/html;charset=gb2312"%> <form action="login.jsp" method="post"> 用户名:<input type="text" name="uname"><br> 密码 : <input type="text" name="upass"><br> <input type="submit" value="登陆"><br> </form> <% if(request.getParameter("uname")!=null&&request.getParameter("upass")!=null) { String name=request.getParameter("uname"); String passwrod=request.getParameter("upass"); if("mldn".equals(name)&&"lxh".equals(passwrod)) { //表示登陆成功 //通过flag判断是否在已经登陆成功 session.setAttribute("flag","ok"); //并登陆到welcome.jsp页面上去 response.sendRedirect("welcome.jsp"); } else { %> <h3>登陆失败</h3> <% } } %>
|
welcome.jsp
<%@page contentType="text/html;charset=gb2312"%> <%-- 用户必须先登陆之后,才能访问此页面 如果用户滑登陆,则提示回去重新登陆 --%> <% if(session.getAttribute("flag")!=null) { //session被设置过,正常登陆过 %> <h1>欢乐光临本页!!</h1><br/> <% } else { //两秒后跳转到login.jsp页面中 response.setHeader("refresh","2;URL=login.jsp"); %> <h1>您还未登陆,请先登陆</h1> <% } %>
|
4.用户注销:让用户的session失效
如果session失效,则在session所保留的全部操作也会消失
public void invalidate():使session失效(手工)
如果session长时间不使用,则也会自动失效
<%@page contentType="text/html;charset=gb2312"%> <% // ʹsessionʧЧ session.invalidate() ; %> <a href="welcome.jsp">welcome.jsp</a> |
5.得到session的创建时间:
public long getCreationTime()
此方法返回long类型,通过Date类可以取得一个完整时间
6.取得用户最后一次操作时间
public long getLastAccessedTime()
Session和Cookie
session和cookie用跨网页共享数据
session记录独有的个人信息,在不同页面中传递.
Cookie:保存于客户端,供浏览器与web服务器互通数据用的纯文字文件..当IE执行时,会在计算机中产生一个Cookie
session将信息保存在服务器上,而Cookie保存在客户端上
session比Cookie更安全,session比cookie更占资源
开发的原则:session要尽量少用,---尽量少向session 中保存信息
sessin使用了cookie机制,如果cookie被禁用,则session也无法使用
long l= session.getCreationTime(); long l2= session.getLastAccessedTime(); |