如何实现session在服务器上得到浏览器的session值并且实现持久化

需要用到的知识点的API:

1,setAttribute(String name,Object obj); 这个是设置参数和值(可以间接的理解成为是一个key和value)的方法
2.getAttribute(string name) 得到属性的方法
3.removeAttribute(String name)

一、如何得到浏览器的session的值

1. 拿到session对象

2. 向session对象 里面存进去值用 setAttribute()

取出session

1. 先拿到session对象
2  然后得到session的值, 用getAttribute()  返回的是一个字符串
3. 从服务器中返回给浏览器客户端

二、 如何能在客户端浏览器关闭的时候,让session能够在服务器上的时间更加持久:

1,原理就是因为session是基于cookie的基础上来完成的操作,但是在cookie的定义中,当浏览器关闭所有窗口的时候,默认的事cookie会自动销毁
2,所有实现session的持久化本质上就是实现cookie的持久化,需要用到 cookie.setMaxAge(60*60);

实现的三个步骤:
1. 也就是创建一个cookie 覆盖之前服务器自动生成的JSESSIONID
2. 设置cookie的持久化
3. 通过服务器把重新设置的cookie返回给浏览器


这部分是得到sessio的代码

@WebServlet(name = "SaveSessionServlet",urlPatterns = "/savesession")
public class SaveSessionServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

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

                    HttpSession session= request.getSession();
                    session.setAttribute("goods","cup");

    }
}

这部分是实现持久化session的代码

@WebServlet(name = "GetSessionServlet", urlPatterns = "/getsession")
public class GetSessionServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

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

      HttpSession session= request.getSession();
      //也就是创建一个cookie 覆盖之前服务器自动生成的JSESSIONID
       Cookie cookie= new Cookie("JESESSIONID",session.getId());
       //设置cookie的持久化
        cookie.setMaxAge(60*60);
        //通过服务器把重新设置的cookie返回给浏览器
        response.addCookie(cookie);

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

      response.getWriter().write(goods);
    }
}

你可能感兴趣的:(【JavaWeb】)