Web 应用程序状态管理

  通过隐藏表单域 hidden,cookie,session,重写URL来实现;

  cookie存在于客户端,浏览器关闭时失效

  cookie原理:服务器在响应请求时将一些数据以“键-值”对的形式通过响应信息保存在客户端

  Servlet中提供了如下一系列操作Cookie的API
  Cookie(name, value):构造方法用于创建一个或多个Cookie
  setMaxAge(int lifetime):设置Cookie的过期时间(以秒为单位)。默认值为负值(Cookie将在浏览器关闭时过期)
  getMaxAge():获取Cookie的过期时间。
  getName():获取Cookie的名字
  setValue(String value):指定Cookie的值。
  getValue():获取Cookie的值

  要将Cookie发送到客户端,Servlet应该按照下列的操作步骤执行:
  创建一个或多个Cookie,使用构造方法指定Cookie的名字和值
  使用setValue方法为Cookie设置属性值
  使用HttpServletResponse对象的addCookie()方法将Cookie插入到响应头中
  要读取客户端传入的Cookie,Servlet执行下列操作步骤:
  使用HttpServletRequest对象的getCookies方法返回一个Cookie对象数组
  Servlet遍历该数组(调用getName()方法),直到找到与名称相匹配的Cookie值

  

  Session存在于服务器

  Session原理 

  服务器可以为客户端创建并维护一个Session对象,用于存放数据。
  在创建Session对象的同时,服务器将会为该 Session对象产生一个唯一编号,这个编号称之为SessionID
  服务器以Cookie的方式将SessionID存放在客户端。
  当浏览器再次访问该服务器时,会将SessionID作为Cookie信息带到服务器,服务器可以通过该SessionID检索到以前的Session对象,并对其进行访问

  创建Session

  HttpSession session = request.getSession();

  HttpSession接口常用的一些方法
  setAttribute(java.lang.String, java.lang.Object):在Session对象中用一个名字绑定一个对象。
  getAttribute(java.lang.String):通过名字获取Session对象中保存的对象。
  removeAttribute(java.lang.String):在Session中删除与一个名字对应的对象。
  getCreationTime():返回第一次创建会话的时间。
  getLastAccessedTime():返回容器最后一次得到该会话ID的请求时间。
  setMaxInactiveInterval(int interval):对于会话指定客户请求的最大间隔时间,以秒为单位。-1表示永不过期
  getMaxInactiveInterval(int interval):返回客户请求的最大间隔时间。
  invalidate():会话结束,当前存在在会话中的所有会话属性也会解除绑定。
  getId():此方法返回每个session唯一的标识

  

  Session的存在依赖于cookie

  当cookie被禁用时,采用URL重写,及在地址后面添加SessionId;

  URL重写

  response.encodeURL()
  response.encodeRedirectURL(“/lovobook/sucess.html” )

  总结:  

  HTTP协议使用的是无状态的连接,连接只针对一个请求/响应
  状态管理方案:表单隐藏字段、Cookie、Session、URL重写
  Cookie是Web服务器发送到客户端浏览器并保存的简短文本信息
  Session对象就是服务器为客户端创建并维护的用于存放客户状态数据的对象
  用户会禁用Cookie。这时我们可以使用URL地址重写来解决
  通过HttpServletResponse的addCookie方法将该Cookie信息添加到响应信息中
  Session对象是某个Servlet调用HttpServletRequest.getSession()这样的语句时才被创建
  Session对象是保存在服务器端,浏览器关闭时并不意味着Session对象被删除
  Session只认SessionID不认人
  应当尽量使用维护时间短的域对象
  在向客户返回第一个响应时,会同时尝试设置Cookie和URL重写两种做法

  

