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"; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。