SpringMVC 重定向和转发

Spring MVC 请求方式 分为:转发、重定向 2种。在Servlet中 请求方式处理都是在 controller层 !!!

转发

客户浏览器发送 http 请求,在内部方法中完成请求处理和转发动作。在这里转发的路径必须是同一个 Web 容器下的 URL,其不能转向到其他的 Web 路径上,中间传递的是自己的容器内的 request

重定向

客户浏览器发送 http 请求,Web 服务器接受后发送 302 状态码响应及对应新的 URL地址 给客户浏览器,客户浏览器发现是 302 响应,则自动再发送一个新的 http 请求,请求 URL 是新的地址,服务器根据此请求寻找资源并发送给客户

重定向与转发的区别

  • 重定向 会改变地址,requset存储的数据会丢失
    转发 时地址会显示请求页面的地址,保存了页面的数据
  • 重定向 两次请求 两次响应
    转发 一次请求 一次响应

应用测试

应用前提&说明

NavigationController类 控制器

@Controller
@RequestMapping ("/navigation")
public class NavigationController {····
}

navigationTest.jsp文件响应形式

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>navigationTest</title>
</head>
<body><h1> 跳转 & 重定向 测试</h1><h2>参数测试</h2><h3>requestScope 作用域</h3><div><span>id: ${requestScope.id}</span> <br><span>name: ${requestScope.name}</span></div><h3>pageScope 作用域</h3><div><span>id: ${pageScope.id}</span> <br><span>name: ${pageScope.name}</span></div><h3>sessionScope 作用域</h3><div><span>id: ${sessionScope.id}</span> <br><span>name: ${sessionScope.name}</span></div></body>
</html>

转发

/***  String 形式转发*  应用前提:前缀 需要 forward关键字*/
@RequestMapping("forwardString")
public String forwardString(HttpServletRequest request) {request.setAttribute("id" , 1);request.setAttribute("name" , "柏竹");//return "jsp/navigationTest.jsp"return "forward:/jsp/navigationTest.jsp";
}
/***  ModelAndView 形式转发*  应用前提:前缀 需要 forward关键字*/
@RequestMapping("forwardMAV")
public ModelAndView forwardMAV(){ModelAndView mv = new ModelAndView();mv.addObject("id",2);mv.addObject("name","智乃");mv.setViewName("forward:/jsp/navigationTest.jsp");return mv;
}
/***  String 形式转发 控制器*/
@RequestMapping("forwardString2")
public String forwardString2(HttpServletRequest request) {request.setAttribute("id" , 6);request.setAttribute("name" , "纱雾");return "forward:/navigation/forwardString";
}
/***  ModelAndView 形式转发 控制器*/
@RequestMapping("forwardMAV2")
public ModelAndView forwardMAV2(){ModelAndView mv = new ModelAndView();mv.addObject("id",7);mv.addObject("name","琪露诺");mv.setViewName("forward:/navigation/forwardMAV");return mv;
}

重定向

/***  String 重定向*/
@RequestMapping("redirectString")
public String redirectString(HttpServletRequest request) {request.setAttribute("id",4);request.setAttribute("name","黑猫");return "redirect:/jsp/navigationTest.jsp";
}
/***  ModelAndView 重定向*/
@RequestMapping("redirectMAV")
public ModelAndView redirectMAV() {ModelAndView mv = new ModelAndView();mv.addObject("id",5);mv.addObject("name","蕾姆");mv.setViewName("redirect:/jsp/navigationTest.jsp");return mv;
}
//重定向 控制器/***  String 控制器重定向*/
@RequestMapping("redirectString2")
public String redirectString2(HttpServletRequest request) {request.setAttribute("id",8);request.setAttribute("name","香子兰");return "redirect:/navigation/redirectString";
}
/***  ModelAndView 控制器重定向*/
@RequestMapping("redirectMAV2")
public ModelAndView redirectMAV2() {ModelAndView mv = new ModelAndView();mv.addObject("id",9);mv.addObject("name","黑子");mv.setViewName("redirect:/navigation/redirectMAV");return mv;
}
ModelAndView mv = new ModelAndView();mv.addObject("id",9);mv.addObject("name","黑子");mv.setViewName("redirect:/navigation/redirectMAV");return mv;
}

