servlet Session基础知识介绍



servlet Session基础知识介绍。

Session对象

Session基础

      服务器可以为每个用户浏览器创建一个session对象

      注意:一个浏览器独占一个session对象(默认情况下)

      Session和Cookie的主要区别在于:

•         Cookie是把用户的数据写给用户的浏览器。

•         Session技术把用户的数据写到用户独占的session中。

      Session对象由服务器创建,开发人员可以调用request对象的getSession方法得到session对象

一个简单的Session程序

       String name = request.getParameter(“name”);

       // session域对象

       // name存入session域

       HttpSession session = request.getSession(); // 如果有就获得,如果没有就创建

      

       session.setAttribute(“name”, name);

    }

public void doGet(HttpServletRequest request, HttpServletResponse response)

           throws ServletException, IOException {

       // 从session域中取出name

       HttpSession session = request.getSession();

       String name = (String) session.getAttribute(“name”);

       response.getWriter().write(name);


    }

1.       session的原理

request对象有个方法是getSession()

首先看浏览器是否发送了Cookie (JSESSIONID) ,如果发了,拿着id去内存中找对应的session对象返回

如果没有发Cookie或者没找到对应的Session对象,创建一个新的Session对象

getSession( boolean create)

create 为true的时候,如果内存有session就返回,没有就创建新的

create为false的时候,意味着只查找不创建,有就返回,没有不创建,返回null;

2.       session的运行要依靠cookie来发送JSESSIONID

如果想让多个浏览器共享一个session,我们就需要人工发送Cookie,并设置Cookie的有效时间

3.如果浏览器禁用Cookie,那么Session也玩不起来了

浏览器禁用Cookie

要想让session好用,就需要在页面跳转时发送sessionid

有一个技术url重写

重写后的地址会在原有的url地址的基础上加上JSESSIONID

如果是超链接或表单提交的地址,重写方式如下:

String newUrl = response.encodeURL(url);

如果是请求重定向的地址,方式如下:

String newUrl = response.encodeRedirectURL(url);

http://blog.sina.com.cn/s/blog_666a2f670100pqkt.html