SpringCloud URL重定向及转发代码实例

作者:phpdragon 时间:2023-11-19 11:43:18 

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";
 }
}

来源:https://www.cnblogs.com/phpdragon/p/12193463.html

标签:Spring,Cloud,URL,重定向,转发
0
投稿

猜你喜欢

  • 基于Java实现Actor模型

    2021-12-11 09:28:50
  • SpringBoot中整合MyBatis-Plus-Join使用联表查询的实现

    2023-11-28 19:00:26
  • C#类的创建与初始化实例解析

    2023-08-05 17:55:31
  • SpringBoot 多Profile使用与切换方式

    2022-04-13 14:58:27
  • Java中JUC 的 Exchange 交换器详情

    2023-09-17 18:46:40
  • Java通过What、Why、How了解弱引用

    2021-11-01 00:06:20
  • Android形状图形与状态列表图形及九宫格图片超详细讲解

    2023-04-13 06:04:01
  • Android垂直切换的圆角Banner与垂直指示器相关介绍与应用详解

    2023-01-09 02:59:15
  • Android NTP 时间同步机制详解

    2023-03-29 23:02:09
  • Android Lottie实现中秋月饼变明月动画特效实例

    2023-06-19 12:41:17
  • C#的十种语法糖介绍

    2022-07-24 04:55:49
  • 浅析12306售票算法(java版)

    2023-11-16 10:27:12
  • MyBatis Generator 自定义生成注释的方法

    2023-02-24 12:37:23
  • C#算法之罗马数字转整数

    2022-05-25 16:20:26
  • Java获取中文拼音、中文首字母缩写和中文首字母的示例

    2021-07-18 14:28:16
  • Java中的ArrayList容量及扩容方式

    2023-10-17 17:24:40
  • Ajax 验证用户输入的验证码是否与随机生成的一致

    2022-06-29 00:43:32
  • Android多国语言转换Excel及Excel转换为string详解

    2022-10-30 08:07:02
  • C语言时间函数之strftime()详解

    2023-06-26 02:42:32
  • C#实现在购物车系统中生成不重复订单号的方法

    2022-06-21 04:03:09
  • asp之家 软件编程 m.aspxhome.com