20170513 -session整理

已有 37 次阅读2017-5-22 16:38

 

Session Servlet作用域(跳转过程中,实现信息共享的范围)

         数据所放得不同的共享区域决定了在多次跳转后是否能拿到数据

         放到不同的地方,所能拿到的范围也是不同的。这就是作用域所决定的

网站模型请求响应模型。请求不仅仅是在于客户端和服务端之间,服务器内部也是有请求的概念的 (服务器里面是有很多servlet的)

 

客户端----servlet

Servlet-----servlet

 

Web 编程的两大块

1.       跳转 URL 路径)

2.       跳转过程中的数据传递 (通过信息共享区域)

 

 

数据传递:信息共享区域。

 

1.       request

2.       session

3.       cookie

4.       servletcontext

 

Servlet :Request.setAttribute(“key”,”value”)

Jsp: request.getAttribute(“key”)

 

 


 

http 无状态协议

无状态是指协议对于 事务处理没有记忆能力。(客户端A访问了服务端,然后客户端B也访问了服务端,对于服务器而言,只知道有一个人来找我了,但是不知道这个客户端先前是否来找过我。会吧每一次请求当成一个新的请求,什么都不记得)

 

 

无状态,数据的信息是不能被保存的。假如有多次跳转都需要用到用户的信息,很明显http协议是不能完成的,所以有了session 等,用来做信息共享的出现。既然遵循http 协议不会记得信息,那么就把信息放到信息共享区域。虽然不记得,但每次会话都可以从信息共享区域拿到信息。

 

Session :每次会话信息的保存

 

会话

用户打开一个浏览器,点击多个超链接,访问服务器多个web 资源,然后关闭浏览器,整个过程称之为会话。

 

 

既然http  是无状态协议,所以会话要解决的就是:

保持浏览器和服务器进行会话过程中的一些数据-----信息共享区域

 


 

Session

客户端与服务器对话。

客户端与服务器发起多个请求,对于服务器而言,不能将多个请求连在一起,所以在服务器里面有一个信息共享区域(session)。每一个客户端都有一个对应的session区域

Session 工作:

         客户端发起请求

服务器接收请求

         如果是第一次,服务器就会产生一个与客户对应的信息共享区域,保留客户信息

         如果不是第一次,服务器就可以找到与客户相关的信息共享区域,保留客户信息

         客户再发起请求,服务器就会找到同一个区域

         多次请求,相同会话,信息共享

        

         另一个客户发起请求,服务器会产生针对该客户的一个新的信息共享区域

 

Session是位于服务端的信息共享区域,多次请求的信息共享

信息共享区域=servlet作用域

 

 

 

 

Session 用法:键值对

         Servlet 中设置session

                   Httpsession 

1.session = request.Session();//获得会话对象,如果没有,创建后返回

                   2.Session= request.Session(true);//false ,获得当前对象,如果没有,返回null

                  

Session.setAttribute(“key”,”value”);

 

         Jsp 中得到session

                     <% String s=(String)session.getAttribute("info");

           out.print(s);

%>

         Session API方法

    System.out.println(session.getId());//得到sessionid

    System.out.println(session.getCreationTime());//创建会话的时间

    System.out.println(session.getLastAccessedTime());//最后一次访问的时间

    System.out.println(session.getMaxInactiveInterval());//session的存活期

session.setMaxInactiveInterval(10);//设置 session的存活期以秒为单位

session.invalidate();//session  注销

 

session web.xml中设置会话时间

    <session-config>

           <session-timeout></session-timeout>

    </session-config>

                   Boolean  Session.isnew() 判断是否是新建的session

                   把数据保存在HttpSession对象中,改对象也是一个域对象

                   Void serAttribute(“key” ,”value”);

                   Object getAttribute(“key”)

                   Void removeAttribute(“key”)

                   HttpSession.getid();

 

                   setMaxlanctiveInterVal(int interval) 设置session 存活时间

         invalidate() 使此会话无效

 

session 是有存在访问失效的,默认是30分钟

        

获得session 对象 :

1.       getSession();

2.       getSession(true/false);

jsp:自动创建session对象。可以直接使用session

servlet 不会自动创建,一定要通过getsession来创建对象

 

 

session生命周期

会话ID

         第一次请求,生成会话ID,通过响应发给客户端,客户再以后的每一个请求过程携带这个会话ID

Session存储在服务器端,一般为了防止在服务器的内存中(为了高速存取),Sessinon在用户访问第一次访问服务器时创建,需要注意只有访问JSPServlet等程序时才会创建Session,只访问HTML静态资源并不会创建Session,可调用request.getSession(true)生成Session

 

Session的销毁有两种情况:

第一:session调用了 session.invalidate()方法.

第二:前后两次请求超出了session指定的生命周期时间. 其中Session的生命周期时间可以在web.xml配置. 默认30分钟 在web.xml可以做如下配置:

<session-config>      

<session-timeout>5</session-timeout>

</session-config>

 

 


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

Copyright;  ©2015-2017  知了堂学习社区  Powered by  知了堂Edu!     ( 蜀ICP备16011312号-1 )