您的位置:首页 > 其它

session和cookies的区别

2013-06-07 09:25 176 查看
 

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

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: