【问题标题】:Redirect to a URL with 404 status code in Java在 Java 中重定向到具有 404 状态代码的 URL
【发布时间】:2019-03-29 05:46:06
【问题描述】:

如何将 http 请求重定向到具有 404 状态代码的特定 URL。我正在使用

Response.sendRedirect("/404userfriendlypage")

请求的 URL 的响应代码是 301,而我需要它是 404。然后重定向到这个用户友好的错误页面。

提前致谢。

【问题讨论】:

    标签: java spring-mvc redirect http-status-code-404 http-status-code-301


    【解决方案1】:

    我已经通过使用下面的代码解决了这个问题。

    Response.sendError(HttpServletResponse.SC_NOT_FOUND);
    

    将 404 发送到请求的 url 的前端。在应用程序级别,我们有一个配置,如果 404 代码接收到重定向到用户友好的页面。

    【讨论】:

      【解决方案2】:

      使用这种语法在你的 spring 控制器中重定向

              return "redirect:/urlNotExist";
      

      由于“/urlNotExist”路由没有映射,上述重定向会给客户端提供 404。

      现在您可以在客户端的客户端编写代码以重定向到用户友好的错误页面。或者只需设置一个 @ControllerAdvice 以将服务器端重定向到用户友好的错误页面。

      纯 java 中的解决方案。

      使用简单的 Response.sendRedirect("path"); 进行重定向

      Response.sendRedirect("/404Genratingpage")
      

      当状态为 404 或其他条件时重定向到自定义错误页面。您需要重写 Response.sendRedirect 方法。

       public class CustomResponseWrapper extends HttpServletResponseWrapper {
      
           @Override
          public void sendRedirect(String location) {
      
            //custom logic to redirect to a user friendly error page.
        super.sendRedirect(request.getContextPath()+"/404userfriendlypage.jsp");
          }
      
      }
      

      对于您的 404 或任何其他状态,请尝试在您的 404userfriendlypage.jsp 中设置如下响应状态。

      <%response.setStatus(404);%>
      

      【讨论】:

      • 你能用纯java提供解决方案吗?应用程序不是基于 Spring 的。
      • 谢谢@Sacin 的回答,它没有解决我的问题。我必须使用 404 错误代码作为响应重定向。使用上面的代码,它给出 301 但我需要 404
      猜你喜欢
      • 2012-07-01
      • 2021-11-21
      • 2017-08-28
      • 1970-01-01
      • 1970-01-01
      • 2020-04-24
      • 2015-11-16
      • 2019-03-10
      • 2017-07-03
      相关资源
      最近更新 更多