2011-03-04 142 views
4

當用戶登錄到我的應用程序時,他提交了一個要通過Servlet處理的表單。該servlet爲用戶創建一個會話。我將如何創建一個鏈接,以便用戶可以註銷?我似乎無法直接鏈接到一個Servlet。我將如何刪除會話並鏈接回主頁?創建一個註銷JSP的鏈接

這是我可以做到的一種方式,但它看起來並不「正確」。 我可以鏈接回index.jsp?logout = true。我的index.jsp會看到註銷是否爲真,並刪除會話。

有沒有另一種方法呢?

回答

9

寫映射到/logout一個servlet然後在doGet執行是這樣的:

HttpSession session = request.getSession(false); 
if(session != null) 
    session.invalidate(); 
request.getRequestDispatcher("/index.jsp").forward(request,response); 

如果用戶會話或沒有它不會不要緊,他們最終會被重定向到index.jsp

+1

的 「logout.jsp」 寫我試過了,但我得到一個404錯誤。我的servlet在web.xml中正確映射,並且我的鏈接轉到該servlet。 – Kelp 2011-03-04 01:56:13

+4

然後這個URL是錯誤的:)當你在瀏覽器地址欄中輸入它時,它會起作用嗎?您是否考慮了上下文路徑?你知道相對URL是如何工作的嗎? – BalusC 2011-03-04 02:00:23

0

註銷不太嚴重。你可以有一個簡單的/logout.jsp來結束會話。

5

我發現最容易做到這一點:

<form method="link" action="logout.jsp"> 
    <input type="submit" value="Logout"/> 
</form> 

沒有logout.jsp有這樣的:

<% 
session.invalidate(); 
response.sendRedirect("startpage.html"); 
%> 
1

基於cdietschrun的答案,我做了它更加緊湊:

<% 
session.invalidate(); 
response.sendRedirect(request.getContextPath()); 
%> 
0

最簡單的方法是使註銷鏈接像這樣..

<a href="logout.jsp">LogOut</a> 

,並在下面的代碼

<% 
session.invalidate(); 
response.sendRedirect("index.jsp"); 
%>