Day05JavaWeb [Cookie and Session] Sessão é o suficiente para ler isso! ***

Visão geral da sessão

  • (1) O que é sessão? A
    tecnologia de sessão é para acessar os dados da sessão no lado do servidor
  • (2) Quais são as características?
    O acesso aos
    dados de valor-chave tem um tempo de sobrevivência
    , o jsessionId de cada sessão é diferente

Princípio da Sessão

Insira a descrição da imagem aqui
Princípio:
1 "O servidor atribui um objeto chamado sessão ao navegador
2" Cada sessão tem um id e pode armazenar o valor-chave
3 "Para que cada navegador acesse seus próprios dados sem ser afetado por outros, a sessão deve ter um jessionId

Dados de acesso à sessão

  • (1) Obter Sessão
    HttpSession getSession () Obter objeto de sessão
  • (2) Salvar dados
    setAttribute (chave, valor)
  • (3) Ler dados
    getAttribute (chave)

src \ com \ wzx \ pack01_set \ Demo01SetServlet.java
salvar dados

@WebServlet("/set")
public class Demo01SetServlet extends HttpServlet {
    
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        //访问服务器,服务器为每个浏览器分配一个 session,有自己的id
        //1 获取session对象
        HttpSession session = request.getSession();
        //2 获取session的编号jsessionId
        String jsessionId = session.getId();

        response.getWriter().println(jsessionId);


        //3 保存key-value
        session.setAttribute("name","jack");
        session.setAttribute("age","20");

    }
}

src \ com \ wzx \ pack01_set \ Demo02GetServlet.java

@WebServlet("/get")
public class Demo02GetServlet extends HttpServlet {
    
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    

    }

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

        //1 获取session对象
        HttpSession session = request.getSession();

        //2 获取key对应的value
        String name = (String) session.getAttribute("name");
        String age = (String) session.getAttribute("age");

        System.out.println(name);
        System.out.println(age);

    }
}

Use o cookie para salvar o ID da sessão

src \ com \ wzx \ pack02_session_persister \ Demo03SetServlet.java

  • Cada vez que você fecha o navegador e acessa o projeto, o servidor atribuirá um novo sessionId.
    Se você fechar o navegador e reiniciá-lo,
    será necessário acessar os dados da sessão anterior . Use cookies para salvar o sessionId no navegador. O sessionid será colocado automaticamente no cabeçalho da requisição ao acessar o projeto.

  • getSession () primeiro descobre se há uma sessão antes de acordo com jsessionId, se houver, reutilize a sessão, caso contrário, crie uma nova.

  • Cookie cookie = new Cookie("JSESSIONID",jsessionId); 参数名必须是JSESSIONID

@WebServlet("/set_jsessionId")
public class Demo03SetServlet extends HttpServlet {
    
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        //打开浏览器,向服务器发一个jsessionID,让服务器根据jsessionID打开之前的session
        //取里面的数据,得使用技术保存jsessionID在浏览器 Cookie



        //1 获取session对象
        HttpSession session = request.getSession();
        //2 获取session的编号jsessionId
        String jsessionId = session.getId();

        //3 保存key-value
        session.setAttribute("name","jack");
        session.setAttribute("age","20");

        response.getWriter().println(jsessionId);

        Cookie cookie = new Cookie("JSESSIONID",jsessionId);

        //存活时间
        cookie.setMaxAge(10*60);

        //项目地址
        cookie.setPath(request.getContextPath());

        response.addCookie(cookie);

    }
}

Invalidação de sessão

session.invalidate (); // Deixar a sessão falhar, os dados originais se foram

@WebServlet("/clear")
public class Demo04SetServlet extends HttpServlet {
    
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        //invalidate()清除失效
        HttpSession session = request.getSession();
        session.invalidate();

    }
}

Passivação e ativação da Sessão (entender)

  • Fechar o serviço no tomcat fará automaticamente a persistência da sessão, também chamada de passivação, e vice-versa, ativação
  • Este é um session.ser que armazena os dados da sessão no diretório de trabalho

Insira a descrição da imagem aqui

  • Amigos que usam idéia para publicar o projeto verificar o console log e encontrar o diretório de trabalho.
    Insira a descrição da imagem aqui
    Meus arquivos são os seguintesInsira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/u013621398/article/details/108534879
Recomendado
Clasificación