我面临 servlet URL 重写的问题。
我的 LogoutServlet doPost() 方法代码是:
//invalidate the session if exists
HttpSession session = request.getSession(false);
if(session != null) session.invalidate();
response.sendRedirect("login.html");
我的 Checkout.jsp 代码是:
<%@ page language="java" contentType="text/html; charset=US-ASCII"
pageEncoding="US-ASCII"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Page</title>
</head>
<body>
<%@ page session="false" %>
<%
if(request.getSession(false) == null){
response.sendRedirect("login.html");
}
%>
<h3>Hi there, do the checkout.</h3>
<br>
<form action="LogoutServlet" method="post">
<input type="submit" value="Logout" >
</form>
</body>
</html>
当我启动它时,在登录页面后,我看到了类似的 URL
http://localhost:8080/Test/CheckoutPage.jsp;jsessionid=XYZ
当我单击注销按钮时,它会将我转发到登录页面。
问题是,如果我提供上面带有 jsessionid 的 URL,那么它不会将我转发到登录页面并显示 JSP 数据。
我不确定 JSP 是如何获取会话的,因为它在 Logout servlet 中无效。