Essas coisas sobre sessão

O que é sessão?
** Sessão é um container criado pelo servidor para cada usuário cliente que acessa o servidor. ** Os dados armazenados neste contêiner podem ser compartilhados entre várias solicitações. Além disso, este contêiner pertence apenas ao usuário atual e possui um id único. A tecnologia de sessão é para acessar os dados da sessão no lado do servidor

Características da sessão

Cada sessão tem um id, e o acesso aos
dados do valor-chave tem um tempo de sobrevivência
. O JESSIONID de cada sessão é diferente, para que cada navegador possa acessar seus próprios dados sem ser afetado por outros

A sessão ilustra
Insira a descrição da imagem aqui
como a sessão acessa os dados?

Obter Sessão
HttpSession request.getSession () Obter o objeto de sessão, se houver um objeto de sessão, retornar a sessão criada, se não houver sessão, criar um objeto de sessão e
armazenar os dados
setAttribute (chave, valor)
ler os dados
getAttribute (chave)
obter o id da sessão
String session.getId ( )

Destruição da sessão
1. O tempo excede o tempo de sobrevivência da
sessão. O tempo de sobrevivência padrão da sessão destruída automaticamente é de 30 minutos, que pode ser definido no arquivo de configuração global web.xml do tomcat (tomcat / config / web.xml) (Unidade / minuto)

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
		  http://java.sun.com/xml/ns/javaee/web-app_3_1.xsd"
           version="3.1">
    <!--将session的存活时间设置成1小时(60分钟)-->
    <session-config>
        <session-timeout>60</session-timeout>
    </session-config>
</web-app>

2. Chame o método ** session.invalidate () ** no servlet para destruir a sessão

Persistência de sessão
Quando o navegador é fechado, o JSESSIONID desaparece e um novo objeto de sessão é recriado quando é acessado novamente. Essa operação consumirá mais recursos, portanto, precisamos alcançar a persistência da sessão e, da próxima vez que a usarmos, obteremos o JSESSIONID anterior diretamente do navegador sem criar uma nova sessão.

O cookie JESSIONID desapareceu depois que o navegador foi fechado. Ao visitar novamente, você não será capaz de identificar a sessão.

O método de persistência de sessão:
1. Ao salvar o JSESSIONID da sessão em um cookie, definindo o tempo de vida, a próxima visita o trará diretamente para o servidor.

Isso significa que a sessão pode ser identificada por JSESSIONID por um longo tempo, e não há necessidade de criar uma sessão da próxima vez. Ao salvar o JSESSIONID no cookie, a empresa pode controlar a data de sobrevivência, e o cookie será levado diretamente para o servidor na próxima visita. Obtenha JSESSIONID, obtenha objeto de sessão.

Realização de caso:

WebServlet("/JSESSIONID_Cookie")
public class JSESSIONID_CookieServlet extends HttpServlet {
    
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        //实现持久化session
        HttpSession session = request.getSession();
        //获取sessionid
        String id = session.getId();

		//这里注意,这个key一定要是JSESSIONID
        Cookie cookie = new Cookie("JSESSIONID",id);
        //设置cookie存活时间,将JSESSIONID存入cookie
        
        cookie.setMaxAge(60*30);

        //响应回浏览器
        response.addCookie(cookie);
    }
}

2. Fechar o serviço no tomcat irá persistir automaticamente a sessão (armazenado em um session.ser no diretório de trabalho), e na próxima vez que o servidor for acessado, ele será lido diretamente deste arquivo

Acho que você gosta

Origin blog.csdn.net/weixin_42777004/article/details/108607855
Recomendado
Clasificación