Spring MVC中如何进行转发和重定向呢?
重定向:
我们将用户的定向到另一个视图(jsp)中处理,此操作是一个客户端行为,类似与url的链接操作
转发:
将用户的请求转发到另一个视图或controller处理,此操作是一个服务器端行为,请求中的信息会一起转发至新的新的对象中,不会因为转发而造成信息丢失
注意事项:
转发是后端行为(服务器级别),重定向是一个前端行为(客户端级别)
运用Java的内部方法在容器内进行转发的请求和处理,并将转发后所生成的信息发送给浏览器
转发所产生的效果
浏览器进行一次请求操作,而返回的确是容器内其它页面的内容,客户端无任何变化 ,
转发的内容只能为容器内的信息
此处重定向的url可为任意url
例:
Spring MVC 框架中,重定向与转发
注意事项:
在Spring MVC框架中,
无论转发还是重定向,都需符合视图解析器的配置(springmvc.xml),
如直接转发到一个不需要 DispatcherServlet 的资源,如:
我们将用户的定向到另一个视图(jsp)中处理,此操作是一个客户端行为,类似与url的链接操作
转发:
将用户的请求转发到另一个视图或controller处理,此操作是一个服务器端行为,请求中的信息会一起转发至新的新的对象中,不会因为转发而造成信息丢失
注意事项:
转发是后端行为(服务器级别),重定向是一个前端行为(客户端级别)
一、转发详解
当浏览器发送 http 请求,Web 服务器收到此请求,运用Java的内部方法在容器内进行转发的请求和处理,并将转发后所生成的信息发送给浏览器
转发所产生的效果
浏览器进行一次请求操作,而返回的确是容器内其它页面的内容,客户端无任何变化 ,
转发的内容只能为容器内的信息
二、重定向过程
当浏览器发送Http请求,tomcat发送302状态码即新的url给浏览器,客户端根据302自动发送新的http请求,此时浏览器中显示的为新url此处重定向的url可为任意url
Spring MVC的说明
在Spring MVC 框架中,控制器类中处理方法的 return 语句默认情况下为一个转发(转发视图)@RequestMapping("/userlist") public String userList() { return "userList"; //转发至userList.jsp }
例:
Spring MVC 框架中,重定向与转发
package com.java265.springmvc;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/index")
public class IndexController {
@RequestMapping("/print")
public String print() {
//转发到一个请求方法(同一个控制器类可以省略/index/)
return "forward:/index/isShowInfo";
}
@RequestMapping("/isShowInfo")
public String isShowInfo() {
//重定向到一个请求方法
return "redirect:/index/printInfo";
}
@RequestMapping("/printInfo")
public String printInfo() {
//转发到一个视图
return "printInfo";
}
}
注意事项:
在Spring MVC框架中,
无论转发还是重定向,都需符合视图解析器的配置(springmvc.xml),
如直接转发到一个不需要 DispatcherServlet 的资源,如:
return "forward:/html/test.html";
则需要使用 mvc:resources 配置:<mvc:resources location="/html/" mapping="/html/**" />
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。