web 应用程序状态管理
来源:互联网 发布:淘宝u站九块邮 编辑:程序博客网 时间:2024/05/21 08:37
目标
- 状态管理概述
- cookie
- Session
- URL重写
- 隐藏表单
Web状态管理概述
HTTP协议使用是无状态的连接
对于容器,每一个请求都是一个新的客户。
管理方案:
- cookie
- Session
- URL重写
- 隐藏表单(hidden)
什么是会话?
会话:打开浏览器,通过超链接或者按钮访问服务器,然后获取到内容,然后关闭浏览器,称为一次会话。
会话解决的问题?
用户访问服务器,想要保存当前的数据。
隐藏字段(隐藏表单)
在表单中加入:
<input type = "hidden" name = "session" ……>
- 对用户在网站上的访问进行跟踪
- 为服务器程序提供预定义的输入
- 储存动态产生的页面上下文信息
hidden:
- 可以区分多个表单提交。
- 可以保存当前用户操作表格的状态。
- 防止表单重复提交
- 保存用于的登录状态
不足:后台有时候需要动态生成一个hidden
cookie
cookie 是客户端的技术,程序把每个用户的数据都通过键值对的方式保存到cookie。
下次请求的时候,就将cookie放在请求头里面再次访问服务器,那服务器就可以根据cookie里面的内容来判断当前用户的状态。
代码操作
/*得到客户端发过来的cookie*/Cookie[] ck = request.getCookies();/*第一次是访问cookie是空的*/if(ck != null ){ for(int i = 0 ; i < ck.length ; i++){ System.out.println(); }}else{ /*创建cookie*/ Cookie cook = new Cookie("键","值"); /*发送回客户端保存cookie*/ /*cookie 的时间是默认会话就消失,所以调用setMaxAge设置过期时间,将cookie保存到硬盘。 参数的单位是秒*/ cook.setMaxAge(100); /*销毁cookie,设置setMaxAge(0)*/ response.addCookie(cook);}
Session
把客户的信息保存在服务端。
服务器端的技术,利用这个技术,可以为每一个浏览器(用户)创建一个独享的session
对象。
session的流程:
1.客户端请求服务器--创建一个session,将sessionID 保存到cookie里面去,再将cookie发送回客户端。
2.客户端再次发送请求,就将cookie发送给服务器,服务器取出sessionID去匹配所有的session,返回当前匹配的session对象。
代码操作
/*创建session对象,可以加入参数false ,就是如果没有匹配成功就返回null,如果加入了false 就不能用isNew()方法*/HttpSession hsession = request.getSession();/* * int id = hsession.getId();* 获取到cookie里面的id和session进行匹配* 匹配成功就返回当前session对象,匹配失败,就创建一个新的session. * 都是底层实现*//*当前方法可以判断session是新的还是直接返回匹配以前的session*/if(session.isNew()){ /*存储数据在session对象*/ session.setAttribute("键","值");}else{ session.getAttribute("键");}/*设置session的销毁时间,是以秒作为单位的,这里的时间是最长不活动时间*/session.setMaxInactiveInterval(2000);/*立即销毁,注销功能就是立即销毁*/session.invalidate();
配置文件设置销毁功能:<session> <!--这里的参数单位是分钟,只能是正整数,最长不活动时间间隔--> <sesssion-timeout>1<session-timeout></session>
cookie默认是会话结束就消失,为了处理这个问题,覆盖getsession底层自己创建好的cookieCookie c = new Cookie("JSESSIONID",session.getId());然后设置cookie的销毁时间c.setMaxAge(24*3600);
:上下午对象是所有servlet和所有用户都共享的,session是所有servlet共享的,但是每个用户是单独的session!
0 0
- Web应用程序状态管理
- Web 应用程序状态管理
- Web应用程序状态管理
- WEB应用程序状态管理
- web应用程序状态管理
- Web应用程序状态管理
- Web应用程序状态管理
- web应用程序状态管理
- Web应用程序状态管理
- WEB应用程序状态管理
- web 应用程序状态管理
- WEB应用程序状态管理
- Web应用程序状态管理
- Web应用程序状态管理
- 创建和管理有状态 Web 应用程序
- 创建和管理有状态 Web 应用程序
- Web应用程序状态管理 (1)
- JavaWeb(四)-----Web 应用程序状态管理
- OVS 中的各种网络设备 - 每天5分钟玩转 OpenStack(128)
- python实现遗传算法求解TSP旅行商问题(详细解释)
- 考研英语 - word-list-1
- Git
- QT项目二:五子棋游戏
- web 应用程序状态管理
- 文章标题
- STL中rel_ops说明
- Atitit MATLAB 图像处理 经典书籍attilax总结
- PowerBuilder DataWindow画板的更新特性详解
- hello world!
- Java——线程通信
- 手动创建Maven项目
- 什么是【真正的】兴趣爱好?以及它有啥好处?