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