![](/img/trans.png)
[英]Servlet doesn't execute response.sendRedirect(addressPath); , but does execute response.sendRedirect() without path
[英]response.sendRedirect() does not running - Servlet
当运行下面的代码并且我收到的输出是“in”时,但响应 .sendRedirect() 没有运行。 两个 java servlet 文件“Class1”和“Servlet1”在同一个文件夹中。
public class Class1 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("text/html; charset=ISO-8859-7");
PrintWriter out = new PrintWriter(response.getWriter(), true);
ArrayList list2 = (ArrayList)request.getAttribute("list_lo");
if (list2 == null || list2.isEmpty() ) {
out.println("in");
response.sendRedirect("Servlet1");
return;}
}
}
尝试使用扩展名而不是类名放置文件名,有时会发生在我身上,这样做就可以了
一旦开始返回任何输出,就无法发送重定向。
您需要在开始任何输出之前放置处理任何可能重定向的逻辑(例如,在您的示例中为out.println()
)。 无论如何,将重定向逻辑放在方法的最开始是一件明智的事情,因为它应该是您决定的第一件事。
输出开始后重定向的原因在于 HTTP 协议本身 - 重定向使用响应标头传输,响应标头与响应正文用空行分隔。 一旦您开始编写响应主体,就无法再传输任何标头(如果幸运的话,除了开始的输出仍在缓冲区中)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.