springmvc的转发和重定向的案例演示 到底什么是转发和重定向两者有什么区别?

这篇具有很好参考价值的文章主要介绍了springmvc的转发和重定向的案例演示 到底什么是转发和重定向两者有什么区别?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 案例演示

在Spring MVC中,你可以使用`ModelAndView`或直接返回`String`来实现转发和重定向。以下是转发和重定向的示例:

### 1. 使用`ModelAndView`

#### 转发(Forward)

```java

@RequestMapping("/forwardDemo")
public ModelAndView forwardWithModelAndView() {
    ModelAndView mav = new ModelAndView();
    mav.addObject("message", "This is a forwarded message.");
    mav.setViewName("forward:/targetPage");
    return mav;
}


```

在上述代码中,`forward:/targetPage`将请求转发到`/targetPage` URL。

#### 重定向(Redirect)

```java

@RequestMapping("/redirectDemo")
public ModelAndView redirectToExternalURLWithModelAndView() {
    ModelAndView mav = new ModelAndView();
    mav.setViewName("redirect:http://www.google.com");
    return mav;
}


```

上述代码将请求重定向到外部URL `http://www.google.com`。

### 2. 直接返回`String`

#### 转发

```java

@RequestMapping("/forwardDemo")
public String forwardWithString() {
    return "forward:/targetPage";
}


```

#### 重定向

```java

@RequestMapping("/redirectDemo")
public String redirectWithString() {
    return "redirect:http://www.google.com";
}


```

在这些示例中,`/targetPage`是你的应用中另一个处理方法的URL,而`http://www.google.com`是外部网站的URL。根据你的具体需求,你可以将这些URL替换为你想要的任何有效URL。

注意,当你使用`forward`时,客户端(例如浏览器)不知道这个转发的存在,因为它是在服务器内部发生的。而使用`redirect`时,浏览器会收到一个新的URL,并导航到该URL。

什么是转发和重定向    两者有什么区别?

转发(Forward)和重定向(Redirect)是Web开发中两种常用的导航方式,它们在功能和用途上有显著的区别:

### 转发 (Forward)

1. **服务器端行为**:转发是在服务器内部完成的。当一个请求到达服务器,服务器可以将这个请求转发给另一个资源进行处理,客户端并不知道发生了转发。
   
2. **地址不变**:在浏览器地址栏中,用户看到的URL不会发生变化,因为整个转发过程在服务器端完成,客户端没有被重新定向到其他地址。
   
3. **效率较高**:由于整个过程在同一个服务器内部完成,没有额外的客户端到服务器的往返,因此效率相对较高。
   
4. **共享请求范围的数据**:在转发前后,可以在请求范围内共享数据,因为它们是同一次请求的不同部分。

### 重定向 (Redirect)

1. **客户端行为**:重定向涉及到两次请求。首先,客户端发送一个请求到服务器,然后服务器以一个特殊的响应指示客户端向另一个URL发送第二次请求。

2. **地址改变**:浏览器地址栏中的URL会改变,因为浏览器被指示访问一个新的URL。

3. **效率相对较低**:由于涉及两次完整的客户端-服务器往返,所以相对于转发,重定向的效率较低。

4. **无法共享请求范围的数据**:由于重定向涉及两次完全独立的请求,所以你不能在两次请求之间共享请求范围的数据。但是,你可以使用会话范围或URL参数来传递数据。

### 总结

- **转发**是服务器内部的行为,只涉及一次请求,地址栏不变。
- **重定向**涉及到客户端和两次请求,地址栏会显示新的URL。

选择使用转发还是重定向取决于你的具体需求。例如,如果你完成了表单的提交并想防止重复提交,重定向通常是一个好选择。如果你只是想在服务器内部导航,而不想改变浏览器中显示的URL,那么转发可能更合适。文章来源地址https://www.toymoban.com/news/detail-691077.html

