redirect_redirectattributes - CSDN
精华内容
参与话题
  • 细说Redirect重定向请求

    千次阅读 2018-04-19 22:00:24
    本来以为之前对Redirect的认识足够清楚,可是到实际开发之前我还是没有把这个问题想清楚,从而造成了需要花费更多的时间解决问题。总结下,并分享。1.请求转发(forward): 当客户端(浏览器)向远程服务器发送一个...
        前些日子在开发公司项目接口的时候,由于需要与第三方平台对接,由于接口之前的层层封装,不断的需要转发,把人差点搞糊涂了。本来以为之前对Redirect的认识足够清楚,可是到实际开发之前我还是没有把这个问题想清楚,从而造成了需要花费更多的时间解决问题。总结下,并分享。

    1.请求转发(forward):

              当客户端(浏览器)向远程服务器发送一个URL(http://www.cnblogs.com/zivxiaowei/)GET请求后,服务器接收到请求后,会在服务器内部直接通过另外的一个URL获取资源,并将此资源再响应给浏览器,也就是说请求转发整个过程是一次性的。列如:
     
    ->在浏览器中看到这URL(http://www.cnblogs.com/zivxiaowei/),
    ->通过页面上的点击操作后,
    ->服务器响应了其他页面内容到浏览器,但是浏览器的URL地址仍然是原来的URL.
     
    2.重定向(Redirect):
              当客户端(浏览器)向服务器发送一个URL请求后,但是资源并不在当前请求的服务器上,此时服务器会告诉浏览器,资源在另外一个URL地址上,此时浏览器会重新发送请求到新的资源地址。例如:
     
    ->在浏览器中看到这URL(http://www.cnblogs.com/zivxiaowei/),
    ->服务器A响应浏览器重定向
    ->浏览器重新定位新的URL地址到服务器B
    ->服务器B响应内容到浏览器,此时浏览器上面的URL已经换位了新的资源请求地址
     
    3.场景:
         现在又服务器:A,B,C,D, ABC都是本公司服务器,A服务器为Web服务器,而D为合作伙伴提供的接口服务器。
         公司Web项目A需要调用服务器D的远程鉴权接口,而我司又通过B,C两个服务器对D服务器的鉴权接口进行了封装,
    然后web服务器A会通过调用服务器B,B调用服务器C,C调用D的方式调用鉴权接口(有点烦人,但是他们要求这么做)。
         服务器D本来可以直接通过响应JSON/XML数据来提供接口的,但是他们做了业务逻辑封装,
    1. 当发现请求鉴权不通过的时候,D服务器会重定向到他们的Web页面,当用户在界面上操作完成后,D服务器会发送重定向请求到调用者制定的接口,然后调用者通过解析重定向请求的数据完成接下来的操作。
    2. 当调用者发送的请求通过了服务器D鉴权的时候,服务器D会直接重定向响应到调用者制定的接口,然后调用者通过解析重定向请求的数据完成接下来的操作。
     
      简而言之,对接服务器D,需要其他服务端不断的发送重定向请求。愚蠢的是,由于当时没想明白整个重定向流程,对接的时候,我把服务器D重定向的结果地址写在了服务器B上接收,然后把数据封装成了JSON。最后造成的结果就是,当用户在浏览器上访问服务器A时,服务器响应的都是数据,Web服务器A根本就没有进行过业务逻辑处理。最后又不得重新修订了下接口,重定向结果请求还是得放在Web端。
     
    4.总结
         接口的制定是一深度技术活,设计不好就是个大坑。了解清楚重定向,以后碰到了少走点弯路,少入点坑。(描述的肯能不是很清楚,见谅)

    转载出处:http://www.cnblogs.com/zivxiaowei/

    展开全文
  • Redirect(重定向)

    万次阅读 2018-09-28 08:28:41
    重定向简介 重定向往往是服务器向外部发的请求跳转; 直观感受就是浏览器的url地址发生了明显变化,页面无法返回; ...当重定向时:会生成一个全新的req作用域;(简单来说就是:以前的req参数无法得到;...

    重定向简介

    重定向往往是服务器向外部发的请求跳转;
    直观感受就是浏览器的url地址发生了明显变化,页面无法返回;
    

    注意事项

    当重定向时:会生成一个全新的req作用域;(简单来说就是:以前的req参数无法得到;)
    实现方式:
    	url拼接成字符串(会出现中文乱码)
    	RedirectAttributes(addAttribute方法会出现中文乱码,addFlashAttribute不会出现中文乱码)
    	ModelAndView(这是Spring 2.0的时候所用到的方法,无法携带参数) 
    注意:url拼接成字符串和RedirectAttributes的addAttribute方法其实属于一种,以为RedirectAttributes的addAttribute方法其实就是自动拼接url;
    

    建议

    在重定向时还需要传递参数的时候,进量用转向来达到自己业务的需求;
    原因:
    	重定向用session传递参数时,会增大作用域;(服务器内部的重定向)
    	重定向用url链接后面拼接参数时,会出现中文乱码,或则是数据传递缺失(url后跟的参数是有限的)等一系列问题。
    

    展开全文
  • Spring MVC中做form表单功能提交时,防止用户客户端后退或者刷新时重复提交问题,需要在服务端进行重定向跳转,其中redirect是直接跳转到其他页面,有以下3种方法进行重定向。 redirect重定向流程 客户发送一个请求...

    Spring MVC中做form表单功能提交时,防止用户客户端后退或者刷新时重复提交问题,需要在服务端进行重定向跳转,其中redirect是直接跳转到其他页面,有以下3种方法进行重定向。

    redirect重定向流程

    客户发送一个请求到服务器,服务器匹配servlet,这都和请求转发一样,servlet处理完之后调用了sendRedirect()这个方法,这个方法是response的方法,所以,当这个servlet处理完之后,看到response.senRedirect()方法,立即向客户端返回这个响应,响应行告诉客户端你必须要再发送一个请求,去访问test.jsp,紧接着客户端受到这个请求后,立刻发出一个新的请求,去请求test.jsp,这里两个请求互不干扰,相互独立,在前面request里面setAttribute()的任何东西,在后面的request里面都获得不了。可见,在sendRedirect()里面是两个请求,两个响应。

    1. response.sendRedirect重定向跳转

    @RequestMapping(value="/testredirect",method = { RequestMethod.POST, RequestMethod.GET })  
    public ModelAndView testredirect(HttpServletResponse response){  
        response.sendRedirect("/index");
        return null; 
    }
    

    2. ViewResolver直接跳转

    不带参数

    @RequestMapping(value="/testredirect",method = { RequestMethod.POST, RequestMethod.GET })  
    public  String testredirect(HttpServletResponse response){  
        return "redirect:/index";  
    } 
    

    带参数

    @RequestMapping("/testredirect")
    public String testredirect(Model model, RedirectAttributes attr) {
    	attr.addAttribute("test", "51gjie");//跳转地址带上test参数
        attr.addFlashAttribute("u2", "51gjie");//跳转地址不带上u2参数
    	return "redirect:/user/users";
    }
    
    • 使用RedirectAttributes的addAttribute方法传递参数会跟随在URL后面,如上代码即为http:/index.action?test=51gjie

    • 使用addFlashAttribute不会跟随在URL后面,会把该参数值暂时保存于session,待重定向url获取该参数后从session中移除,这里的redirect必须是方法映射路径,jsp无效。你会发现redirect后的jsp页面中b只会出现一次,刷新后b再也不会出现了,这验证了上面说的,b被访问后就会从session中移除。对于重复提交可以使用此来完成.

    • spring mvc设置下RequestMappingHandlerAdapter 的ignoreDefaultModelOnRedirect=true,这样可以提高效率,避免不必要的检索。

    3. ModelAndView重定向

    不带参数

    @RequestMapping(value="/restredirect",method = { RequestMethod.POST, RequestMethod.GET })  
    public  ModelAndView restredirect(String userName){  
        ModelAndView  model = new ModelAndView("redirect:/main/index");    
        return model;  
    }
    

    带参数

    @RequestMapping(value="/toredirect",method = { RequestMethod.POST, RequestMethod.GET })  
    public  ModelAndView toredirect(String userName){  
        ModelAndView  model = new ModelAndView("/main/index");   
        model.addObject("userName", userName);  //把userName参数带入到controller的RedirectAttributes
        return model;  
    }
    

    总结

    1, redirect重定向可以跳转到任意服务器,可以用在系统间的跳转。
    2, Spring MVC中redirect重定向,参数传递可以直接拼接url也可以使用RedirectAttributes来处理,由于是不同的请求,重定向传递的参数会在地址栏显示,所以传递时要对中文编码进行处理。

    展开全文
  • forward和redirect的区别是什么?

    万次阅读 多人点赞 2020-06-28 16:07:42
    forward和redirect是什么?是servlet种的两种主要的跳转方式。forward又叫转发,redirect叫做重定向。两者的区别总结:1.从地址栏显示来说:1)forword是服务器内部的重定向,服务器直接访问目标地址的 url网址,把...

    forward和redirect是什么?

    是servlet种的两种主要的跳转方式。forward又叫转发,redirect叫做重定向

    区别:(本地效应次数)

    地址栏,数据共享,应用场景,效率,本质,次数

    两者的区别总结:

    1. 从地址栏显示来说:

    1)forword服务器内部的重定向,服务器直接访问目标地址的 url网址,把里面的东西读取出来,但是客户端并不知道,因此用forward的话,客户端浏览器的网址是不会发生变化的

    2)redirect是服务器根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,所以地址栏显示的是新的地址。

    2。 从数据共享来说:

    1)由于在整个定向的过程中用的是同一个request,因此forward会将request的信息带到被重定向的jsp或者servlet中使用。即可以共享数据

    2)redirect不能共享

    3. 从运用的地方来说

    1)forword 一般用于用户登录的时候,根据角色转发到相应的模块

    2) redirect一般用于用户注销登录时返回主页面或者跳转到其他网站

    4。 从效率来说:

    1)forword效率高,而redirect效率低

    5. 从本质来说:

    forword转发是服务器上的行为,而redirect重定向是客户端的行为

     

    6. 从请求的次数来说:

    forword只有一次请求;而redirect有两次请求,

     

    再举一个浅显易懂的例子:

    转发的时候你并不知道A局有没有去联系B局,信息没有被泄露,没有丢失!!

     

     

    欢迎留言点赞!!

    展开全文
  • 重定向 return "redirect:/user/index";

    万次阅读 2018-05-31 11:07:05
    spring MVC框架controller间跳转,需重定向。有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参数跳转,页面也能显示。 首先先来介绍一下不带参数的重定向: 我在后台一个controller跳转到另一个...
  • Java-重定向(redirect)

    万次阅读 2019-06-28 17:54:19
    JavaEE-重定向(redirect) 在Java代码里: response.sendRedirect("test.jsp"); 原理: 重定向是一个客户端行为,用户请求到达服务器之后,服务器返回响应,HTTP状态码置为302,并将转发的页面保存在响应头中的...
  • redirect

    千次阅读 2017-11-14 17:10:18
    记录记录刚刚碰到的诡异的事情,在controller 的方法中最后return 是重定向redirect到一个参数,这个参数的内容是从数据库中获取的内容,是一个app下载的地址。可不知道为啥我自己这边运行都可以跳转到这个下载地址...
  • redirect-重定向

    千次阅读 2018-07-27 15:24:46
    redirect-重定向 资源更换地址后,为保证原地址的有效性,而对原url做的302/301重定向处理。 302:暂时性转移,每次访问都会请求到服务端判断 301:永久性转移,缓存后访问不会请求到服务端,而是直接跳转(谨慎...
  • http之Redirect

    千次阅读 2018-09-22 10:26:54
    Redirect 的概念 通过 url 访问某个路径请求资源时,发现资源不在 url 所指定的位置,这时服务器要告诉浏览器,新的资源地址,浏览器再重新请求新的 url,从而拿到资源。 若服务器指定了某个资源的地址,现在需要...
  • HTTP Redirect

    千次阅读 2019-06-22 11:37:35
    Redirect 是指,当我们通过URL 访问一个资源的时候,我们可能会发现,这个资源已经不在这个URL 所指向的位置了。这个时候,服务器要告诉浏览器/客户端,要请求的资源在什么地方,然后浏览器/客户端再去重新请求那个...
  • 微信开发 提示 Redirect_uri参数错误解决方法

    万次阅读 多人点赞 2016-04-30 16:09:52
    redirect_uri 参数错误
  • 1.首先确定微信公众号上配置的url跟自己提交的redirect_uri 是一致的 按照官方下载好txt文件并在服务器上配置好对应路径 接下来就是要注意的地方了,微信文档上面说可以放在根目录或某个文件夹下面,但是我之前...
  • Nginx之proxy_redirect详解

    万次阅读 2015-12-24 20:46:42
    今天在做nginx反向代理apache的时候出了一点点问题,原来后端apache用的端口是8080通过反向代理后,使用wireshark抓包发现location头域数值为... 所以在这里用到了nginx的proxy_redirect
  • Syntax: port_in_redirect on | off; Default: port_in_redirect on; Context: http, server, location
  • 阿里云双12感恩回馈,云产品冰点价】云服务器89元/年,这里有专享低价 ... wx.navigateTo({}) ,保留当前页面,跳转到应用内的某个页面, 使用 wx.navigateBack 可以返回,有时候我们跳转还需要携带参数 ...
  • redirect_uri 参数错误的解决办法

    万次阅读 2015-07-07 10:16:21
    我通过java代码去获得用户的openid,一直报redirect_uri。我页面代码的链接为: https://open.weixin.qq.com/connect/oauth2/authorize? appid=APPID& redirect_uri=ENCODE(URL)& response_type=code& scope=s
  • 回调地址设置问题 100010报错解析方法:打开... 解码之后查看实际回调地址(redirect_uri=之后到第一个&符号或者问号截止的部分)是否与QQ互联里网站回调域里填写的地址一致。不一致就会报错,修改设置使两个地
  • 重归 今年4月份 在做一个app 公共号 要做一个微信授权登录 给我意向深刻的bug   其实就是没有在微信平台配置白名单,去哪配?这是个问题! 解决办法需要注意以下几点: ... 推荐使用微信提供的测试号,不要钱,...
  • 在做多级路由的时候遇到很多问题,虽然不难,但是如果没有经验,往往要花一整天时间才能解决(可能我笨),况且网上资料也很少。项目需要是这样的: 登录页面跳到后台页面重定向,登录页是一级路由对应页面登录后:...
  • 如果总是提示redirect_uri 参数错误,那一定就是 授权回调域填写的有问题!!! 错误填写:www.baicaijie.com/ 调试提示redirect_uri 参数错误 一定要如下格式填写,域名后不能加任何东西,哪怕是一个‘/’。 正确...
1 2 3 4 5 ... 20
收藏数 301,489
精华内容 120,595
关键字:

redirect