servletcontext,session,request的生命周期

1、servletcontext:每一个web应用启动(配置到web容器中)时,web容器都会产生一个实现了servletcontext接口的实例(或者说在servlet引擎中产生了一个实现了servletcontext接口的实例对象),servlet引擎实例化servlet,每个servlet都实现了servlet接口和servletconfig接口,servletconfig允许servlet接受servletcontext。在服务停止时servletcontext才会消亡。

2、cookie/session:JSP页面中会话 Cookie 的“会话”这里不是指 Server 端的 Session ,而是指的是浏览器,所以会话 Cookie 的生命周期不是与 Server 端的 Session 那个会话相同,而是与浏览器相同,就是说只要开着浏览器会话 Cookie 就存在,关闭浏览器它就过期了。但是会话 Cookie 的值是与 Server 端的 SessionId 对应相同的。就是说会话Cookie随着Server端Session的创建而创建,但并不随着Session的过期而过期,而是随着Client端的浏览器关闭而销毁。只要会话Cookie 出现了,Server 端的 Session 就已经创建了。当浏览器第一次向服务器发送请求时,serlet引擎产生request请求,当request提交到servlet时,通过HttpServletRequest.getSession(true)就产生了session。

/////////////////////

【cookies介绍】

       1.服务器可以向客户端写内容

       2.只能是文本内容,而且有大小限制,一般是4K

       3.客户端可以阻止服务器写入

       4.只能拿自己webapp写入的东西

       5.Cookie分为两种:

              !属于窗口/子窗口(放在浏览器对应内存中,与浏览器共存亡)

              !属于文本(有生命周期的)

       6.一个Servlet/Jsp设置的cookies能够被同一路径下面或者子路径下面的Servlet/Jsp读到(路径=URL;路径!=真实文件路径)

       7.如何创建cookies?(在服务端创建,存放到客户端)

              Cookie cook = new Cookie(String name,String value);

              cook.setMaxAge(30);//存在时间,单位:秒,若不设置,则不保存

       8.如何将cookie添加到客户端?

              response.addCookie(cook);

       9.如何读取客户端的cookie到服务器端?

              Cookie[] cookies = request.getCookies();

       10.在服务器端删除客户端的Cookies

              Cookie[] cookies = request.getCookies();

              cookies[i].setMaxAge(0);//设置生存期为0,即删除

【Session介绍】

       1.服务器的一块内存(Key-Value)

       2.和客户端窗口对应(包括其子窗口)

       3.客户端和服务器端有对应的SessionID

       4.客户端向服务器端发送SessionID的两种方式:

              cookie(内存cookie)

              rewrite URL

       5.浏览器禁掉cookie,就不能使用session(使用cookie实现的session)

       6.如果想安全的使用session(不论客户端是否禁止cookie),只能使用URL重写方式。

       7.如何得到session

       HttpSession hs = request.getSession(true);

       8.session添加属性

       hs.setAttribute(String name,Object value);

       9.session得到某个属性

       String name = hs.getAttribute(String name);

       10.session删除某个属性

       hs.removeAttribute(String name);

 

【Cookie VS Session比较】

       1.Cookie保存在客户端,Session保存在服务器端,

       安全性:Cookie

       2.Cookie生命周期是累积的,从创建时开始计时,并且不受主机关机影响;Session生命周期是间隔的,不访问Session连续时间达到设定值时,生命周期才结束,并且主机关机将使Session生命周期结束;

       3.Cookie通过网络在客户端与服务器端传输,而Session保存在服务器端不需要传输,但需要在浏览器端保存一个SessionId即可;

      

#ServletContext用法

       1.存在于服务器端,所有访问服务器的客户端共用

       2.得到ServletContextthis.getServletContext(); (this-->Servlet子类)

       3.添加属性:setAttribute(String name,Object obj);

       4.获得属性:(Object)getAttribute(String name);

       5.删除属性:removeAttribute(String name);

       6.生命周期:ServletContext中的属性从创建开始,到服务器关闭而结束,鉴于其长期存在于服务器内存中,一般不会向其中放入太大数据量;

 

/////////////////////

3、request:

你可能感兴趣的:(Java)