会话技术_Session_细节

  Session细节:

1.当客户端关闭后,服务器不关闭,两次获取session是否为同一个?

     ①默认情况下不是的。

    ②如果需要相同,则可以创建Cookie,键为JSESSIONID,设置最大存活时间,让cookie持久化保存。

          Cookie ck = new Cookie("JSESSIONID",session.getId());

         ck.setMaxAge(60*60);

         response.addCookie(ck);

package jason.lh.session;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;

import java.io.IOException;


@WebServlet("/SessionDemo3")
public class SessionDemo3 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
           //获取session
        HttpSession session = request.getSession();
        System.out.println(session);

        //期望客户端关闭后,session也能相同
        Cookie ck = new Cookie("JSESSIONID",session.getId());
        ck.setMaxAge(60*60);
        response.addCookie(ck);


    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

2.客户端不关闭,服务器端关闭后,两次获取的session是同一个吗?

  不是同一个,但是要确保数据不会丢失

(这种情况下可能会造成数据丢失,像在购物车里添加商品还未结算,服务器重新启动的话 可能会造成数据丢失)

session的钝化:

在服务器正常关闭之前,将session对象序列化到硬盘上

session的活化:

在服务器启动后,将session文件转化为内存中的session对象即可。

##(tomcat服务器已经帮我们把钝化和活化的事情完成了,我们不需要考虑

idea中完成不了,它可以钝化,但是活化不了)——操作(20_会话技术_Session_细节2)

【本地硬盘操作】

3.session的失效时间?

   ①服务器关闭

   ②session对象调用invalidate()。

   ③session默认失效时间 30分钟。

  在D:\apache-tomcat-9.0.22\conf\web.xml下

  配置修改

     <session-config>

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

    </session-config>

4.session的特点

①session用于存储一次会话的多次请求的数据,存在服务器端

②session可以存储任意类型,任意大小的数据

猜你喜欢

转载自blog.csdn.net/Jason_LH1024/article/details/102891637