2013-01-03 93 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方法。