重定向:服务器收到浏览器的请求之后,返回一个新的链接到浏览器,浏览器收到后又重新请求新的链接。请求两次
跳转:服务器收到浏览器的请求之后,将控制权(准确来讲是request和response)转移到另一个jsp手里,jsp渲染后显示给浏览器。请求一次
在浏览器的用户看来,两者好像差别不大。但是重定向和跳转不只是请求次数和数据存活时间的问题,尤其是和别的因素结合的时候;
众所周知,WEB-INF中的jsp不能通过浏览器直接访问,而重定向中的第二次请求就是通过浏览器对返回的新链接发起请求,如果请求的jsp在WEB-INF文件夹中,那么就会404(无法访问);
就像下面这样:
@Controller
@RequestMapping(value = "/register")
public class IndexController {
@RequestMapping(value = "/sendEmail", method = RequestMethod.POST)
public String demo( @RequestParam("email") String email, SendEmail sendEmail ) {
return "redirect:/WEB-INF/jsp/demo.jsp";
//重定向到WEB-INF中的页面
}
}
所以,结论就是,不要“redirect:”+“WEB-INF中的jsp”;