写的非常详细,参看该地址:https://www.zifangsky.cn/661.html

总结:

1.请求转发:url地址不变,可带参数,如?username=forward

2.请求重定向:url地址改变,在url上带参数无效。具体可以使用四种传参方式:

a.使用sesssion,b.使用RedirectAttribute类,c.使用@ModelAttribute注解,d.使用RequestContextUtils类(推荐使用后面两中)

参考:

转发:一次请求,服务器内部调用另外的组件处理,request和response可以共用,有限制性,只能转发到本应用中的某些资源,页面或者controller请求,可以访问WEB-INF目录下面的页面

重定向:两次请求,地址会改变,request和response不能共用,不能直接访问WEB-INF下面的资源,

根据所要跳转的资源,可以分为跳转到页面或者跳转到其他controller

实例代码(在springboot下测试的)如下:

 /**
* @Author Mr.Yao
* @Date 2019/5/5 10:22
* @Content SpringBootStudy
*/
@Controller
public class ForwardAndRedirectController {
@RequestMapping("/test/index")
public ModelAndView userIndex() {
System.out.println("进入userIdex了");
ModelAndView view = new ModelAndView("index");
view.addObject("name","向html页面中设值。");
return view;
} //使用forward
@RequestMapping("/testForward.html")
public ModelAndView testForward(@RequestParam("username") String username){ System.out.println("test-forward....."+username);
ModelAndView mAndView = new ModelAndView("forward:/test/index"); User user = new User();
user.setName(username);
mAndView.addObject("user", user);
return mAndView;
}
//使用servlet api
@RequestMapping(value="/test/api/{name}")
public void test(@PathVariable String name, HttpServletRequest request, HttpServletResponse response) throws Exception {
System.out.println("使用servlet api中的方法。。。"+name);
request.getRequestDispatcher("/test/index").forward(request, response);
} //使用redirect
@RequestMapping("/testRedirect.html")
public ModelAndView testRedirect(@RequestParam("username") String username){
ModelAndView mAndView = new ModelAndView("redirect:/redirect/index");
System.out.println("test-redirect....."+username);
User user = new User();
user.setName(username);
mAndView.addObject("user", user);
mAndView.addObject("name", "hello world");
return mAndView;
}
@RequestMapping("/redirect/index")
public ModelAndView indexRedirect(@ModelAttribute("user") User user, @ModelAttribute("name") String name) { System.out.println(name +"====通过重定向过来的,获取参数值:"+user.getName());
return new ModelAndView("index");
}
//使用servlet api 中重定向,responese.sendRedirect()
}

关于SpringMVC中的转发与重定向的说明的更多相关文章

  1. java web 中的转发和重定向

    假设应用程序的 contextPath 为 /ctx,在 http://localhost:8080/ctx/a/b 资源中,我们转发和重定向到 http://localhost:8080/ctx/x ...

  2. Servlet中的转发与重定向

    Sevlet 的转发与重定向都可以使得浏览器指向另一个资源文件,但它们的运行机制不相同. 一.Servlet的转发 有两种方式获得转发对象(RequestDispathcer): HttpServle ...

  3. Java Web开发中的转发和重定向的问题

    Java Web的页面实现跳转有两种方式,一种是转发,另外一种是重定向.一般来说,转发比重定向快.重定向会经过客户端,转发却不会. 转发 request.getRequestDispatcher(&q ...

  4. servlet中的转发和重定向问题

    重定向和请求转发在学习servlet的时候很容易混淆,故在此特意记录. 1. 重定向---------sendRedirect()方法 Servlet响应请求有两种方式,一个是重定向,返回一个页面给客 ...

  5. 12.SpringMVC核心技术-请求转发和重定向

    默认情况下,跳转到指定的View,使用的是请求转发.也可以显示的进行指出 此时,需在setViewName()  指定的视图前添加 forword: , 且此时的视图不会再与视图解析器中的前缀和后缀进 ...

  6. SpringMVC传值、转发、重定向例子

    练习接收页面参数值 使用request 使用@RequestParam注解 使用实体对象 练习向页面传出数据 使用HttpServletRequest和session 使用ModelAndView对象 ...

  7. javaweb中关于转发与重定向的写法

    转发: RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/main.jsp"); rd.forward(r ...

  8. SpringMVC中的重定向和转发的实现

    1.请求转发和重定向的区别 请求重定向和请求转发都是web开发中资源跳转的方式. 请求转发是服务器内部的跳转 地址栏比发生变化 只有一个请求相应 可以通过request域对跳转目标的请求 请求重定向是 ...

  9. SpringMVC转发和重定向区别!

    在servlet中,转发和重定向是由request和response完成的.两者之间的区别请看我之前的文章.那么在springMVC中是如何完成的呢? /**转发**/ @RequestMapping ...

随机推荐

  1. Archiva 不小心删掉了管理员权限怎么办

    Archiva 的界面和 UI 比较容易出问题. 在添加用户和为用户进行权限修改的时候,不小心连 admin 这个用户的权限都删掉了. 这个时候应该如何恢复 admin 这个用户的权限? 这个时候你可 ...

  2. 检查errno

    转自 http://blog.csdn.net/todd911/article/details/9132095 很多库函数,特别是那些与操作系统有关的,当执行失败时会通过一个名称为errno的外部变量 ...

  3. pymysql基本使用

    导入模块 import pymysql 连接(看一下password有没有,没有的话会怎么样,有很多参数,有些参数也是可以不传的) conn = pymysql.connect(user = &quo ...

  4. vue项目,前端导出excel

    今天研究一下前端如何导出excel,边查边实践,边记录 1.安装依赖库 xlsx:这是一个功能强大的excel处理库,但是上手难度也很大,还涉及不少二进制的东西 file-saver:ES5新增了相关 ...

  5. c++ 数组赋值

    // generate_n example #include <iostream> // cout #include <algorithm> // generate_n usi ...

  6. 解决百度文字识别SDK拍照不回调问题

    在使用百度文字识别SDK的时候,发现点了拍照后camera.takePicture(ShutterCallback shutter, PictureCallback raw,PictureCallba ...

  7. 初学Linux之标准I/O和管道

    标准输入和输出 程序是由指令+数据组成 程序的数据流有三种: 输入数据流:<–标准输入(stdin),一般默认是键盘 输出数据流:–>标准输出(stdout),一般默认到终端窗口 错误输出 ...

  8. P2308 添加括号

    P2308 添加括号 题解 一看这题---我能AC 看完这题---我要换题 这题第二问其实就是一个链的石子合并,也就是不用处理环 所以一三问怎么处理??? 数组 mid[ i ][ j ] 记录区间 ...

  9. Flask-SQLAlchemy操作

    Flask-SQLAlchemy   SQLAlchemy 一. 介绍 SQLAlchemy是一个基于Python实现的ORM框架.该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言 ...

  10. [Java复习] Spring 常见面试问题

    1. 什么是 Spring 框架?Spring 框架有哪些主要模块? 轻量级实现IoC和AOP的JavaEE框架. Core模块: bean(bean定义创建解析), context(环境, IoC容 ...