session对象

来源:互联网 发布:淘宝空包代发哪个好 编辑:程序博客网 时间:2024/05/16 11:03
 

 

1、譬如,如果用户没有登陆,则无论此用户访问了那几个页面都会跳转回登陆页

2、购物车张三买的东西,不能放到李四的购物车

 

     在服务器上,通过session来区分每一个上网用户

session对象属于javax.servlet.http.HttpSession接口的实例化对象

session属于Http协议范畴之内的对象,所以只有唯一的一个http包下有此接口,没有任何继承关系。

用户只要一连接到服务器,则立刻分配一个sessionId给用户

 

Session的主要方法:

1、服务器上通过session来分别不同的用户

  Session ID:任何连到服务器上的用户,服务器都会为

分配唯一的一个不会重复的session ID

     sessionID是由服务器统一管理的,人为不能控制

     方法:session.getId()

     长度为:32

 

 

2判断是否是新的session

   public boolean isNew()

   判断当前的session是否是新建立的session

3session的属性设置

   设置属性:

        public void setAttribute(String name,

                                Object value)

   取得属性:

         public Object getAttribute(String name)

   删除属性:

         public void removeAttribute(String name)

 

范例:用户输入姓名为mldn,密码为lxh,则表示登陆成功,成功之后可以浏览welcome.jsp页面

为了说明问题:建立两个页面:

· login.jsp:表单、接收、判断

· welcome.jsp:欢迎页,要求用户必须先登陆之后,才能访问,否则不能访问

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="登陆">

</form>

 

<%

       // 判断是否有请求内容

       // 在自提交的页面中,必须对程序第一次运行做出处理

       if(request.getParameter("uname")!=null&&request.getParameter("upass")!=null)

       {

              // 第一次的时候,并不能取得请求的参数

              String name = request.getParameter("uname") ;

              String password = request.getParameter("upass") ;

              // System.out.println(name) ;

              // System.out.println(password) ;

              if("mldn".equals(name)&&"lxh".equals(password))

              {

                     // 表示登陆成功

                     // 通过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>

<%

       }

       else

       {

              // 两秒后跳转到login.jsp页面之中

              response.setHeader("refresh","2;URL=login.jsp") ;

%>

<h1>您还未登陆,请先登陆!!!</h1>

<%

       }

%>

 

 

 

 

 

 

 

 

     通过session能够对用户是否登陆做出验证

 

注意:实际上与上述三个操作属性的方法类似的还有以下三个方法:

  · public void putValue(String name, Object value) setAttribute

  · public Object getValue(String name) getAttribute

  · public void removeValue(String name) removeAttribute

 此三个方法已过时,不建议再使用

 

4、用户注销让用户的session失效

 如果session失效,则在session所保留的全部操作也会消失

      public void invalidate():使session失效 (手工)

 如果session长时间不被使用,则也会自动失效

 

 

5得到session的创建时间

 public long getCreationTime()

 此方法返回long类型,通过Date类可以取得一个完整的时间

6取得用户最后一次操作的时间

 public long getLastAccessedTime()

范例:需要求出用户在线时间:

 以下公式:最后一次操作时间-创建时间

 

 

session将信息保存在服务器上,而cookie保存在客户端上

sessioncookie更安全,sessioncookie更占用资源

开发的原则:session要尽量少使用 —— 尽量少向session中保存信息

session使用了cookie的机制,如果cookie被禁用,则session也无法使用