【问题标题】:Cannot redirect with the response.sendRedirect无法使用 response.sendRedirect 重定向
【发布时间】:2010-10-31 23:02:20
【问题描述】:

我用谷歌搜索了好几个小时关于如何在 jsp 或 servlet 中进行重定向。 但是,当我尝试应用它时,它不起作用。

我在jsp页面中的代码:

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

我从调试中知道正则表达式有效,如果任何时候,articleId 不是数字,if 进入内部,但是当它到达 response.sendRedirect 时,它实际上并没有进行重定向。

在这种情况下,我是否遗漏了一些非常基本的东西?

提前致谢。

【问题讨论】:

    标签: java regex jsp servlets jstl


    【解决方案1】:

    你应该在重定向后return

    response.sendRedirect("index.jsp");
    return;
    

    【讨论】:

    • 这是值得考虑的“为什么”。 sendRedirect() 将标头添加到 HTTP 响应中,仅此而已。如果您随后继续向响应写入一些内容,则浏览器可能会认为重定向标头是多余的,并忽略它。在响应对象上调用方法的顺序总是值得考虑的,它通常会导致奇怪的故障模式而没有明显的原因。 Servlet API 非常明确地描述了这些潜在问题。
    • I also have the same problem,我尝试了这个解决方案,但没有在那里工作,请帮助
    【解决方案2】:

    这个 scriptlet 之前有内容吗?如果是这样,重定向将不起作用。

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

    【讨论】:

    猜你喜欢
    • 2013-01-17
    • 1970-01-01
    • 2021-03-07
    • 1970-01-01
    • 2020-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-26
    相关资源
    最近更新 更多