浏览器禁用Cookie的后果
服务器在默认情况下,会使用Cookie的方式将sessionID发送给浏览器,如果用户禁止Cookie,则sessionID不会被浏览器保存,此时,服务器可以使用如URL重写这样的方式来发送sessionID。
使用URL重写来解决
浏览器在访问服务器上的某个地址时,不再使用原来的那个地址,而是使用经过改写的地址(即在原来的地址后面加上了sessionID)。
实现URL重写
response.encodeRedirectURL(String url)生成重写的URL。
HttpSession session = req.getSession();
String url = "http://localhost:8080/fail?username=" + URLEncoder.encode(username, "UTF-8");
url = resp.encodeRedirectURL(url);
resp.sendRedirect(url);
encodeURL () :表单提交和超链接的URL重写
encodeRedirectedURL () :重定向的URL重写
如果客户端浏览器禁用cookie,会自动重写url且连接后面有jsessionid