1 状态管理

a) 什么是状态管理?
将浏览器与web服务器之间多次交互当做一个整体处理,并且将多次交互涉及的数据(即状态)保存下来.

b) 如何进行状态管理?

  1. 可以将状态保存在客户端
    将状态保存到浏览器这边,通常使用Cookie技术
  2. 将状态保存到服务器端(session 会话)

c) Cookie

  1. 什么是coolie?
    服务器为了识别用户身份临时存在浏览器端的少量数据.
  2. 工作原理
    浏览器访问服务器时,服务器将一些数据已set-cookie消息头的形式发送给浏览器.浏览器会将这些数据临时保存下来;当浏览器再次访问服务器时,会将这些数据以cookie消息头的形式发送给服务器
  3. 添加cookie
    cookie c = new cookie(string name,string value);
    注:name:cookie名称 value:cookie值
    response.addCookie(c);

d) 读取Cookie
Cookie[] request.getCookies();
注:有可能返回null;
String cookie.getName();
String cookie.getValue();

e) 编码问题

  1. Cookie只能存放合法的ascii字符.
  2. 如果要存放中文,可以将中文转换成合法的ascii字符形式.
    String URLEncoder.encode(String str,String charset)
    String URLdecode,decode(String str,String charset)

    注:建议添加cookie时,都统一编码(使用以上对保存的数据进行处理)

f) 生存时间问题
cookie.setMaxAge(int seconds);//设置生存时间

  1. 单位是秒
  2. Sencods>0 浏览器通常会将cookie保存在硬盘上,超过指定的时间,cookie失效.
    sencods<0 默认值(浏览器会将cookie保存在内存中)
    sencods=0 删除cookie.将cookie的时间设置为0就删除了.

g) Cookie的路径问题

  1. 什么是cookie的路径问题?
    浏览器访问服务器上某地址,会比较请求地址是否符合cookie的路径要求,只有符合的cookie才会被发送。
  2. Cookie的默认路径?
    等于添加cookie的web组件的路径:比如:/servlet-day06/biz01/addCookie.jsp添加了一个cookie则cookie的默认路径是/servlet-day06/biz0.
  3. 匹配规则:
    要访问的地址必须是cookie的路径或者其子路径.
  4. 设置cookie路径
    cookie.setPath(String path);

h) Cookie的限制

  1. Cookie不安全.(敏感数据要加密处理)
  2. Cookie可以被用户禁止.
  3. Cookie只能保存少量数据(大约4k).
  4. 浏览器端保存的cookie的数量也有限制.(几百个)
  5. Cookie只能保存字符串.

2 Session(会话)

a) 什么是session?
服务器端为了保存状态而创建的一个特殊的对象.

b) 工作原理
浏览器访问服务器时,服务器创建一个特殊的对象session(该对象有唯一一个id,称之为sessionid)服务器会将sessionid以cookie的形式发送给浏览器;当浏览器在访问时,会将sessionid发送过来,服务器端可以利用这个session找到对应的session对象.

c) 如何获得session对象?

  1. 方式一
    httpSession session = request.getSession(boolean flag);
    当flag为true时,先查看请求当中有没有sessionid,如果没有则创建一个session对象,如果有,依据sessionid查找对应的session对象.如果找到则返回,找不到会创建一个新的session对象.
    当flag为false时,先查看请求当中有没有sessionid,如果没有则返回null,如果有,依据sessionid查找对应的session对象.如果找到则返回,找不到返回null.
  2. 方式二
    httpSession session = request.getSession();
    等价于request.getSession(true);

d) 几个方法

  1. String session.getId();
  2. setAttrbute(String name,object obj);
  3. Object getAttrbute(string name);
  4. removeAttrbute(string name);//解除绑定

e) session超时

  1. 什么是session超时?
    服务器会将空闲时间过长的session对象删除掉.
    注:为了节省内存空间的占用.服务器默认的超时限制一般是30分钟.
  2. 怎么修改?
    配置文件(web.xml)中修改session config的时间数值.
  3. SetMaxInactiveInterval(int second);//两次请求之前的最大间隔时间.如果超过了时间限制则服务器会销毁session对象.

f) 删除session
  invalidate();

最新文章

  1. HTML语义化:HTML5新标签——template
  2. Linux 进程详解
  3. 洛谷P3128 [USACO15DEC]最大流Max Flow [倍增LCA]
  4. 在springMVC的controller层获取view层的参数的方式
  5. BeginInvoke与EndInvoke方法解决多线程接收委托返回值问题
  6. BestCoder15 1002.Instruction(hdu 5083) 解题报告
  7. 软件工程随堂作业--随机产生30到四则运算(c语言)
  8. EasyMock 使用方法与原理剖析
  9. ArrayList--卧槽这就是源码
  10. Python基础篇-day4
  11. ubuntu下安装pdo和pdo_mysql扩展
  12. JavaSE基础篇—流程控制语句
  13. 【bzoj2151】种树
  14. Vuejs的$watch实现原理
  15. vscode, cmake编译多个C++文件
  16. call()和apply()
  17. nagios系列(六)之nagios实现对服务器cpu温度的监控
  18. Node.js随手笔记
  19. struts建立工程helloworld
  20. 20165205 2017-2018-2 《Java程序设计》第七周学习总结

热门文章

  1. 《Unix 网络编程》05:TCP C/S 程序示例
  2. 从零开始学YC-Framework之鉴权
  3. 代码调用Rally的接口介绍
  4. 搭建个人博客,Docsify+Github webhook+JGit解决方案
  5. SAP 实例- 页签tabsrip
  6. Spring jdbctemplate和事务管理器
  7. centos7 离线升级/在线升级操作系统内核
  8. 从Hadder看蛋白质分子中的加氢算法
  9. Java创建TXT文件并写入 内容
  10. centos7解决无法上网的问题