zoukankan      html  css  js  c++  java
  • session学习

    四大作用域

    作用域通信对象有效范围
    page pageContext 当前页面有效
    request request 一次请求周期:从http请求发起,到服务器处理结束,返回响应的整个过程(转发)
    session session 一个会话周期:从用户打开浏览器访问服务器开始,到用户关闭浏览器的整过程,可以有多个request
    application application 从启动应用到关闭应用的整个过程,可以有多个session
    • 都有的方法
      • void setAttribute(String name, Object Value);
      • Object getAttribute(String name);
      • void removeAttribute(String name);
      • void removeValue(String value);

    session对象

    • 什么是session
      • 1.session表示客户端与服务器的一次会话
      • 2.session指的是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间
      • 3.从上面可以看出,session实际上是一个特定的时间概念
      • 4.在服务器中保存着不同用户的不同session,一个用户就对应一个session
    • session对象
      • 1.session对象是一个JSP内置对象
      • 2.session对象在第一个JSP页面被装载时自动创建
      • 3.当一个客户访问一个服务器,可能需要在几个页面之间切换,服务器应当通过某种方法知道这是同一个用户,这就需要session对象
      • 4.session对象是HttpSession类的实例
      • 5.session对象可以通过request.getSession()获得
    • session常用方法
      • 1.Long getCreationTime() 返回session创建时间
      • 2.String getId() 返回session创建时JSP引擎为他设置的唯一的ID号
      • 3.Object setAttribute(String name, Object value) 给session对象绑定属性
      • 4.Object getAttribute(String name) 获得属性,如果没有name,则返回null
      • 5.String[] getValueNames() 返回一个包含此session中所有可用属性的数组
      • 6.int getMaxInactiveInterval() 返回会话超时时间(单位秒)
      • 7.void setMaxInactiveInterval(int time) 设置会话超时时间
      <%
      	SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日:HH-mm-ss");
      	Date date = new Date(session.getCreationTime());
      	session.setAttribute("username", "jack");
      	session.setAttribute("password", "123");
      	session.setAttribute("age", 20);
      %>
      session创建时间:<%= session.getCreationTime() %>  就是: <%= sdf.format(date) %><br>
      session的ID<%= session.getId() %><br>
      session取得属性username----<%= session.getAttribute("user") %><br>
      session中的所有属性:<br>
      	<%
      		String[] attrs = session.getValueNames();
      		if (attrs != null) {
      			for (int i = 0; i < attrs.length; i++) {
      				out.print("&nbsp;&nbsp;&nbsp;&nbsp;"+attrs[i]+":"+session.getAttribute(attrs[i])+"<br>");
      			}
      		}
      	%>
      session默认的超时时间:<%= session.getMaxInactiveInterval() %><br>
      <% session.setMaxInactiveInterval(5); %>
      session自己设置的超时时间:<%= session.getMaxInactiveInterval() %><br>
      
      • 8.Enumration<String> getAttributeNames()取代了过时的getValueNames()方法
      Enumeration<String> arr = session.getAttributeNames();
      while (arr.hasMoreElements()) {
      	String string = (String) arr.nextElement();
      	System.out.println(session.getAttribute(string));
      }
      
    • session的生命周期

      • 1.创建:第一次访问jsp或者servlet时,如果访问的是jsp,那么就会创建session,如果访问的是servlet,那么就要看你是否需要session,也就是调用了getSession()方法。每次客户端向服务器发送请求时,都会将此seesionId携带过去,服务端会对此sessionId进行校验
      • 2.活动:
        • 会话中通过超链接打开的新页面属于同一次会话
        • 只要当前会话页面没有全部关闭,重新打开新的浏览器窗口访问同一项目资源时属于同一次会话
        • 除非本次会话的所有页面都关闭再重新访问某个JSP或者Servlet将会创建新的会话
        • 特别注意:原有会话还存在,这个旧的sessionId仍然存在于服务端,只不过再也没有客户端会携带它然后交予服务端校验

      • 3.销毁
        • 调用session.invalidate();方法(注销功能)
        • 会话超时,如果设置成负数或者0,会话将永不超时有3种方式设置会话超时时间,权限1>2>3
          • 1.ssession.setMaxInactiveInterval(5);单位是秒
          • 2.web.xml里面配置,单位是分
          <session-config>
              <session-timeout>1</session-timeout>
          </session-config>
          
          
          • 3.在tomcat中的web.xml中配置,单位是分
          <session-config>
              <session-timeout>30</session-timeout>
          </session-config>
          
        • 服务器关闭(皮之不存,毛将焉附?)

    session与cookie

    • 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。
    • 理论上,一个用户的所有请求操作都应该属于同一个会话,HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。那怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是Cookie的工作原理
    • 查看某个网站颁发的Cookie很简单。在浏览器地址栏输入javascript:alert (document. cookie)就可以了
    • Cookie具有不可跨域名性
    • cookie常见属性
    属性名描述
    String name 该Cookie的名称。Cookie一旦创建,名称便不可更改
    Object value 该Cookie的值。如果值为Unicode字符,需要为字符编码。如果值为二进制数据,则需要使用BASE64编码
    int maxAge 该Cookie失效的时间,单位秒。如果为正数,则该Cookie在maxAge秒之后失效。如果为负数,该Cookie为临时Cookie,关闭浏览器即失效,浏览器也不会以任何形式保存该Cookie。如果为0,表示删除该Cookie。默认为–1
    • session的使用要依赖于cookie,如果浏览器不支持cookie或者cookie被禁用了该怎么办呢? 这就要用到URL重写了。
    • URL地址重写的原理是将该用户Session的id信息重写到URL地址中。服务器能够解析重写后的URL获取Session的id。这样即使客户端不支持Cookie,也可以使用Session来记录用户状态。
    • HttpServletResponse类提供了encodeURL(Stringurl)实现URL地址重写
    response.encodeURL("index.jsp");
  • 相关阅读:
    设计模式学习总结系列应用实例
    【研究课题】高校特殊学生的发现及培养机制研究
    Linux下Oracle11G RAC报错:在安装oracle软件时报file not found一例
    python pro practice
    openstack python sdk list tenants get token get servers
    openstack api
    python
    git for windows
    openstack api users list get token get servers
    linux 流量监控
  • 原文地址:https://www.cnblogs.com/qiuqiutang/p/9812172.html
Copyright © 2011-2022 走看看