JAVA实现重定向和转发

(一)重定向

1.如何在java中重定向到外部URL
重定向之余并给外部域名下加cookie

CookieUtils.setCookie(response, "token",  att, expiresIn);
return new ModelAndView(new RedirectView((String) httpSession.getAttribute("originUrl")));

setCookie

public static HttpServletResponse setCookie(HttpServletResponse response, String name, String value, int time) {
        // new一个Cookie对象,键值对为参数
        Cookie cookie = new Cookie(name, value);
        // tomcat下多应用共享
        cookie.setPath("/");
        // 如果cookie的值中含有中文时,需要对cookie进行编码,不然会产生乱码
        try {
            URLEncoder.encode(value, "utf-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        cookie.setMaxAge(time);
        // 将Cookie添加到Response中,使之生效
        response.addCookie(cookie); // addCookie后,如果已经存在相同名字的cookie,则最新的覆盖旧的cookie
        return response;
    }

2.重定向到内部

response.sendRedirect(path);

前后端分离的情况下
response.sendRedirect(path)也可以用来重定向到前端URL

(二)转发

 request.getRequestDispatcher("/server/user/requestAuth").forward(request, response);

(三)请求转发和重定向的主要区别

(1) 请求转发forward 只有一次请求,而重定向是两次请求:

(2) 请求转发:仅限于当前web应用内,"/"代表当前web应用的根目录
请求重定向:可以定向到任何资源,"/"代表当前web站点的根目录

(3)转发请求的参数不会丢失重定向参数会丢失,request还是之前请求的request
请求重定向的request会生成新的request

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

推荐阅读更多精彩内容