SpringMVC入门学习(六)----SpringMVC中的转发与重定向
1、转发与重定向
在SpringMVC中,如果当处理器对请求处理完毕后,在不是返回JSON数据的情况下,一般都会跳转到其它的页面,此时有两种跳转方式:请求转发与重定向。在SpringMVC中分别对应forward和redirect这两个关键字。
关键字 |
描述 |
SpringMVC实现 | 原生servlet实现 |
---|---|---|---|
forward | 表示转发 | forward:"目标页面"(例如forward:"/WEB_INF/success.jsp") | request.getRequestDispatcher("xx.jsp").forward() |
redirect | 表示重定向 | redirect:"目标页面" | redirect:"目标请求" | response.sendRedirect("xxx.jsp") |
2、SpringMVC转发指令
@RequestMapping("/forward")
public String forward() {
return "forward:/target.jsp";
}
表示方法执行完成后转发到/target.jsp
3、SpringMVC重定向指令
@RequestMapping("/redirect")
public String redirect() {
return "redirect:/target.jsp";
}
表示方法执行完成后重定向到/target.jsp。这里重定向中使用的路径和我们以前的写法不同,没有以Web应用名称开头,这是因为SpringMVC会替我们加上。
@RequestMapping("/redirect")
public String redirect() {
return "redirect:/find";
}
表示方法执行完成后重定向到/find请求。
4、使用原生对象完成转发
@RequestMapping("/forward")
public void forward2(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("/target.jsp").forward(request, response);
}
注意:使用原生request对象执行转发后,handler方法的返回值就必须是void,意思是我们自己指定了响应方式,不需要SpringMVC再进行处理了。一个请求只能有一个响应,不能在handler方法里面给一个,然后SpringMVC框架再给一个。
5、使用原生对象完成重定向
@RequestMapping("/redirect")
public void redirect2(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.sendRedirect(request.getContextPath()+"/target.jsp");
}
使用原生response对象执行重定向后,handler方法的返回值同样需要设置为void,原因同上。
作者:
唐浩荣
本文版权归作者和博客园共有,欢迎转载,但是转载需在博客的合适位置给出原文链接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!