我正在嘗試從HTTPSession中註銷並將用戶重定向到登錄頁面。響應已提交後無法轉發 - Servlet
下面是我完整的Http servlet代碼。
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class LogoutServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
super.doGet(req, resp);
processRequest(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
super.doPost(req, resp);
processRequest(req, resp);
}
private void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
final HttpSession session = request.getSession(false);
if (session != null)
{
session.invalidate();
}
response.sendRedirect("/login.html");
//getServletContext().getRequestDispatcher("/login.html").forward(request, response);
}
}
但是,得到以下異常:
java.lang.IllegalStateException: Cannot forward after response has been committed
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:339)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329)
at com.controller.LogoutServlet.processRequest(LogoutServlet.java:41)
從您的位置發佈servlet的代碼processRequest() –
@RaviThapliyal:使用完整代碼修改上述問題。 – Raghav