當用戶登錄到我的應用程序時,他提交了一個要通過Servlet處理的表單。該servlet爲用戶創建一個會話。我將如何創建一個鏈接,以便用戶可以註銷?我似乎無法直接鏈接到一個Servlet。我將如何刪除會話並鏈接回主頁?創建一個註銷JSP的鏈接
這是我可以做到的一種方式,但它看起來並不「正確」。 我可以鏈接回index.jsp?logout = true。我的index.jsp會看到註銷是否爲真,並刪除會話。
有沒有另一種方法呢?
當用戶登錄到我的應用程序時,他提交了一個要通過Servlet處理的表單。該servlet爲用戶創建一個會話。我將如何創建一個鏈接,以便用戶可以註銷?我似乎無法直接鏈接到一個Servlet。我將如何刪除會話並鏈接回主頁?創建一個註銷JSP的鏈接
這是我可以做到的一種方式,但它看起來並不「正確」。 我可以鏈接回index.jsp?logout = true。我的index.jsp會看到註銷是否爲真,並刪除會話。
有沒有另一種方法呢?
寫映射到/logout
一個servlet然後在doGet
執行是這樣的:
HttpSession session = request.getSession(false);
if(session != null)
session.invalidate();
request.getRequestDispatcher("/index.jsp").forward(request,response);
如果用戶會話或沒有它不會不要緊,他們最終會被重定向到index.jsp
。
註銷不太嚴重。你可以有一個簡單的/logout.jsp來結束會話。
我發現最容易做到這一點:
<form method="link" action="logout.jsp">
<input type="submit" value="Logout"/>
</form>
沒有logout.jsp有這樣的:
<%
session.invalidate();
response.sendRedirect("startpage.html");
%>
基於cdietschrun的答案,我做了它更加緊湊:
<%
session.invalidate();
response.sendRedirect(request.getContextPath());
%>
最簡單的方法是使註銷鏈接像這樣..
<a href="logout.jsp">LogOut</a>
,並在下面的代碼
<%
session.invalidate();
response.sendRedirect("index.jsp");
%>
的 「logout.jsp」 寫我試過了,但我得到一個404錯誤。我的servlet在web.xml中正確映射,並且我的鏈接轉到該servlet。 – Kelp 2011-03-04 01:56:13
然後這個URL是錯誤的:)當你在瀏覽器地址欄中輸入它時,它會起作用嗎?您是否考慮了上下文路徑?你知道相對URL是如何工作的嗎? – BalusC 2011-03-04 02:00:23