zoukankan      html  css  js  c++  java
  • 会话技术

    一、会话技术概述
    1、Cookie技术:客户端技术
    Cookie是一段小信息。Servlet把这些小信息写到客户端的缓存中(Set-Cookie),客户端还能带着小信息给服务器(Cookie)。
    a、Cookie的属性
    name:(必须的)
    value:(必须的)
    comment:(可选的)针对该Cookie的注释。
    path:(可选的)默认值是写Cookie的那个Servlet的访问路径。/day06/servlet/CookieDemo1
    有一个cookie,名为a,它的路径为/day06/servlet
    当访问http://localhost:8080/day06/aaa/SomeServlet时,浏览器不会带名为a的cookie带过来。
    当访问http://localhost:8080/day06/servlet/bbb/ccc/ddd/aaaCookieDemo2,浏览器会带名为a的cookie带过来。

    如果把cookie的路径设置为"/day06",意味着,day06中的所有资源都能得到a。

    domain:(可选的)默认值是写Cookie的那个网站。如果domain取值为localhost,那么只有访问localhost这个网站时才会带过去。
    maxage:(可选的)设置Cookie的最大存活时间。默认值是浏览器进程(一次会话)。单位是秒。
    version:(可选的)
    每个客户端针对一个网站,只支持20个cookie。最多保存300个cookie。每个cookie大小不能超过4KB
    Tip:
    domian+path+name:唯一定位一个Cookie
    localhost/day06/servlet/lastAccessTime
    localhost:domain
    /day06/servlet/:path
    lastAccessTime:name


    b、如何向客户端写Cookie:HttpServletResponse.addCookie(Cookie c)
    c、服务端如何得到客户端带过来的cookie:HttpServletRequest.getCookies()

    2、HttpSession技术:服务端技术
    ---------------------------------------------------------------------------------------------------------------------------------
    五、Cookie原理
    六、Cookie案例:3个案例
    ---------------------------------------------------------------------------------------------------------------------------------
    七、HttpSession原理
    1、服务器端技术:HttpSession,它也是一个域对象。
    2、HttpSession服务器端技术,实际上用的是cookie技术。服务器向客户端写了一个特殊的cookie,名字为"JSESSIONID",值为当前session对象的id(唯一),path是当前应用。
    3、HttpSession中常用的方法
    a、HttpServletRequest.getSession():根据客户端cookie(JSESSIONID)的值查找session对象,没有,创建一个session对象。
    b、HttpServletReqeust.getSession(boolean create):如果为true,与a没有区别。如果为false,只会查找。
    c、HttpSession.getId():唯一的session对象标识。

    ---------------------------------------------------------------------------------------------------------------------------------

    八、HttpSession案例:3个案例
    MD5、Base64编码;UUID等等
    九、HttpSession对象的状态转换
    十、客户端禁用cookie后,会话数据的保存问题
    十一、浏览器IE,在什么情况下会开启一次新的会话。

    一、Session案例:
    1、完成用户的一次性登陆(含验证码)
    2、防止表单重复提交:MD5、Base64编码
    二、Session对象的状态转换(生命周期)
    1、修改HttpSession对象的默认失效时间30分钟
    web.xml
    <session-config>
    <session-timeout>1</session-timeout><!--失效时间,单位是分钟-->
    </session-config>
    三、浏览器IE,在什么情况下会开启一次新的会话。
    1、IE7(含)-:
    开启一个新的浏览器进程,就是一次新会话。
    2、IE8(含)+:
    开启一个新的浏览器进程,并没有开始新会话。(文件菜单、开始新会话)

    新开启一个Tab页,与原有页面属于同一次会话。
    通过一个页面的超链接(target="_blank"),与原有页面属于同一次会话。

    四、客户端禁用cookie后,会话数据的保存问题
    1、对于使用http://localhost来访问网站,即使客户端禁用了cookie,但是无效。
    2、解决办法:URL重写。
    http://192.168.1.250:8080/day07/servlet/RegistServlet
    ---->
    http://192.168.1.250:8080/day07/servlet/RegistServlet;JSESSIONID=2983749832743298

    String url = HttpServletResponse.encodeURL(String url)
    特点:如果服务器知道客户端没有禁用cookie,那么该方法将不会重写URL。

  • 相关阅读:
    [Linux] Chmod 改变权限
    [linux命令]基本命令
    [Linux命令] 查看目录大小du
    [Linux命令]格式化mkfs
    在VMWare下的Linux切换
    .net的MSMQ异步调用
    CASSINI源代码分析
    [Wix] RadioButton与ListItem的属性要改掉了
    如何快速生成Insert数据插入语句?
    撕纸
  • 原文地址:https://www.cnblogs.com/yys369/p/5325944.html
Copyright © 2011-2022 走看看