《一:Cookie》
1.简介:
是一种 客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器中的cookie.当用户再去访问服务器中的web资源时,会带着各自的数据去访问;它是通过响应的方式放入cookie入浏览器的;其在浏览器中就是以entry保存着数据而已。
2.实际操作:
Cookie cookie = new Cookie(name, value);
resp.addCookie(cookie);
Cookie[] cookie = req.getCookies();
for(Cookie c: cookie){
if(c.getName().equals(“username”)){
username = c.getValues();
break;
}
}
3.修改Cookie中的数据:
cookie.setValue(String val);
Cookie cookie = new Cookie(String name, String value);
4.cookie的分类:
1.会话Cookie: 把cookie数据存放在浏览器内存中,一旦关闭浏览器,cookie就被销毁了,默认是此方式。
2.持久化cookie: 把cookie数据存在一个文件中(非内存,供下次使用),实现:给cookie设置最大的存活时间删除cookie值设置为0:
cookie.setMaxAge(int seconds);
5.解决cookie中文存取问题:
存:Cookie cookie = new Cookie(“username”, URLEncoder.encode(username, “utf-8”) )
取:username = URLDecoder.decode(cookie.getValue(), “utf-8”)
6.Cookie的缺陷:
1.不安全,只因保存数据再cookie依然不透明。
2.一个cookie只能存一个数据;因为cookie里的value只能存String.
3.存取的大小和数量都有限制
session解决
《二:Session》
1.简介(会话cookie演变而来,故无持久化,本质是会话session):
是服务器端技术,当用户的每一个浏览器发出请求的时候,在服务端创建一块内存空间,空间地址为JSESSIONID,在该空间可以存放多个任意类型的数据。以后每次浏览器再一次会话期内访问资源时,服务器吧该内存空间的地址的值响应给浏览器,后者通过ID即可找到内存,进而取出里面的值。
2.操作:
HttpSession getSession(): 从请求中获取,有则返回,无则创建一个返回
HttpSession getSession(true): 同上
HttpSession getSession(false): 有则返回,无则返回空集
void setAttribute(String name, Object value)
HttpSession session = req.getSession();
session.setAttribute(“USERNAME_IN_SESSION”, username);
req.getSession().getAttribute(“XX_IN_SESSION”);
String username = (String)req.getSession().getAttribute(“USERNAME_IN_SESSION”);
req.getSession().setAttribute(String name, Object value)
1.删除sessio中的某个属性:req.getSession().removeAttribute(String name)
2.销毁Session内存: req.getSession().invalidate();
手动设置:
1.req.getSesssion().setMaxInactiveInterval(int Seconds) :常不用
2.在当前web项目的web.xml中:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
默认:
Tomcat/config/web.xml中已设置30分钟。