session和cookie
1、JSP内置对象session
2、设置cookie属性的常用方法
session:会话(一个会话可以提交多次请求),session是将数据保存在服务器里面(临时),关掉网页数据也会消失,也可以用代码设置时间销毁。
1、使用session获取用户名
HttpSession session = req.getSession();
//setAttribute:参数1:键名,参数2:值。
session.setAttribute("uname",uname);
//然后在jsp里使用
用户名:<%=session.getAttribute("uname")%>
2、使用session做销毁(默认的时间是三十分钟)
HttpSession session = req.getSession();
//session的销毁时间是以秒为单位
session.setMaxInactiveInterval(60);
//立即销毁,不需要设置时间
session.invalidate();
//在web.xml
<session-config>
<session-timeout>5</session-timeout>//5分钟之后销毁
</session-config>
Cookie:Cookie 是服务器保存在浏览器的一小段文本信息,每个 Cookie 的大小一般不能超过4KB。浏览器每次向服务器发出请求,就会自动附上这段信息。
使用Cookie
//创建Cookie
//parpameter:用于代表cookie的名称(key)
//value:用于表示当前key名称所对应的值
Cookie newCookie = new Cookie("parpameter",value);
//写入Cookie
response.addCookie(newCookie);
Cookie代码销毁
/* 用cookie实现注销 */
Cookie[] cks = request.getCookies();
// 2.遍历cks
if(null != cks){
for(Cookie ck : cks){//ck表示 cks里面的每个对象
if(null != ck){
//3.找到保存用户名的cookie对象
if("uname".equals(ck.getName())){
ck.setMaxAge(0);//设置cookie的有效活动时间为0
if("upwd".equals(ck.getName())){
ck.setMaxAge(0);
}
response.sendRedirect(request.getContextPath()+"/home/UserLogin.jsp");
}
}
}
}
Cookie 和 Session 有什么不同?
1、作用范围不同,Cookie 保存在客户端(浏览器),Session 保存在服务器端。
2、存取方式的不同,Cookie 只能保存 ASCII,Session 可以存任意数据类型,一般情况下我们可以在 Session 中保持一些常用变量信息,比如说 UserId 等。
3、有效期不同,Cookie 可设置为长时间保持,比如我们经常使用的默认登录功能,Session 一般失效时间较短,客户端关闭或者 Session 超时都会失效。
4、隐私策略不同,Cookie 存储在客户端,比较容易遭到不法获取,早期有人将用户的登录名和密码存储在 Cookie 中导致信息被窃取;Session 存储在服务端,安全性相对 Cookie 要好一些。
5、存储大小不同, 单个 Cookie 保存的数据不能超过 4K,Session 可存储数据远高于 Cookie。