现在的位置: 首页 > 综合 > 正文

session和cookies的区别

2014年02月19日 ⁄ 综合 ⁄ 共 1948字 ⁄ 字号 评论关闭

 

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

 

 

抱歉!评论已关闭.