是否可以从Servlet重定向到同一个JSP页面?

时间:2014-02-08 15:23:33

标签: java jsp servlets

名为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下的其他网页。

1 个答案:

答案 0 :(得分:2)

POST-REDIRECT-GET模式就像这样。

客户端发送POST请求,您的服务器处理它并使用重定向进行响应,即。具有302状态代码和Location标头的响应,以适当的URI。客户端向该URI发出GET请求。

目前,您的服务器正在重定向GET和POSTS请求。更糟糕的是,您的GET重定向到它正在处理的相同URI,创建您正在看到的重定向循环。

更改您的Servlet实现,以便POST发送重定向,但GET实际上使用HTML,AJAX等提供正常的200响应。