HttpSession,Session,Cookie的认识

package javax.servlet.http;

import java.util.Enumeration;

import javax.servlet.ServletContext;

public interface HttpSession {
    public long getCreationTime();
    public String getId();
    public long getLastAccessedTime();
    public ServletContext getServletContext();
    public void setMaxInactiveInterval(int interval);
    public int getMaxInactiveInterval();
    @Deprecated
    public HttpSessionContext getSessionContext();
    public Object getAttribute(String name);
    @Deprecated
    public Object getValue(String name);
    public Enumeration<String> getAttributeNames();
    @Deprecated
    public String[] getValueNames();
    public void setAttribute(String name, Object value);
    @Deprecated
    public void putValue(String name, Object value);
    public void removeAttribute(String name);
    @Deprecated
    public void removeValue(String name);
    public void invalidate();

  这是HttpSesion接口的代码,去掉了注释,方法没有几个,从中看setAttribute()的方法,看完这个方法就明白了,这是cookie的翻版。有几个弃用的方法,能用的方法并不是很多。

  一般来说,HttpSession也是依赖于Cookie的,如果client禁用cookie,server没有办法记住状态。亲测了taobao.com,禁止cookie后,就没有状态了,虽然可能有其他方法,但是大厂都这么做,我也不用去想别的办法了。

Cookie和Session

web服务一个特点是提供个性化服务,为很多客户端提供服务,那么每个用户不同,服务自然不同,所以要记住用户及其状态,这也很多应用软件的通用功能。

   由于http是无状态的,Session和Cookie是两个基本的技术,在书上看到Cookie,感觉自己根本不会使用Cookie技术。

    首先,Cookie在lib的哪个包下?不知道吧,javax.servlet.http.Cookie,其次,Cookie有哪些方法和变量?你现在只知道其存储键值对,存在客户端。并且一个Cookie对象只能存一个键值对,这样说Cookie的特点就比较明白了。然后就可以使用Cookie写个案例了,一点点积累。

    现在感觉对Cookie还是一知半解,到底在服务器和客户端是怎么传递的呢?还有类似的session,form等

   接下来就要说说Session对象,javax.servlet.http.Session; java.util.Enumeration<java.lang.String> getAttributeNames(), void setMaxInactiveInteranal(int seconds);数据保存在服务器端,每个Session的唯一标识符发送至客户端。用户第一次访问时就自动为之创建session,所以无需new,并且浏览器请求时自动发送sessionID这样服务器就是知道是哪个session了

 

posted @ 2018-12-31 13:55  懂得了才能做一些改变  阅读(390)  评论(0编辑  收藏  举报