使用springboot跳转到指定页面和(重定向,请求转发的实例)

 更新时间:2021年12月17日 10:50:38   作者:健康平安的活着  
这篇文章主要介绍了使用springboot跳转到指定页面和(重定向,请求转发的实例),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

springboot跳转到指定页面

controller的写法

必须是templates下面的页面,不经过配置,无法直接跳转到public,static,等目录下的页面

package com.ljf.spring.boot.demo.controller; 
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
/**
 * @ClassName: UserController
 * @Description: TODO
 * @Author: liujianfu
 * @Date: 2021/04/01 10:26:05 
 * @Version: V1.0
 **/
@Controller
public class UserController {
    @RequestMapping("/api/show")
    public String showName(String userName,Model model){
        System.out.println("进入controller层了!!!"+userName);
         model.addAttribute("name",userName);
        return "index";//跳转到指定页面
    } 
}

springboot重定向和请求转发

springboot重定向

方式一:使用 "redirect" 关键字(不是指java关键字),注意:类的注解不能使用@RestController,要用@Controller;因为@RestController内含@ResponseBody,解析返回的是json串。不是跳转页面

@RequestMapping(value="/test/test01/{name}" , method = RequestMethod.GET)
public String test(@PathVariable String name) {
  return "redirect:/ceng/hello.html";
}

方式二:使用servlet 提供的API,注意:类的注解可以使用@RestController,也可以使用@Controller

@RequestMapping(value="/test/test01/{name}" , method = RequestMethod.GET)
public void test(@PathVariable String name, HttpServletResponse response) throws IOException {
  response.sendRedirect("/ceng/hello.html");
}

springboot的请求转发

方式一:使用 "forword" 关键字(不是指java关键字),注意:类的注解不能使用@RestController 要用@Controller

@RequestMapping(value="/test/test01/{name}" , method = RequestMethod.GET)
public String test(@PathVariable String name) {
  return "forword:/ceng/hello.html";
  }

方式二:使用servlet 提供的API,注意:类的注解可以使用@RestController,也可以使用@Controller

@RequestMapping(value="/test/test01/{name}" , method = RequestMethod.GET)
public void test(@PathVariable String name, HttpServletRequest request, HttpServletResponse response) throws Exception {
  request.getRequestDispatcher("/ceng/hello.html").forward(request,response);
}

springboot转发和重定向

springmvc重定向写法

@RequestMapping(“/test1”)
public String test1(){
return “index”;
}

转发是不需要手动加html的,此时springboot发现是转发,默认配置下他会自动去templates文件夹下找到对应的文件进行转发,如果return后写的是index.html会报404。

重定向

@RequestMapping(“/test2”)
public String test2(){
return “redirect:index1.html”;
}

首先,添加redirect:这个毋庸置疑是mvc的语法问题,其次这里需要注意的是需要手动添加.html,否则会报404

转发的特点

地址栏不发生变化,显示的是上一个页面的地址

请求次数:只有1次请求

根目录:http://localhost:8080/项目地址/,包含了项目的访问地址

请求域中数据不会丢失

在这里插入图片描述

重定向的特点

地址栏:显示新的地址

请求次数:2次

根目录:http://localhost:8080/ 没有项目的名字

请求域中的数据会丢失,因为是2次请求

疑问

问:什么时候使用转发,什么时候使用重定向?

如果要保留请求域中的数据,使用转发,否则使用重定向。

以后访问数据库,增删改使用重定向,查询使用转发。

问:转发或重定向后续的代码是否还会运行?

无论转发或重定向后续的代码都会执行

在这里插入图片描述

1、转发使用的是getRequestDispatcher()方法;重定向使用的是sendRedirect();

2、转发:浏览器URL的地址栏不变。重定向:浏览器URL的地址栏改变;

3、转发是服务器行为,重定向是客户端行为;

4、转发是浏览器只做了一次访问请求。重定向是浏览器做了至少两次的访问请求;

5、转发2次跳转之间传输的信息不会丢失,重定向2次跳转之间传输的信息会丢失(request范围)。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring如何使用三级缓存解决循环依赖

    Spring如何使用三级缓存解决循环依赖

    在Spring框架中,循环依赖是指两个或多个Bean相互依赖,形成闭环,导致无法完成初始化,此问题仅存在于单例Bean中,而原型Bean会抛出异常,Spring通过三级缓存及提前暴露策略解决循环依赖:一级缓存存放完全初始化的Bean
    2024-11-11
  • Maven之远程仓库的配置详解

    Maven之远程仓库的配置详解

    这篇文章主要介绍了Maven之远程仓库的配置详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Spring Cloud Zuul路由规则动态更新解析

    Spring Cloud Zuul路由规则动态更新解析

    这篇文章主要介绍了Spring Cloud Zuul路由规则动态更新解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • 详解JavaWeb如何实现文件上传和下载功能

    详解JavaWeb如何实现文件上传和下载功能

    这篇文章主要介绍了如何利用JavaWeb实现文件的上传和下载功能,文中的示例代码讲解详细,对我们的学习或工作有一定的帮助,感兴趣的小伙伴可以学习一下
    2021-12-12
  • Debian配置JDK1.7 与Linux Java Helloworld

    Debian配置JDK1.7 与Linux Java Helloworld

    这篇文章主要介绍了Debian配置JDK1.7 与Linux Java Helloworld 的相关资料,需要的朋友可以参考下
    2016-06-06
  • VMware虚拟机下hadoop1.x的安装方法

    VMware虚拟机下hadoop1.x的安装方法

    这篇文章主要为大家详细介绍了VMware虚拟机下hadoop1.x的安装方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • 调用java.lang.Runtime.exec的正确姿势分享

    调用java.lang.Runtime.exec的正确姿势分享

    这篇文章主要介绍了调用java.lang.Runtime.exec的正确姿势,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • 一篇文章带你搞定SpringBoot不重启项目实现修改静态资源

    一篇文章带你搞定SpringBoot不重启项目实现修改静态资源

    这篇文章主要介绍了一篇文章带你搞定SpringBoot不重启项目实现修改静态资源,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 深入浅析java中finally的用法

    深入浅析java中finally的用法

    finally自己由关键字finally和后面的finally块组成。这篇文章重点给大家介绍java中finally的用法,需要的朋友参考下吧
    2018-06-06
  • application作用域实现用户登录挤掉之前登录用户代码

    application作用域实现用户登录挤掉之前登录用户代码

    这篇文章主要介绍了application作用域实现用户登录挤掉之前登录用户代码,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11

最新评论