SpringMVC(四):转发、重定向和Flash属性
1、转发和重定向的区别 一句话概括: 重定向是客户端行为,转发是服务器行为. 1.请求次数: 重定向:重定向行为是做了两次请求,及产生了两个request对象,重定向会导致request对象信息丢失。 请求转发:转发做了一次请求, 浏览器的地址栏一直是第一次请求的地址。转发是服务器内部request/response控制权的移交。 2.请求资源地址: 重定向:web组件可以将请求重定向到任意一个url,而不仅仅是同一个应用。 重定向的源组件与目标组件不共用同一个HttpServletRequest对象,因此不能在request范围内共享数据。 请求转发:转发的源组件与目标组件必须在同一个应用中,两者可以在request范围内共享数据。 工作流程: 1.重定向 浏览器发出http请求 >> 服务器接受请求并发送302状态码和新的对应的url到浏览器 >> 浏览器接收响应并自动请求新的url >> 服务器接收请求并寻找客户所需的资源响应到浏览器 2.转发 浏览器发出http求其 >> 服务器接收请求 >> 服务器调用内部的一个方法在容器内完成请求处理和转发动作 >> 将客户所需资源发送到浏览器 2、SpringMVC重定向 例如:在处理方法中 return "redirect: xxxx"; 3、重定向传值 要使用Flash属性,必须在Spring MVC配置文件中添加<mvc