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
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