springmvc请求转发和重定向的四种跳转方式

简介: springmvc请求转发和重定向的四种跳转方式

一、本质

1、本质还是两种跳转,即 请求转发和重定向,衍生出四种,分别是:

  • 请求转发到页面
  • 请求转发到action
  • 重定向到页面
  • 重定向到action

二、准备页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script src="js/jquery-3.3.1.js"></script>
</head>
<body>
<a href="${pageContext.request.contextPath}/one.action">1、请求转发到页面</a><br/>
<a href="${pageContext.request.contextPath}/two.action">2、请求转发到action</a><br/>
<a href="${pageContext.request.contextPath}/three.action">3、重定向到页面</a><br/>
<a href="${pageContext.request.contextPath}/four.action">4、重定向到action</a><br/>
<a href="${pageContext.request.contextPath}/five.action">5、跳任意页面</a><br/>
</body>
</html>

三、四种跳转方式

1、请求转发到页面

@RequestMapping("/one")
    public String one(){
        System.out.println("这是请求转发页面跳转.........");
        //默认是请求转发,使用视图解析器拼接前缀后缀进行页面跳转
        return "main";  
    }

2、请求转发到action

@RequestMapping("/two")
    public String two(){
        System.out.println("这是请求转发action跳转.........");
        //  /admin/  /other.action  .jsp
        //forward: 这组字符串可以屏蔽前缀和后缀的拼接.实现请求转发跳转
        return "forward:/other.action";  //默认是请求转发,使用视图解析器拼接前缀后缀进行页面跳转
    }
@RequestMapping("/other")
    public String other(){
        System.out.println("进入到OtherController........");
        return "main";
    }

3、重定向到页面

@RequestMapping("/three")
    public String three(){
        System.out.println("这是重定向页面.......");
        //redirect:  这组字符串可以屏蔽前缀和后缀的拼接.实现重定向跳转
        return "redirect:/admin/main.jsp";
    }

4、重定向到action

@RequestMapping("/four")
    public String four(){
        System.out.println("这是重定向action.......");
        //redirect:  这组字符串可以屏蔽前缀和后缀的拼接.实现重定向跳转
        return "redirect:/other.action";
    }

5、额外补充:跳转任意目录下的页面

@RequestMapping("/five")
    public String five(){
        System.out.println("这是随便跳.......");
        return "forward:/fore/login.jsp";
    }

四、简单源码分析视图解析器InternalResourceViewResolver

InternalResourceViewResolver类 继承UrlBasedViewResolver

UrlBasedViewResolver类中,包含了前缀、后缀以及重定向和转发的属性

public class UrlBasedViewResolver extends AbstractCachingViewResolver implements Ordered {
    public static final String REDIRECT_URL_PREFIX = "redirect:";
    public static final String FORWARD_URL_PREFIX = "forward:";
    @Nullable
    private Class<?> viewClass;
    private String prefix = "";
    private String suffix = "";

当action重定向或者转发到某个页面地址时,会默认根据配置文件加上前缀和后缀,就像这样

<!--添加视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/admin/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

如果不想加上该前缀和后缀,此时可以使用视图解析器的静态常量值

redirect和forward,这两个字符串可以屏蔽前缀和后缀的拼接.实现页面的转发和重定向跳转

return "forward:/fore/login.jsp";
或者
return "redirect:/admin/main.jsp";


相关文章
|
7月前
Springmvc中提交from之后不跳转不进控制器
Springmvc中提交from之后不跳转不进控制器
|
23天前
|
前端开发 Java 开发者
Spring MVC中的请求映射:@RequestMapping注解深度解析
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的关键,它将HTTP请求映射到相应的处理器方法上。本文将深入探讨`@RequestMapping`注解的工作原理、使用方法以及最佳实践,为开发者提供一份详尽的技术干货。
68 2
|
2月前
|
设计模式 前端开发 Java
Spring MVC——项目创建和建立请求连接
MVC是一种软件架构设计模式,将应用分为模型、视图和控制器三部分。Spring MVC是基于MVC模式的Web框架,通过`@RequestMapping`等注解实现URL路由映射,支持GET和POST请求,并可传递参数。创建Spring MVC项目与Spring Boot类似,使用`@RestController`注解标记控制器类。
43 1
Spring MVC——项目创建和建立请求连接
|
2月前
|
前端开发 Java
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
文章介绍了如何使用SpringBoot创建简单的后端服务器来处理HTTP请求,包括建立连接、编写Controller处理请求,并返回响应给前端或网址。
60 0
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
|
3月前
|
XML 缓存 前端开发
springMVC02,restful风格,请求转发和重定向
文章介绍了RESTful风格的基本概念和特点,并展示了如何使用SpringMVC实现RESTful风格的请求处理。同时,文章还讨论了SpringMVC中的请求转发和重定向的实现方式,并通过具体代码示例进行了说明。
springMVC02,restful风格,请求转发和重定向
|
5月前
|
缓存 前端开发 Java
SpringMVC原理(1)-文件上传请求
【7月更文挑战第2天】SpringMVC文件上传请求原理:文件上传请求的执行流程、文件上传的自动配置原理 涉及组件:MultiPartFile、MultipartResolver、MultipartHttpServlet
|
6月前
|
前端开发 Java Spring
Spring MVC 请求处理流程
Spring MVC 请求处理流程
38 0
|
7月前
SpringMVC跳转外部项目方式
SpringMVC跳转外部项目方式
52 0
|
7月前
|
设计模式 前端开发 开发者
SpringMVC底层负责请求路由的模块是什么
SpringMVC底层负责请求路由的模块是什么
115 0
|
7月前
|
设计模式 前端开发 JavaScript
Spring MVC(一)【什么是Spring MVC】
Spring MVC(一)【什么是Spring MVC】