zoukankan      html  css  js  c++  java
  • SpringCloud : URL 重定向 和 转发

    Web UI项目中, 很多 Spring controller 视图函数直接返回 html 页面, 还有一些视图函数是要重定向或转发到其他的 url 上.

    redirect 和 forward的区别:

    重定向 redirect: 完整的重定向包含两次request-response过程, 第一次是访问原始url, 第二次是服务器通知客户端访问重定向后的url. 重定向完成后, 浏览器的地址是重定向后的url, 而不是原始的url. 
    重定向的使用场景: 因为重定向会修改浏览器地址, 所以 form 提交应该使用重定向, 以免用户刷新页面导致form重复提交.

    转发 forward: 完整的转发仅包含一次 request-response 过程, 用户发出request后, 服务器端视图函数先处理自己的逻辑, 然后在服务器端有调用另一个视图函数, 最后将response返回给浏览器.

    示例:

    @RequestMapping("/")
    public class DemoController {
    
        /*
         * forward 示例: 以字符串的形式构建目标url, url 需要加上 forward: 前缀
         * */
        @RequestMapping("/forwardTest1")
        public String forwardTest1() {
            return "forward:/forwardTarget?param1=v1&param2=v2";
        }
    
    
        /*
         * forward 示例: 使用 ModelAndView() 设置转发的目标url
         * */
        @RequestMapping("/forwardTest2")
        public ModelAndView forwardTest2() {
            ModelAndView mav=new ModelAndView("/forwardTarget"); // 绝对路径OK
            //ModelAndView mav=new ModelAndView("forwardTarget"); // 相对路径也OK
            mav.addObject("param1", "value1");
            mav.addObject("param2", "value2");
            return mav ;
        }
    
    
        /*
         * redirect 目标有三种构建方式
         * 1. 使用 redirect: 前缀url方式构建目标url
         * 2. 使用 RedirectView 类型指定目标
         * 3. 使用 ModelAndView 类型指定目标, ModelAndView 视图名默认是forward, 所以对于redirect, 需要加上 redirect: 前缀
         * */
        @RequestMapping("/noParamRedirect")
        public RedirectView noParamTest() {
            return new RedirectView("http://www.qq.com");
        }
    
    
    
        public String noParamTest2() {
            return "redirect:http://www.qq.com";
        }
    }

    PS:

    https://www.cnblogs.com/harrychinese/p/SpringBoot_redirect_and_forward.html

  • 相关阅读:
    Python 学习日记 第七天
    Python 学习日记 第六天
    Python 学习日记 第五天
    Python 学习日记 第四天
    Redis 中的数据类型及基本操作
    Asp.net mvc 中View 的呈现(二)
    Asp.net mvc 中View的呈现(一)
    Asp.net mvc 中Action 方法的执行(三)
    Asp.net mvc 中Action 方法的执行(二)
    Asp.net mvc 中Action 方法的执行(一)
  • 原文地址:https://www.cnblogs.com/phpdragon/p/12193463.html
Copyright © 2011-2022 走看看