session

已有 69 次阅读2017-5-18 22:40 |个人分类:javaWeb|系统分类:学习纪录

MicrosoftInternetExplorer402DocumentNotSpecified7.8 磅Normal0

端口

虚拟的 与外部信息的对接

F5 单步调试进入函数内部。
F6单步调试不进入函数内部

F8直接执行到下一个断点,没有断点,就直接结束


Servlet作用域

 请求不仅仅是在于客户端和服务端之间

服务器内部也有请求的概念

一个Servlet像另一个servlet发起请求

JSP的本质是一个servlet

 

Web编程的两大块:

1.跳转:url路径

2.跳转工程中的信息的传递

信息共享区域


 

http无状态协议:没有记忆

客户端访问服务器

会把每一次请求当做一个新的请求

 

会话:我想服务器发起请求,服务器给我响应

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

会话技术:session cookie

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

 

Session的概念

服务器里面有一个信息系共享区域 session

在服务器里面,每一个客户端都有一个对应的session区域

 Session的工作

客户发起请求

服务器接受请求

如果是第一次请求,服务器会陈胜一个月客户对应的信心共享区域,保留客户信息

如果非第一次请求,服务器可以找到与怪客户相关的信息共享区域,保留饿虎信息

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

对此请求,相同会话,信息共享

 

另一个客户发起请求,针对该客户的一个新的信息共享区域

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

 


跨越多次请求,保存信息

 

SessionServlet.java

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//得到session区域,放置信息进去

HttpSession session = request.getSession();

session.setAttribute("info", "this is session");

}

 

Index.jsp

<a href="SessionServlet">跳转</a>

 

<%

String info =(String)session.getAttribute("info");

out.print(info);

%>

 

Request1.jsp

 

<%

String info =(String)session.getAttribute("info");

out.print(info);

%>

 

Request2.jsp

<%

String info =(String)session.getAttribute("info");

out.print(info);

%>

运行


点击跳转-----sessionServlet-------再次访问index.jsp


访问request1.jsp


访问request2.jsp


 

session 的API


 

 

Session是有访问失效的,30分钟

 

获得session对象

getSession()

getSession(true/flase)

   JSP:自动创建Session对象

   Servlet:不会自动创建session,通过getSession()创建session对象

isNew() 是否是新建

结束会话

Invilidate()

超时:设置/配置

 

Session API

 

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

  //1.获得session对象

  HttpSession session = request.getSession();

  if(session.isNew()){

  System.out.println("创建会话");

  }else{

  System.out.println("欢迎回来");

  }

  

 // session = request.getSession(false);//true:getSession()/false:获得当前会话,没有当前会话,则返回false

 // 2.得到sessionID

  System.out.println(session.getId());

  //3.与会话时间相隔的办法

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

  System.out.println(session.getLastAccessedTime());//最后一次得到这个会话后的时间

  session.setMaxInactiveInterval(10);

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

  

  //4.session的注销

 session.invalidate();

  //session 在web.xml设置会话时间

  //<session-config>

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

  //</session-config>

  

}

 

Session的生命周期

http无状态,发起请求得到相应

Session跨越多次请求

服务器多个客户端访问

服务器以什么方式知道客户端访问的ID

会话ID(本质是一个cookie)

服务器里面每个信息共享区域都有一个会话ID

客户端发起请求,服务器端建立一个专属于本客户端的信息共享区域,其中有一个会话ID,当服务器发起响应时,会携带ID到达所发起请求的客户端,当客户端再次发起请求时,会携带这个ID到达服务器端,服务器会根据这个ID到达所属的这个客户端的信息共享区域。

 

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

 

消失:

服务器崩掉

超时:30分钟

Session.Invilidat()强制销毁

 

Session内存的区域

消息的持久化:存盘

Session信息的提取,存盘或者数据库

 


路过

鸡蛋

鲜花

握手

雷人

全部作者的其他最新日志

评论 (0 个评论)

facelist

doodle 涂鸦板

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

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