Java学习记录 04SpringMVC 重定向和转发相关推荐

  1. java多线程阶乘_【java学习记录】11.用多线程实现阶乘的计算过程和结果的读取(thread类ReadThread )...

    (源码在上传的压缩包"[java学习记录]11.多线程实现阶乘计算(Thread类和Runnable接口)"中可看到,该压缩包可下载)java * 采用Thread类的子类实现线程 ...

  2. java学习记录十五:集合二Collections、Set、Map

    java学习记录十五:集合二 一.Collections工具类 一.解释 二.常用方法 1.打乱集合顺序 2.按照默认规则排序 3.按指定规则排序 4.批量添加元素 二.可变参数 一.解释 二.写法 ...

  3. Java学习记录五(多线程、网络编程、Lambda表达式和接口组成更新)

    Java学习记录五(多线程.网络编程.Lambda表达式和接口组成更新) Java 25.多线程 25.1实现多线程 25.1.1进程 25.1.2线程 25.1.3多线程的实现 25.1.4设置和获 ...

  4. java学习记录16-反射

    java学习记录 一.什么叫反射? 二.测试class类的创建方式有哪些 三.类加载内存分析 加载->链接->初始化 四.分析类的初始化 五.获得类的信息 六.动态的创建对象,通过反射 七 ...

  5. Java学习记录02

    Java学习记录02 在学习中,博客的书写不可缺少,相应的markdown基本语法也要掌握,下面是自己在CSDN上查找并学习的链接:Markdown语法 2.6项目实训:基于控制台设计简易打折与累加计 ...

  6. Java学习记录_1:MOOC《零基础学Java语言》课后习题解

    Hey,我是寒水,一名大二学生,电子商务专业在读,正在学习Java中.我试图将在Java学习中遇到的一些困惑和最终的解答发在这个账号上,希望以此来激励我不要放弃学习! 在学习记录这个专题中,我收藏一些 ...

  7. Java学习记录之简单的图书管理系统(完善中)

    电子书管理系统 功能划分 最核心的功能 提供图书管理的服务 添加图书 查询 检索所有的图书 按已知检索图书信息 图书的删除 图书信息的更新 用户 用户的类型 管理员:图书的添加.更新.删除操作 普通用 ...

  8. java web中的重定向和转发,forward和sendRedriect

    前台页面到后台请求,后台给予回应分为重定向和转发两种.forward和sendRedirect的区别. 1,在forward方式下,在执行前jsp对象或者servlet对象的过程中去调用目标文件对应的 ...

  9. java重定向cookie_在java中,JSP重定向,转发,Cookie,session

    //第一种情况,先增加Cookie后重定向,A2.jsp能正常获取name的值"你好" //Cookie c=new Cookie("name",URLEnco ...

最新文章

  1. Linux下*.tar.bz2等文件如何解压--转
  2. MySQL binlog和redo/undo的概念
  3. 201671010435-王潇-实验四附加实验-项目互评
  4. 今天的由于他工作很忙的局域网聊天
  5. Ubuntu16.04安装MySQL5.7
  6. [我的理解]Javascript的原型与原型链
  7. 亚信安全“双引擎”AI技术 亮相2017华为全联接大会
  8. C#照片预览,好处是图片不在项目中也可以查看
  9. 太原理工大学荣获2020(第二届)集成电路EDA设计精英挑战赛一等奖
  10. ROS机器人操作系统资料与资讯(2018年6月)
  11. 2、如何利用CommMonitor串口监控,抓取串口Modbus RTU数据包
  12. 物联网技术概论:第2章
  13. process.env详解
  14. Segment Routing MPLS学习笔记
  15. uni-app获取当前时间日期及之后7天和星期几
  16. 编译报错Building for iOS, but the linked and embedded framework ‘xxx.framework’ was buil......
  17. Unity工程里的那些东西
  18. 分享个免费的货币汇率API
  19. SAP部署SSL数字证书
  20. 工具-Eclipse怎么离线安装JD-Eclipse反编译插件

热门文章

  1. 可爱的 LXD 系统容器
  2. 硕士到博士一路走来的科研感悟
  3. C/C++问题处理:error : no matching function for call to ‘max‘
  4. AMT49702:双DMOS全桥式电动机驱动器,为低压步进电机和双/单高电流直流电机的PWM控制而设计
  5. 金秋十月,安化云台山风景区邀您来欣赏国际马戏团精彩演出
  6. 我的触摸屏制作”简史“1
  7. 从程序员到管理千人团队的CTO!
  8. 计算机应用个人标签,对口升学计算机应用——HTML基本标签练习.doc
  9. leetcode 猫和老鼠
  10. 全国计算机应用考试试卷,全国自考计算机应用基础历年试题含答案