3.2 Servlet Finalizar Sessão – Reescrita de URL
package br.aiec; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; @WebServlet(name = "FinalizarSessaoReescritaURL", urlPatterns = "/finalizarSessaoReescritaURL") public class FinalizarSessaoReescritaURLDemoServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException
{ HttpSession session = request.getSession(false); PrintWriter out = response.getWriter(); out.println("<!DOCTYPE html>"); out.println("<html>"); out.println("<head>"); out.println("<title> Finalizar Sessão - Reescrita de URL </title>"); out.println("</head>"); out.println("<body>"); if (session != null) { String sessionID = session.getId(); session.invalidate(); out.println("<h1 align='center'>Sessão de ID " + sessionID + " foi encerrada!</h1>"); out.println("Para obter uma nova sessão clique no link abaixo!"); } else { out.println("Não existe nenhuma sessão registrada! Para se registrar clique no link abaixo!"); } out.println("<br /> <a href='"+ response.encodeURL("iniciarSessaoReescritaURL") +"'> Obter Sessão</a>"); out.println("</body>"); out.println("</html>"); } }
Observe que o uso da operação “encodeURL” da interface “javax.servlet.http.HttpServletResponse” não alterou/codificou a URL com o “session id” ao seu final. Isso se deve pelo fato da referida operação, neste caso em específico, ser chamada sempre quando não existe qualquer sessão válida.