(一)重定向
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
网友评论