SpringMVC 04: SpringMVC中4种页面跳转方式

SpringMVC 04: SpringMVC中4种页面跳转方式

转发和重定向的页面跳转方式

页面跳转方式,本质上只有2种方式:转发 + 重定向

但在SpringMVC的具体实现上,转发可以细分为:普通的页面转发 + 经由action方法的页面转发

重定向可以细分为:普通的页面重定向 + 经由action方法的页面重定向

所以在具体的代码实现层面上,页面跳转可以细分为4种方式

本例中的SpringMVC项目配置和SpringMVC博客集(指SpringMVC 02)一致

在webapp/admin目录下新建main.jsp,作为各种请求的最终响应页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

main.jsp

main......page......

webapp/index.jsp如下,是包含四种页面跳转方式的前端页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

index.jsp

4种转发和重定向的方式


1.普通转发页面(对请求的默认处理方式)

2.action转发页面

3.普通重定向页面

4.action重定向页面

新建控制器:JumpAction,其中含有测试4种页面跳转方式的action方法

package com.example.controller;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

@Controller

public class JumpAction {

/**

1.

之前在springmvc.xml中配置了视图解析器,这是SpringMVC处理页面跳转的默认方式,属于普通转发跳转

会将页面转发到action方法的返回值和前缀后缀拼接形成的路径所对应资源页面

*/

@RequestMapping("/one")

public String one(){

System.out.println("one action被访问......");

return "main";

}

/** 2.

* 下面是我们注册的视图解析器的父类:UrlBasedViewResolver,中的几个参数

* 通过对底层源代码的解读,可知在action方法的返回值字符串中,如果以"redirect:"或者"forward:"开头则不会执行视图解析器的路径拼接

* 而是会按照redirect或forward完成页面重定向或页面跳转

*

* public static final String REDIRECT_URL_PREFIX = "redirect:";

* public static final String FORWARD_URL_PREFIX = "forward:";

* private String prefix = "";

* private String suffix = "";

*

* 注意:不管要使用action的页面转发或者是action的页面重定向,由于action方法是控制器内部的方法

* 所以要想访问action方法必须访问到控制SpringMVC控制器,而要访问控制器,前提是要能被SpringMVC核心处理器处理(也就是底层的servlet)

* 而要想被底层servlet处理,必须满足请求路径的通配条件,这是我们在web.xml文件中配置好的"*.action"

* 所以要在请求的末尾加上".action"以满足请求的通配要求,才有资格被交给SpringMVC的控制器中的方法处理

*/

@RequestMapping("/two")

public String two(){

System.out.println("other action被访问......");

return "forward:/one.action";

}

/**

* 如果是普通重定向,直接重定向到项目资源,不需要控制器中的action方法的处理,请求路径后不用跟".action",直接写重定向的资源路径即可

*

*/

@RequestMapping("/three")

public String three(){

System.out.println("three action被访问......");

return "redirect:/admin/main.jsp";

}

/**

* 要在请求的末尾加上".action"以满足请求的通配要求,才有资格被交给SpringMVC的控制器中的方法执行

*

*/

@RequestMapping("/four")

public String four(){

System.out.println("other action被访问....");

return "redirect:/three.action";

}

}

部署并启动tomcat测试

网站首页

测试1:普通转发页面

响应页面(left),控制台输出(right)如下:重点关注响应页面的地址栏地址,由于访问次序为one.action --->转发--->main.jsp,所以显示one.action

测试2:action转发页面

响应页面(left),控制台输出(right)如下:重点关注响应页面的地址栏地址,由于访问次序为two.action --->转发---> one.action --->转发--->main.jsp,所以显示two.action

测试3:普通重定向页面

响应页面(left),控制台输出(right)如下:重点关注响应页面的地址栏地址,由于访问次序为three.action --->重定向--->main.jsp,所以显示main.jsp

测试4:action重定向页面

响应页面(left),控制台输出(right)如下:重点关注响应页面的地址栏地址,由于访问次序为four.action --->重定向---> three.action --->重定向--->main.jsp,所以显示main.jsp

相关推荐

微信分身(一个设备,开两个微信)
365bet娱乐游戏

微信分身(一个设备,开两个微信)

📅 06-27 👀 1402
刘小军首次详解重庆农商行改革转型:立足四大优势,构建三种新动能
365黑道老大免费观看第一季在线

刘小军首次详解重庆农商行改革转型:立足四大优势,构建三种新动能

📅 09-11 👀 310
火车上车后补票规则
bt365体育开户

火车上车后补票规则

📅 07-30 👀 1730