Session和Cookie

 一:会话技术

1.会话:用户打开浏览器,点了一些超链接,关闭浏览器的过程

2.会话过程中会产生一些数据,这些数据是每个用户独享的,需要找个地方存起来

3.会话技术就是解决上述问题的,Cookie是客户端技术,Session是服务器端技术

 

二:Cookie对象

1.Cookie对象的创建

Cookie cookie=new Cookie(key,value);

2.发送Cookie

Response.addCookie(cookie);

3.获取指定的Cookie

// 获得用户发送的所有Cookie

      Cookie[] cookies = request.getCookies(); // 如果没发Cookie过来,为null

      // 遍历 找到lastAccessTime

      String lastAccessTime = null;

      for(int i=0; cookies!=null&&i<cookies.length; i++) {

         String name = cookies[i].getName();  // 一个Cookiename

         if("lastAccessTime".equals(name)) {

            // 找到了, 记value

            lastAccessTime = cookies[i].getValue();

         }

}

4.设置Cookie的有效时间

Cookie默认情况下在当前浏览器进程有效,如果想让Cookie长期驻留客户机的硬盘,就需要指定时间 cookie.setMaxAge(time) time以秒为单位,setMaxAge(0):通知浏览器删除该cookie

 

三:Session对象

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);

 

4. session的应用 (重点)

简单购物车的实现  ListServlet BuyServlet ListCartServlet

用户登录 Login.jsp LoginServlet indes.jsp LogoutServlet

防止表单重复提交

可以用js来做,但是只能增加用户的体验,不能完全防止坏人

session做防表单重复提交

FormServlet   HandleFormServlet  TokenProcessor

图片验证码

 

5. session 细节

       Session默认的超时时间为 30 分钟   

       我们可以在 web.xml 文件中进行配置

<session-config>

      <session-timeout>1</session-timeout>

   </session-config>

 

 

 

   request.getSession(create)

   create 默认情况下是 true  服务器拿着id去找session对象,找到了返回,没找到创建

   如果指定为false,则为只获得不创建

 

Session.invalidate() 立即销毁session

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(职场,休闲,session和cookie)