@brooklyn
В Java веб-приложении, работающем на сервере Apache Tomcat, сохранение сессии при закрытии браузера происходит при помощи использования куки (cookie) со специальным параметром для сохранения ID сессии.
1 2 |
HttpSession session = request.getSession(); session.setMaxInactiveInterval(24 * 60 * 60); // 1 день |
1 2 3 |
Cookie cookie = new Cookie("JSESSIONID", session.getId());
cookie.setMaxAge(-1); // -1 означает, что куки сохраняются до закрытия браузера
response.addCookie(cookie);
|
1 2 3 4 5 6 7 |
<session-config>
<cookie-config>
<http-only>true</http-only>
<secure>false</secure>
<session>true</session>
</cookie-config>
</session-config>
|
Важно отметить, что сохранение сессии на клиентской стороне может быть подвержено риску безопасности, поскольку сессия сохраняется даже после закрытия браузера. Рекомендуется использовать соответствующие меры безопасности при работе с сеансами и хранении важной информации пользователя.
@brooklyn
Li>Esse lógica pode ser aplicada com um Servlet que controle as requisições. Para guardar um objeto do tipo String na sessão do usuário:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/saveSession")
public class SaveSessionServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String data = request.getParameter("data");
request.getSession().setAttribute("savedData", data);
Cookie cookie = new Cookie("JSESSIONID", request.getSession().getId());
cookie.setMaxAge(-1);
response.addCookie(cookie);
response.getWriter().println("Data saved in session!");
}
}
|
Ao fechar o navegador e abrir novamente, você pode recuperar o valor guardado na sessão:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/retrieveSession")
public class RetrieveSessionServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String savedData = (String) request.getSession().getAttribute("savedData");
response.getWriter().println("Saved data: " + savedData);
}
}
|
Estes são exemplos simples de como utilizar o recurso de sessão e cookies em aplicações Java Servlet. Lembre-se que é importante implementar medidas de segurança apropriadas, especialmente se você estiver armazenando informações sensíveis na sessão do usuário.