java Web(4)
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)的更多相关文章
- 高效 Java Web 开发框架 JessMA v3.5.1
JessMA 是功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hibernate.MyBatis 与 J ...
- 高效 Java Web 开发框架 JessMA v3.4.1
JessMA 是功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hibernate.MyBatis 与 J ...
- java web 之客户关系管理系统
这个周末真的是觉得自己学会了一个比较高大上的本领,为什么这么觉得呢?那是因为星期六的时候觉得自己可以看看源码能做出来,可是让我头疼的是花费了一上午的时间还是没有弄出来,还好上天给了我机会,要是没有老师 ...
- Java Web中的中文编码
Java Web开发中经常会遇到中文编码问题,那么为什么需要编码呢?因为人类需要表示的符号太多,无法用1个字节来表示,而计算机中存储信息最小单元为1个字节.所以必须指定char与byte之间的编码规则 ...
- java web后台开发SSM框架(Spring+SpringMVC+MyBaitis)搭建与优化
一.ssm框架搭建 1.1创建项目 新建项目后规划好各层的包. 1.2导入包 搭建SSM框架所需包百度云链接:http://pan.baidu.com/s/1cvKjL0 1.3整合spring与my ...
- JAVA WEB项目中各种路径的获取
JAVA WEB项目中各种路径的获取 标签: java webpath文件路径 2014-02-14 15:04 1746人阅读 评论(0) 收藏 举报 分类: JAVA开发(41) 1.可以在s ...
- JAVA WEB WITH IDEA
本文主要介绍使用IDEA开发环境,创建JAVA WEB 工程,并介绍war包的制作过程. 1 创建MAVEN工程
- java WEB开发入门
WEB开发入门 1 进入web JAVASE:标准- standard JAVA桌面程序 GUI SOCKET JAVAEE:企业-浏览器控制 web 2 软件结构 C/S :client ...
- Jenkins 2.16.3默认没有Launch agent via Java Web Start,如何配置使用
问题:Jenkins 2.16.3默认没有Launch agent via Java Web Start,如下图所示,而这种启动方式在Windows上是最方便的. 如何设置才能让出来呢? 打开&quo ...
- 5款强大的Java Web开发工具
1.WebBuilder这是一款开源的可视化Web应用开发和运行平台.基于浏览器的集成开发环境,采用可视化的设计模式,支持控件的拖拽操作,能轻松完成前后台应用开发:高效.稳定和可扩展的特点,适合复杂企 ...
随机推荐
- vue 使用插件
上传加载 :vue-infinite-loading
- 【codeforces 767C】Garland
[题目链接]:http://codeforces.com/contest/767/problem/C [题意] 一棵树; 树上的每个节点都有一个权值; 让你把一棵树切掉两条边; 然后把这棵树分成了3个 ...
- 调度器Quartz的配置文件中的线程池设置
在使用调度器Quartz来进行数据归档的时候,当我们开的定时任务很多的时候,就会出现一些定时任务不会被触发的现象,这就是线程阻塞.那到底什么叫线程阻塞呢? 线程阻塞,顾名思义就是说线程被阻塞了,没有按 ...
- kendo Grid的toolbar自定义
由于这个toolbar官方进增加了create,save还有一个是_____ 所以想要自定义话就需要使用 下面的代码(这个是MVVM模式) data-toolbar='[{ template: Ken ...
- Openfire:解决乱码问题
当部署openfire后,创建用户和发送离线消息时会出现中文字符乱码的问题.要解决这个问题需要同时配置openfire和mysql两端. 首先openfire端,在安装页面中指定odbc连接串中需要带 ...
- CF #319 div 2 E
在一个边长为10^6正方形中,可以把它x轴分段,分成1000段.奇数的时候由底往上扫描,偶数的时候由上往下扫描.估计一下这个最长的长度,首先,我们知道有10^6个点,则y邮方向最多移动10^3*10^ ...
- 怎样使用OpenShare部署和运营企业门户
怎样使用OpenShare部署和运营企业门户 这篇Blog是偏向企业内总体门户部署和运营的指南,是偏向总体管理和规划的.并非针对终端用户的OpenShare软件操作手冊,详细的操作能够上优酷看相关视频 ...
- 一些求数据库对象的SQL语句
use [mydb] go --存储过程 SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_type='PROCEDURE' AND SP ...
- Head First 设计模式 —— 策略设计模式
创建一个能够根据所传递的参数对象的不同而具有不同行为(动态绑定的多态机制)的方法,被称为策略设计模式.
- javascript 将变量值作为对象属性 获取对象对应的值
例子 var var="name"; var objname="obj"; objname=objname+"."+var; alert(e ...