名为Test.jsp
的JSP页面映射到以下Servlet。
@WebServlet(name = "TestServlet", urlPatterns = {"/TestServlet"})
public final class TestServlet extends HttpServlet
{
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
//request.getRequestDispatcher("/WEB-INF/admin_side/Test.jsp").forward(request, response);
response.sendRedirect("TestServlet");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
processRequest(request, response);
}
@Override
public String getServletInfo() {
return "Short description";
}
}
此Servlet映射到JSP页面Test.jsp
。在地址栏中输入doGet()
等网址时,会调用http://localhost:8080/Assignment/TestServlet
方法。
请求可以在注释时转发到给定的URL。是否可以重定向到同一个JSP页面Test.jsp
?
如果尝试这样做,Google Chrome会抱怨,
此网页有重定向循环
但是,它可以重定向到WEB-INF/admin_side
下的其他网页。
答案 0 :(得分:2)
POST-REDIRECT-GET模式就像这样。
客户端发送POST请求,您的服务器处理它并使用重定向进行响应,即。具有302状态代码和Location
标头的响应,以适当的URI。客户端向该URI发出GET请求。
目前,您的服务器正在重定向GET和POSTS请求。更糟糕的是,您的GET重定向到它正在处理的相同URI,创建您正在看到的重定向循环。
更改您的Servlet实现,以便POST发送重定向,但GET实际上使用HTML,AJAX等提供正常的200响应。