Java web 利用过滤器重定向URL并返回301状态码

关于重定向时的状态码301、301、307、308的区别网上有很多,这里不再赘述

====================分割线====================

在过滤器的doFilter方法中去实现重定向

public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) {

    // 强转为HttpServletRequest和HttpServletResponse  

    HttpServletRequest httpReq = (HttpServletRequest)request; 

    HttpServletResponse httpResp = (HttpServletResponse)response;

    //拿到URL

    String URL = httpReq.getRequestURL().toString();

    //假设redirectUrl(HttpServletRequest httpReq)方法可以判定是否重定向,如果重定向则返回目标URL,否则返回空串

    String redirectUrl = redirectUrl(httpReq);

    if (StringUtils.isNoneBlank(redirectUrl)) {

        //写入状态码301和重定向目标URL      

        httpResp.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);

        httpResp.setHeader("Location",redirectUrl);

    }else {

           //不拦截的放行            

        chain.doFilter(request,response);

    }

}

====================分割线====================

方法 httpResp.sendRedirect(redirectUrl);

等同于

httpResp.setStatus(302);

httpResp.setHeader("Location",redirectUrl);

如果想返回302用这个,否则不要用这个方法。

===END===

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。