JSP-04- 实现数据的保存
.1 Session
一段时间内,单个客户与Web服务器的一连串相关的交换过程。
Ø 4.1.1 应用的场景: 用户登录后保存用户状态
确定用户的唯一 Sessin.getId();
Ø 4.1.2 会话的创建和使用:
创建
Httpsession session= request.getSession(Boolean value);
Httpsession session= request.getSession();
在第一种方法中,布尔值为true时,如果存在与当前请求关联的会话,就返回该会话,否则就创建一个新的会话,并把该会话返回。布尔值为 flase 时,如果存在会话返回,否则返回 null, 不再创建会话。
第二种方法等同于第一种方法中的布尔参数值为true的情况。
使用
赋值语法: public void setAttribute(String name, Object value) ;
用法: session.setAttribute(“name”,”张曼”);
取值语法: public Object getAttribute(String name);
用法:String username = (String)session.getAttribute(“name”);
Session会保存在服务器端,如果没有清理机制,会导致性能问题或服务器崩溃。
清空Session:
1)程序主动清除Session数据
设置会话失效: session.invalidate(); //注销时
移除会话中一个属性:
语法: public void removeAttribute(String name);
用法: session.removeAttribute(“name”);
2)服务器主动清除长时间没有再次发出请求的session
设置会话过期时间:
方法一:public void setMaxInactiveInterval(int interval); (单位:秒)
可以再给Session赋值后,直接设置会话过期时间
方法二: 配置 Web.xml文件
添加
<session-config>
<session-timeout>30<session-timeout>
</session-config> (单位:分钟 注意放在 wep-app中)
结束Session的三种方式:
- 关闭浏览器
- 两次访问的间隔时间大于非活动时间
- 调用HttpSession的invalidate()方法
Ø 4.1.3 Session的生命周期
HttpSession技术不属于Http协议范围内,是由web容器为程序提供的服务。
4.2 cookie
Ø 4.2.3 应用场景
关闭浏览器,结束会话,重启后,用户名已填写。登录邮箱或其他服务,页面直接填好了用户名。
Ø 4.2.4 使用方法
public void addCookie(Cookie cookie)
Cookie以文件的形式保存信息,存放在客户端,可以再IE设置该文件。
添加数据: public void addCookie(Cookie cookie)
获取数据: public Cookie[] getCookies()
设置有效期: public void setmaxAge(int expiry)
用户可以禁用: cookie
添加:Cookie cookie = new Cookie(“变量名”,值);
Cookie.setmaxAge(60*60) ; //设置有效时间,默认为妙
Response.addCookie(cookie);
返回: Cookie[] cookie = request.getCookes();
for(……){
if(cookie.getName().equals(“变量名”)){
user=cookies[i].getValue;
}
}
禁用Cookie
4.3 application
4.3.1 使用场景: 统计页面访问次数,同时在线的人数
4.3.2 实现方式: public void setAttribute(String name,Object object)
Public Object getAttribute(String name)
<%
Object count = application.getAttribute(“count”);
if(count ==null){
application.setAttribute(“count”,new Integer(1));
}else{
Integer I = (Integer)count;
application.setAttribute(“count”,i.value()+1);
}
%>
Request中存储的数据尽在一个请求中可用。
Session中存储的数据在一个会话有效期内可以。
application中存储的数据在在整个web项目中可以。