java Web(4)的更多相关文章

  1. 高效 Java Web 开发框架 JessMA v3.5.1

    JessMA 是功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hibernate.MyBatis 与 J ...

  2. 高效 Java Web 开发框架 JessMA v3.4.1

    JessMA 是功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hibernate.MyBatis 与 J ...

  3. java web 之客户关系管理系统

    这个周末真的是觉得自己学会了一个比较高大上的本领,为什么这么觉得呢?那是因为星期六的时候觉得自己可以看看源码能做出来,可是让我头疼的是花费了一上午的时间还是没有弄出来,还好上天给了我机会,要是没有老师 ...

  4. Java Web中的中文编码

    Java Web开发中经常会遇到中文编码问题,那么为什么需要编码呢?因为人类需要表示的符号太多,无法用1个字节来表示,而计算机中存储信息最小单元为1个字节.所以必须指定char与byte之间的编码规则 ...

  5. java web后台开发SSM框架(Spring+SpringMVC+MyBaitis)搭建与优化

    一.ssm框架搭建 1.1创建项目 新建项目后规划好各层的包. 1.2导入包 搭建SSM框架所需包百度云链接:http://pan.baidu.com/s/1cvKjL0 1.3整合spring与my ...

  6. JAVA WEB项目中各种路径的获取

    JAVA WEB项目中各种路径的获取 标签: java webpath文件路径 2014-02-14 15:04 1746人阅读 评论(0) 收藏 举报  分类: JAVA开发(41)  1.可以在s ...

  7. JAVA WEB WITH IDEA

    本文主要介绍使用IDEA开发环境,创建JAVA WEB 工程,并介绍war包的制作过程. 1 创建MAVEN工程

  8. java WEB开发入门

    WEB开发入门 1 进入web JAVASE:标准- standard   JAVA桌面程序 GUI    SOCKET JAVAEE:企业-浏览器控制  web 2 软件结构 C/S :client ...

  9. Jenkins 2.16.3默认没有Launch agent via Java Web Start,如何配置使用

    问题:Jenkins 2.16.3默认没有Launch agent via Java Web Start,如下图所示,而这种启动方式在Windows上是最方便的. 如何设置才能让出来呢? 打开&quo ...

  10. 5款强大的Java Web开发工具

    1.WebBuilder这是一款开源的可视化Web应用开发和运行平台.基于浏览器的集成开发环境,采用可视化的设计模式,支持控件的拖拽操作,能轻松完成前后台应用开发:高效.稳定和可扩展的特点,适合复杂企 ...

随机推荐

  1. qwb和李主席

    qwb和李主席 Time Limit: 4 Sec  Memory Limit: 128 MB Description qwb和李主席打算平分一堆宝藏,他们想确保分配公平,可惜他们都太懒了,你能帮助他 ...

  2. Caused by: android.os.TransactionTooLargeException总结

    错误信息 Error: android.os.TransactionTooLargeException W/ActivityManager(344): android.os.TransactionTo ...

  3. [Usaco2007 Dec]队列变换

    [Usaco2007 Dec]队列变换 题目 FJ打算带他的N(1 <= N <= 30,000)头奶牛去参加一年一度的“全美农场主大奖赛”.在这场比赛中,每个参赛者都必须让他的奶牛排成一 ...

  4. nyoj_38_布线问题_201403121753

    布线问题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 南阳理工学院要进行用电线路改造,现在校长要求设计师设计出一种布线方式,该布线方式需要满足以下条件:1.把所有 ...

  5. [bzoj4066/2683]简单题_KD-Tree

    简单题 bzoj-4066 题目大意:n*n的棋盘,开始为均为0,支持:单点加权值,查询矩阵权值和,强制在线. 注释:$1\le n\le 5\cdot 10^5$,$1\le m \le 2\cdo ...

  6. JDK(Java Development Kit)内置常用自带工具一览(转)

    注意:可能随着JDK的版本升级,工具也会随着增多. JDK(Java Development Kit)是Java程序员最核心的开发工具,没有之一. JDK是一个功能强大的Java开发套装,它不仅仅为我 ...

  7. IO 字节流学习

    复制图片和MP3 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.Fil ...

  8. 查询和删除数据表中反复数据的sql

    1.查询表中反复数据. select * from people where peopleId in (select   peopleId   from   people   group   by   ...

  9. Oracle数据库软件标准版的一个限制:仅仅能用一个rman channel

    Oracle数据库软件标准版的一个限制:仅仅能用一个rman channel Restrictions in "Standard Edition" Rman channel all ...

  10. robin 今天来南大了

    今天非常高兴,在学校的体育馆见到了李彦宏博士. 这是第一次真实的见到了曾经仅仅能在媒体上才干够见到的人,真实,感觉非常好. 我算不上李彦宏的粉丝,也不是非常热衷于百度这个公司,可是我如今仍然心情澎湃. ...