到了这里,关于springmvc的转发和重定向的案例演示 到底什么是转发和重定向两者有什么区别?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • nginx的匹配方式和重定向

    目录 一、nginx的匹配方式 1、nginx的正则表达式: 2、location匹配的分类: 3、location的匹配的优先级: 4、在工作中配置location的原则: 二、nginx的重定向: 1、rewrite: 2、flag标志位: 3、配置方式: 4、实验: 1、基于域名的跳转: 2、基于ip访问跳转: 3、基于结尾文件跳转 三

    2024年02月03日
    浏览(51)
  • 【Linux】文件的描述符和重定向

    C语言的文件读写操作 文件写入 fputs int fputs(const char *s, FILE *stream); s:要写入的字符串 stream:要写入对应的目标文件 文件输出(只可以在文件读的环境下运行 r) fgets char *fgets(char *s, int size, FILE *stream); s:要保存到的目标位置 size:输出多少字节 stream:输出的目标文件 文件写

    2024年02月12日
    浏览(46)
  • Linux中的文件描述符和重定向

    文件描述符概念 我们在使用系统调用进行文件操作的时候 这里的open返回值就是一个文件描述符简称fd。 文件描述符其实就是一个从3开始的小整数,文件描述符是小整数的原因是因为文件描述符实际是文件描述符表这个数组的下标。 为什么从3开始,是因为系统默认打开了三

    2023年04月10日
    浏览(35)
  • Shell编程 管道和重定向 | 基本概念及其相关应用

    在Linux中,管道和重定向是非常有用的工具,用于处理命令的输入和输出。它们允许你将多个命令组合在一起,将命令的输出发送到文件或从文件中读取输入。以下是有关Linux管道和重定向的详细介绍,并附带了丰富的示例: 管道符号 | 用于将一个命令的输出传递给另一个命

    2024年01月18日
    浏览(42)
  • 重定向和转发的区别

    1、定义 用户通过浏览器发送一个请求,Tomcat服务器接收这个请求,会给浏览器发送一个状态码302,并设置一个重定向的路径,浏览器如果接收到了这个302的状态码以后,就会去自动加载服务器设置的路径 一个页面跳转到另外一个页面(应用场景)、登录页面跳转到主页面:

    2024年02月03日
    浏览(50)
  • Servlet重定向转发及自动加载

    学好Servlet必须紧紧围绕着请求和响应这两个概念 以上写的代码只是进行请求,然后再响应到客户端。请求的时候没有带数据给Servlet 下面开始写在请求的时候前端带数据到servlet里面,我们servlet要接收前端给我们的这个数据 login.jsp servlet实例 web.xml 请求时候的乱码问题: 响应

    2024年01月25日
    浏览(43)
  • JavaWeb 中 “转发”与 “重定向”的区别

    @ 目录 JavaWeb 中 “转发”与 “重定向”的区别 每博一文案 1. Forward 转发 2. Redirect重定向 3. 转发使用不当的危害:转发刷新问题 4. 转发 与 重定向的区别 5. “重写向”与“转发”的合理选择 6. 总结: 7. 最后: 在一个web应用中通过两种方式,可以完成资源的跳转: 第一种方

    2023年04月10日
    浏览(40)
  • Spring MVC:请求转发与请求重定向

    转发( forward ) ,指服务器接收请求后,从一个资源跳转到另一个资源中。请求转发是一次请求,不会改变浏览器的请求地址。 简单示例: 1.通过 String 类型的返回值实现转发

    2024年02月08日
    浏览(46)
  • Java高手速成 | 图说重定向与转发

     我们先回顾一下Servlet的工作原理,Servlet的工作原理跟小猪同学食堂就餐的过程很类似。小猪同学点了烤鸡腿(要奥尔良风味的),食堂窗口的服务员记下了菜单,想了想后厨的所有厨师,然后将菜单和餐盘交给专门制作烤鸡腿的厨师,这位大厨根据菜单制作出奥尔良烤鸡腿

    2024年02月09日
    浏览(48)
  • lnmp架构部署Discuz论坛并配置重定向转发

    主机名称 IP地址 所需服务/架构 系统版本 lnmp 192.168.195.133 nginx-1.24.0 mysql-5.7 php-8.2.11(lnmp架构) centos 8 需要首先部署好lnmp架构。详细步骤请阅读: 源码编译安装部署lnmp 下载Discuz论坛系统代码包,官网地址如下: Disucz! 下载_免费搭建网站_开源建站系统下载_Discuz!官方_为您提

    2024年02月08日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包