Java 无法使用response.sendRedirect重定向

Java 无法使用response.sendRedirect重定向,java,regex,jsp,servlets,jstl,Java,Regex,Jsp,Servlets,Jstl,我搜索了好几个小时,研究如何在jsp或servlet中重定向。 然而,当我尝试应用它时,它不起作用 jsp页面中的代码: <% String articleId = request.getParameter("article_id").toString(); if(!articleId.matches("^[0-9]+$")) { response.sendRedirect("index.jsp"); } %> 通过调试我知道reg

我搜索了好几个小时,研究如何在jsp或servlet中重定向。 然而,当我尝试应用它时,它不起作用

jsp页面中的代码:

<%
    String articleId = request.getParameter("article_id").toString();
    if(!articleId.matches("^[0-9]+$"))
    {
       response.sendRedirect("index.jsp");
    }
%>

通过调试我知道regexp可以工作,如果任何时候,articleId不是number,则
if
会进入内部,但是当它到达response.sendRedirect时,它实际上不会进行重定向

在这种情况下,我会错过一些非常基本的东西吗


提前谢谢

此脚本之前有内容吗?如果是这样,重定向就不起作用了


此外,通常的做法是将此类逻辑放在servlet或其他类中作为控制器,让JSP只处理HTML的呈现。它也可以解决你的问题。例如,请参见

您应该在重定向后返回:

response.sendRedirect("index.jsp");
return;
这是值得考虑的“为什么”。sendRedirect()向HTTP响应添加一个头,就是这样。如果你接着写一些内容给响应,那么浏览器可能会认为重定向头是多余的,并且忽略它。总是值得考虑对响应对象调用方法的顺序,这通常会导致奇怪的故障模式,而没有明显的原因。Servlet API非常明确地描述了这些潜在问题。我尝试了这个解决方案,但没有在那里工作,请帮助,我尝试了这个解决方案,但没有在那里工作,请帮助