转发和重定向
- 转发是服务器行为,重定向是客户端行为。
- 转发HTTP请求一次,地址栏不发生变化,请求域数据不会丢失
重定向HTTP请求至少两次,地址栏发生变化显示新的地址,请求域信息丢失。
例如:
转发:小明给班主任打电话询问什么时候开学,但是班主任不知道,将手机转发给了旁边的教导主任让其解答。(小明这边显示的是班主任的电话,但和他数据交流的却是教导主任,之前的信息都没有挂断)
重定向:小明给班主任打电话询问什么时候开学,但是班主任不知道,告诉他教导主任知道,小明挂断电话给教导主任拨去。(挂断之前的请求,再来一个新的请求)
第一种------请求转发页面
- 创建一个新的项目,添加配置jar包、编写配置文件、在web.xml文件注册springmvc、创建包的结构
在这里插入代码片
- 新建编写一个SpringmvcAction.java,一个main.jsp
- 在index.jsp编写第一种页面跳转方式
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<!--第一种跳转方式:请求转发页面-->
<a href="${pageContext.request.contextPath}/admin/one.action">请求转发</a><br>
</body>
</html>
- 在SpringmvcAction.java中编写控制器
package com.oracle.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller//表明此类是一个控制器
@RequestMapping("/admin")
public class SpringmvcAction {
@RequestMapping("/one")
public String one(){
//请求转发页面(默认转发方式)
System.out.println("这是请求转发页面");
return "main";
}
}
- 运行结果
- 为了简单明了将tomcat中的工程名去掉
第二种-----请求转发action
- 在index.jsp中编写新的跳转方式,在SpringmvcAction.java中编写新的控制器
<!--第二种跳转方式:请求转发action页面-->
<a href="${pageContext.request.contextPath}/admin/two.action">请求转发action</a><br>
@RequestMapping("/two")
public String two(){
//请求转发action
System.out.println("这是请求转发action");
return "forward:/fore/other.action";
}
- 创建编写一个控制器SpringMvcOther.java
package com.oracle.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("fore")
public class SpringMvcOther {
@RequestMapping("other")
public String other(){
System.out.println("经过了other.action");
return "main";
}
}
- 运行结果
第三种------重定向页面
- 在index.jsp中编写新的跳转方式,在SpringmvcAction.java中编写新的控制器
<!--第三种跳转方式:重定向页面-->
<a href="${pageContext.request.contextPath}/admin/three.action">重定向页面</a><br>
@RequestMapping("/three")
public String three(){
//重定向页面
System.out.println("这是重定向面");
return "redirect:/main.jsp";
}
- 运行结果
第四种------重定向action
1.在index.jsp中编写新的跳转方式,在SpringmvcAction.java和SpringMvcAction.java中编写新的控制器
<!--第四种跳转方式:重定向action-->
<a href="${pageContext.request.contextPath}/admin/four.action">重定向action(+转发)</a><br>
<a href="${pageContext.request.contextPath}/admin/five.action">重定向action显示main.jsp</a><br>
SpringmvcAction.java
@RequestMapping("/four")
public String four(){
//重定向页面
System.out.println("这是重定向action");
return "redirect:/fore/other.action";
}
@RequestMapping("/five")
public String five(){
//重定向页面
System.out.println("这是重定向action");
return "redirect:/fore/others.action";
}
SpringMvcAction.java
@RequestMapping("others")
public String others(){
System.out.println("经过了others.action");
return "redirect:/main.jsp";
}
- 运行结果
重定向action+转发
重定向action
来源:CSDN
作者:如画无涯
链接:https://blog.csdn.net/weixin_43288999/article/details/104668874