0

サーブレットの 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

ログアウトボタンをクリックすると、ログインページに転送されます。

問題は、上記の URL に jsessionid を指定すると、ログイン ページに転送されず、JSP データが表示されることです。

ログアウト サーブレットで無効化されているため、JSP がセッションを取得する方法がわかりません。

4

2 に答える 2

1

デフォルトでは、JSP が実行されるとすぐにセッションが作成されます。ユーザーがログインしているかどうかを判断するために、セッションの存在を使用しないでください。代わりに、ログインが成功した後、セッションにフラグまたはオブジェクトを保存して、認証されたセッションとしてマークする必要があります。

フラグまたはオブジェクトがセッション内にある (または true である) 場合、ユーザーは認証されます。そうでなければ、そうではありません。

于 2013-08-11T11:27:33.357 に答える
-1

無効化メソッドは、メソッドを検証します。null には設定しません。セッションに保存されている属性をチェックして、天気が null かどうかをチェックできます。

于 2013-08-11T11:18:43.590 に答える