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了

HttpSession的认识的更多相关文章

  1. java使用websocket,并且获取HttpSession,源码分析

    转载请在页首注明作者与出处 http://www.cnblogs.com/zhuxiaojie/p/6238826.html 一:本文使用范围 此文不仅仅局限于spring boot,普通的sprin ...

  2. HttpSession与Hibernate中Session的区别

    一.javax.servlet.http.HttpSession是一个抽象接口 它的产生:J2EE的Web程序在运行的时候,会给每一个新的访问者建立一个HttpSession,这个Session是用户 ...

  3. 被我们忽略的HttpSession线程安全问题

    1. 背景 最近在读<Java concurrency in practice>(Java并发实战),其中1.4节提到了Java web的线程安全问题时有如下一段话: Servlets a ...

  4. HttpSession

    (Cookie是用来设置浏览器保存数据的时间的: Session是只要浏览器不关闭,数据则会存在,一旦关闭浏览器数据即消失 ) 1. HttpSession概述 * HttpSession是由Java ...

  5. JSP中的 HttpSession、pageContext对象

    pageContext 隐含对象对应javax.servlet.jsp.PageContext,都自动的被加入至pageContext中, 您可以由它来取得与JSP相关的对应之Servlet对象,像是 ...

  6. JavaWeb学习笔记——开发动态WEB资源(八)cookies和httpsession

    会话: cookies: (1)cookies是WEB服务器发送到浏览器的简短文本信息 (2)cookies可以禁用 httpsession: 一次会话是从你打开浏览器开始到你关闭浏览器结束 提供一种 ...

  7. HTTP-Session工作机制

    HTTP-Session将HTTP这种无状态协议通过session来保存状态.然而session通过记录服务器生成编号来标识协议,从而服务器就可以识别协议的状态. session保存服务器端,  co ...

  8. HttpSession的线程安全问题及注意事项

    摘自http://blog.csdn.net/java2000_net/article/details/2922357 HttpSession session =  request.getSessio ...

  9. [原创]java WEB学习笔记47:Servlet 监听器简介, ServletContext(Application 对象), HttpSession (Session 对象), HttpServletRequest (request 对象) 监听器,利用listener理解 三个对象的生命周期

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  10. @SessionAttributes与HttpSession

    SessionAttributes注解将model中与它同名的属性保存在HttpSession中. 在controller的方法执行完毕后处理SessionAttributes注解并保存的,是Hand ...

随机推荐

  1. 【组合&取补集】数三角形 @CQOI2014/BZOJ3505/upcexam3843

    http://exam.upc.edu.cn/problem.php?id=3843&csrf=8oK86t2oHSgi3Q4SX3qOJGeENe6pfXri 时间限制: 1 Sec 内存限 ...

  2. 使用 OpenSessionInViewFilter 配置加载

    1.使用 OpenSessionInViewFilter

  3. IO流(5)—缓冲流

    1.IO体系: 抽象基类--节点流(文件流)--缓冲流(处理流的一种) InputStream --FileInputStream--BufferedInputStream OutputStream- ...

  4. Accounting Calendar template

    SELECT INITCAP (TO_CHAR (TO_DATE (&year || '-' || LPAD (ROWNUM, 2, '0'), 'yyyy-mm'), 'MON', 'NLS ...

  5. C# ExecutionContext 实现

    网上关于ExecutionContext的说明比较少,我们来看看微软的描述吧,   名称 说明 Capture() 捕获从当前线程的执行上下文. CreateCopy() 创建当前执行上下文的副本. ...

  6. 《Python数据分析与挖掘实战》读书笔记

    大致扫了一遍,具体的代码基本都没看了,毕竟我还不懂python,并且在手机端的排版,这些代码没法看. 有收获,至少了解到以下几点: 一. Python的语法挺有意思的     有一些类似于JavaSc ...

  7. [转]linux用户管理

    Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系统管理员对使用系统的用户进行 ...

  8. MySQL字符集不一致的解决办法总结

    用SHOW CREATE TABLE table_name;可以看出具体的字符集设置. 错误代码: Illegal mix of collations (utf8mb4_unicode_ci,IMPL ...

  9. NameError:name ‘xrange’ is not defined

    运行某代码时,报错: NameError:name 'xrange' is not defined 原因: 在Python 3中,range()与xrange()合并为range( ).我的pytho ...

  10. matplotlib绘图不显示问题解决plt.show()

    最近在看<Python数据分析>这本书,而自己写代码一直用的是Pycharm,在练习的时候就碰到了plot()绘图不能显示出来的问题.网上翻了一下找到知乎上一篇回答,试了一下好像不行,而且 ...