当用户登录到我的应用程序时,他提交了一个要通过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