2013-01-03 94 views
1

我有一个锚点,我希望它被链接到一个LogoutServlet,以便它将销毁会话并将其重定向回登录页面。使用<a href>链接到servlet

LogoutServlet.java

package pkg; 

import java.io.IOException; 

import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

/** 
* Servlet implementation class LogoutServlet 
*/ 
public class LogoutServlet extends HttpServlet { 
private static final long serialVersionUID = 1L; 

/** 
* @see HttpServlet#HttpServlet() 
*/ 
public LogoutServlet() { 
    super(); 
    // TODO Auto-generated constructor stub 
} 

/** 
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
*/ 
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
} 

/** 
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
*/ 
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 

    response.setHeader("Cache-Control", "no-cache, no-store"); 
    response.setHeader("Pragma", "no-cache"); 

    request.getSession().invalidate(); 
    RequestDispatcher rd = request.getRequestDispatcher("Login.html"); 
     rd.forward(request, response); 
} 

}

标签

<a href="/Assignment/LogoutServlet" accesskey="1" title="">Logout</a> 

这是实现正确的方式?我用这个,但它没有将我重定向到Login.html。

回答

9

这会碰到doGet方法而不是doPost方法。像这样的锚链接是一个HTTP GET请求。

如果您希望发出POST请求,您需要使用方法POST将表单提交给servlet。

将您的代码移动到doGet而不是doPost并尝试。

+0

工作得很好。感谢您的知识!我对servlet编程相当陌生。所以请原谅我。 – melvg

+0

我们是否需要在''contextPath/url-pattern“'这样的链接值内包含上下文路径,当我尝试一个带有''url-pattern''的href时抛出** status 400 **错误,地址栏将没有contextpath:localhost:8080/url-pattern。 –

1

使用doGet方法。一个href将使用GET方法。