Session是服务器端的技术,cookie是客户端的技术。
下面写一个cookies来显示上次浏览时间的例子。
packagecom.fish;
importjava.io.IOException;
importjava.io.PrintWriter;
importjava.util.Date;
importjavax.servlet.ServletException;
importjavax.servlet.http.Cookie;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
public class CookiesDemo extends HttpServlet {
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");//
response.setContentType("text/html;charset=UTF-8");//这些是控制字符乱码的
PrintWriter outPrintWrit =response.getWriter();
outPrintWrit.print("上次访问时间:");
Cookiecookie = new Cookie("lasttime", System.currentTimeMillis()+"");//第一次得设置cookie的名字,和内容。
cookie.setMaxAge(60 * 60 * 24 * 30);//设置cooki的有效时间
cookie.setPath("/cookiesdemo");//设置cookie的显示路径
response.addCookie(cookie);//将cookie添加到响应中
Cookie[] cookies = request.getCookies();//你想接受cookie必须先弄一个cookie数组接收cookie
for (int i = 0; cookies !=null && i < cookies.length; i++) {//第一次cookies是没有值的。所以要判断。
if (cookies[i].getName().equals("lasttime")) {//获取你以前的cookies
long c = Long.parseLong(cookies[i].getValue());
Date date = new Date(c);
outPrintWrit.print(date.toLocaleString());
}
;
}
}
}
细节:一个浏览器一般只存300个cookie,每个站点一般在30个,信息大小,一般在4kb,而清除cookie技术是在创建一个名字相同的cookie。让他的cookie的存在时间为0。那么cookie就没有了。而且服务器关闭不影响cookie。不同的浏览器的cookie也是没有影响的。
2session是会话的意思,. 一个浏览器只有一个Session, 浏览器关闭Session就消失了.其实这种方法是不正确的.
要了解Session首先要知道一个概念:Session的销毁只有两种情况:第一:session调用了 session.invalidate()方法. 第二:前后两次请求超出了session指定的生命周期时间. 其中Session的生命周期时间可以在web.xml配置. 默认30分钟 在web.xml可以做如下配置:
。
一般典型的用例就是购物车。
一般用法。
HttpSession session2=request.getSession();
session2.setAttribute(name,value);//现设置session的名字,和值值可以是任何类型的。
session2.getAttribute(name);//可以在别的页面通过相同的名字访问session