SpringCloud URL重定向及转发代码实例
WebUI项目中,很多Springcontroller视图函数直接返回html页面,还有一些视图函数是要重定向或转发到其他的url上.
redirect和forward的区别:
重定向redirect:完整的重定向包含两次request-response过程,第一次是访问原始url,第二次是服务器通知客户端访问重定向后的url.重定向完成后,浏览器的地址是重定向后的url,而不是原始的url.
重定向的使用场景:因为重定向会修改浏览器地址,所以form提交应该使用重定向,以免用户刷新页面导致form重复提交.
转发forward:完整的转发仅包含一次request-response过程,用户发出request后,服务器端视图函数先处理自己的逻辑,然后在服务器端有调用另一个视图函数,最后将response返回给浏览器.
示例:
@RequestMapping("/")
publicclassDemoController{
/*
*forward示例:以字符串的形式构建目标url,url需要加上forward:前缀
**/
@RequestMapping("/forwardTest1")
publicStringforwardTest1(){
return"forward:/forwardTarget?param1=v1¶m2=v2";
}
/*
*forward示例:使用ModelAndView()设置转发的目标url
**/
@RequestMapping("/forwardTest2")
publicModelAndViewforwardTest2(){
ModelAndViewmav=newModelAndView("/forwardTarget");//绝对路径OK
//ModelAndViewmav=newModelAndView("forwardTarget");//相对路径也OK
mav.addObject("param1","value1");
mav.addObject("param2","value2");
returnmav;
}
/*
*redirect目标有三种构建方式
*1.使用redirect:前缀url方式构建目标url
*2.使用RedirectView类型指定目标
*3.使用ModelAndView类型指定目标,ModelAndView视图名默认是forward,所以对于redirect,需要加上redirect:前缀
**/
@RequestMapping("/noParamRedirect")
publicRedirectViewnoParamTest(){
returnnewRedirectView("http://www.qq.com");
}
publicStringnoParamTest2(){
return"redirect:http://www.qq.com";
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。